
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

interface * add_interface(iface_list *ilist,char *name)

{
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int * __regparm3 FUN_00033d97(int *param_1,char *param_2)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  
  piVar2 = (int *)param_1[1];
  do {
    if (piVar2 == (int *)0x0) {
      piVar1 = (int *)FUN_00019b89();
      FUN_00019377();
      piVar2 = param_1;
      piVar4 = (int *)0x0;
LAB_00033dce:
      piVar1[1] = (int)piVar4;
      iVar3 = *piVar2;
      *piVar1 = iVar3;
      if (iVar3 == 0) {
        param_1[1] = (int)piVar1;
      }
      else {
        *(int **)(iVar3 + 4) = piVar1;
      }
      *piVar2 = (int)piVar1;
      return piVar1;
    }
    iVar3 = strcmp((char *)(piVar2 + 2),param_2);
    if (iVar3 == 0) {
      return piVar2;
    }
    if (iVar3 < 0) {
      piVar1 = (int *)FUN_00019b89();
      FUN_00019377();
      piVar4 = piVar2;
      goto LAB_00033dce;
    }
    piVar2 = (int *)piVar2[1];
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0xc
CALL 0x00017640
ADD EBX,0x9cc7d
MOV EDI,EAX
MOV EBP,EDX
MOV ESI,dword ptr [EAX + 0x4]
TEST ESI,ESI
JNZ 0x00033df6
MOV EAX,0x108
CALL 0x00019b89
MOV ESI,EAX
LEA EAX,[EAX + 0x8]
MOV EDX,EBP
CALL 0x00019377
MOV EAX,EDI
XOR EDX,EDX
MOV dword ptr [ESI + 0x4],EDX
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESI],EDX
TEST EDX,EDX
JZ 0x00033de8
MOV dword ptr [EDX + 0x4],ESI
MOV dword ptr [EAX],ESI
MOV EAX,ESI
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EDI + 0x4],ESI
JMP 0x00033ddc
JS 0x00033e14
MOV ESI,dword ptr [ESI + 0x4]
TEST ESI,ESI
JZ 0x00033db4
LEA EAX,[ESI + 0x8]
SUB ESP,0x8
PUSH EBP
PUSH EAX
CALL 0x00016140
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00033ded
MOV EAX,ESI
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,0x108
CALL 0x00019b89
MOV EBX,EAX
LEA EAX,[EAX + 0x8]
MOV EDX,EBP
CALL 0x00019377
MOV EAX,ESI
MOV EDX,ESI
MOV ESI,EBX
JMP 0x00033dce
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint * __regparm3 FUN_00033d97(int *param_1,char *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar2 = (int *)param_1[1];\n  do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );\n}\n\n" comment (function_definition "int * __regparm3 FUN_00033d97(int *param_1,char *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar2 = (int *)param_1[1];\n  do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00033d97(int *param_1,char *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00033d97(int *param_1,char *param_2)" identifier (parameter_list "(int *param_1,char *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar2 = (int *)param_1[1];\n  do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );" do (compound_statement "{\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  }" { (if_statement "if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }" { (expression_statement "piVar1 = (int *)FUN_00019b89();" (assignment_expression "piVar1 = (int *)FUN_00019b89()" identifier = (cast_expression "(int *)FUN_00019b89()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00019b89()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_00019377();" (call_expression "FUN_00019377()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar2 = param_1;" (assignment_expression "piVar2 = param_1" identifier = identifier) ;) (expression_statement "piVar4 = (int *)0x0;" (assignment_expression "piVar4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00033dce:\n      piVar1[1] = (int)piVar4;" statement_identifier : (expression_statement "piVar1[1] = (int)piVar4;" (assignment_expression "piVar1[1] = (int)piVar4" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "iVar3 = *piVar2;" (assignment_expression "iVar3 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar1 = iVar3;" (assignment_expression "*piVar1 = iVar3" (pointer_expression "*piVar1" * identifier) = identifier) ;) (if_statement "if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        param_1[1] = (int)piVar1;\n      }" { (expression_statement "param_1[1] = (int)piVar1;" (assignment_expression "param_1[1] = (int)piVar1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }" else (compound_statement "{\n        *(int **)(iVar3 + 4) = piVar1;\n      }" { (expression_statement "*(int **)(iVar3 + 4) = piVar1;" (assignment_expression "*(int **)(iVar3 + 4) = piVar1" (pointer_expression "*(int **)(iVar3 + 4)" * (cast_expression "(int **)(iVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*piVar2 = (int)piVar1;" (assignment_expression "*piVar2 = (int)piVar1" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return piVar1;" return identifier ;) })) (expression_statement "iVar3 = strcmp((char *)(piVar2 + 2),param_2);" (assignment_expression "iVar3 = strcmp((char *)(piVar2 + 2),param_2)" identifier = (call_expression "strcmp((char *)(piVar2 + 2),param_2)" identifier (argument_list "((char *)(piVar2 + 2),param_2)" ( (cast_expression "(char *)(piVar2 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar2 + 2)" ( (binary_expression "piVar2 + 2" identifier + number_literal) ))) , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n      return piVar2;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return piVar2;\n    }" { (return_statement "return piVar2;" return identifier ;) })) (if_statement "if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }" { (expression_statement "piVar1 = (int *)FUN_00019b89();" (assignment_expression "piVar1 = (int *)FUN_00019b89()" identifier = (cast_expression "(int *)FUN_00019b89()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00019b89()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_00019377();" (call_expression "FUN_00019377()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar4 = piVar2;" (assignment_expression "piVar4 = piVar2" identifier = identifier) ;) (goto_statement "goto LAB_00033dce;" goto statement_identifier ;) })) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" identifier = (cast_expression "(int *)piVar2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\ninterface * add_interface(iface_list *ilist,char *name)\n\n{\n}\n\n" comment (function_definition "interface * add_interface(iface_list *ilist,char *name)\n\n{\n}" type_identifier (pointer_declarator "* add_interface(iface_list *ilist,char *name)" * (function_declarator "add_interface(iface_list *ilist,char *name)" identifier (parameter_list "(iface_list *ilist,char *name)" ( (parameter_declaration "iface_list *ilist" type_identifier (pointer_declarator "*ilist" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) )))) (compound_statement "{\n}" { })))
(translation_unit "int * __regparm3 FUN_00033d97(int *param_1,char *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar2 = (int *)param_1[1];\n  do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );\n}\n\n" (function_definition "int * __regparm3 FUN_00033d97(int *param_1,char *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar2 = (int *)param_1[1];\n  do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00033d97(int *param_1,char *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00033d97(int *param_1,char *param_2)" identifier (parameter_list "(int *param_1,char *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar2 = (int *)param_1[1];\n  do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" identifier = (cast_expression "(int *)param_1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );" do (compound_statement "{\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  }" { (if_statement "if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }" { (expression_statement "piVar1 = (int *)FUN_00019b89();" (assignment_expression "piVar1 = (int *)FUN_00019b89()" identifier = (cast_expression "(int *)FUN_00019b89()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00019b89()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_00019377();" (call_expression "FUN_00019377()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar2 = param_1;" (assignment_expression "piVar2 = param_1" identifier = identifier) ;) (expression_statement "piVar4 = (int *)0x0;" (assignment_expression "piVar4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00033dce:\n      piVar1[1] = (int)piVar4;" statement_identifier : (expression_statement "piVar1[1] = (int)piVar4;" (assignment_expression "piVar1[1] = (int)piVar4" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "iVar3 = *piVar2;" (assignment_expression "iVar3 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar1 = iVar3;" (assignment_expression "*piVar1 = iVar3" (pointer_expression "*piVar1" * identifier) = identifier) ;) (if_statement "if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        param_1[1] = (int)piVar1;\n      }" { (expression_statement "param_1[1] = (int)piVar1;" (assignment_expression "param_1[1] = (int)piVar1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }" else (compound_statement "{\n        *(int **)(iVar3 + 4) = piVar1;\n      }" { (expression_statement "*(int **)(iVar3 + 4) = piVar1;" (assignment_expression "*(int **)(iVar3 + 4) = piVar1" (pointer_expression "*(int **)(iVar3 + 4)" * (cast_expression "(int **)(iVar3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*piVar2 = (int)piVar1;" (assignment_expression "*piVar2 = (int)piVar1" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return piVar1;" return identifier ;) })) (expression_statement "iVar3 = strcmp((char *)(piVar2 + 2),param_2);" (assignment_expression "iVar3 = strcmp((char *)(piVar2 + 2),param_2)" identifier = (call_expression "strcmp((char *)(piVar2 + 2),param_2)" identifier (argument_list "((char *)(piVar2 + 2),param_2)" ( (cast_expression "(char *)(piVar2 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar2 + 2)" ( (binary_expression "piVar2 + 2" identifier + number_literal) ))) , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n      return piVar2;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return piVar2;\n    }" { (return_statement "return piVar2;" return identifier ;) })) (if_statement "if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }" { (expression_statement "piVar1 = (int *)FUN_00019b89();" (assignment_expression "piVar1 = (int *)FUN_00019b89()" identifier = (cast_expression "(int *)FUN_00019b89()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00019b89()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_00019377();" (call_expression "FUN_00019377()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar4 = piVar2;" (assignment_expression "piVar4 = piVar2" identifier = identifier) ;) (goto_statement "goto LAB_00033dce;" goto statement_identifier ;) })) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" identifier = (cast_expression "(int *)piVar2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int * __regparm3 FUN_00033d97(int *param_1,char *param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar2 = (int *)param_1[1];\n  do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );\n}" (primitive_type "int") (pointer_declarator "* __regparm3 FUN_00033d97(int *param_1,char *param_2)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00033d97(int *param_1,char *param_2)" (identifier "FUN_00033d97") (parameter_list "(int *param_1,char *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar2 = (int *)param_1[1];\n  do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (expression_statement "piVar2 = (int *)param_1[1];" (assignment_expression "piVar2 = (int *)param_1[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)param_1[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (do_statement "do {\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  } while( true );" (do "do") (compound_statement "{\n    if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }\n    iVar3 = strcmp((char *)(piVar2 + 2),param_2);\n    if (iVar3 == 0) {\n      return piVar2;\n    }\n    if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }\n    piVar2 = (int *)piVar2[1];\n  }" ({ "{") (if_statement "if (piVar2 == (int *)0x0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }" (if "if") (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar2 = param_1;\n      piVar4 = (int *)0x0;\nLAB_00033dce:\n      piVar1[1] = (int)piVar4;\n      iVar3 = *piVar2;\n      *piVar1 = iVar3;\n      if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }\n      *piVar2 = (int)piVar1;\n      return piVar1;\n    }" ({ "{") (expression_statement "piVar1 = (int *)FUN_00019b89();" (assignment_expression "piVar1 = (int *)FUN_00019b89()" (identifier "piVar1") (= "=") (cast_expression "(int *)FUN_00019b89()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00019b89()" (identifier "FUN_00019b89") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_00019377();" (call_expression "FUN_00019377()" (identifier "FUN_00019377") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar2 = param_1;" (assignment_expression "piVar2 = param_1" (identifier "piVar2") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar4 = (int *)0x0;" (assignment_expression "piVar4 = (int *)0x0" (identifier "piVar4") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_00033dce:\n      piVar1[1] = (int)piVar4;" (statement_identifier "LAB_00033dce") (: ":") (expression_statement "piVar1[1] = (int)piVar4;" (assignment_expression "piVar1[1] = (int)piVar4" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";"))) (expression_statement "iVar3 = *piVar2;" (assignment_expression "iVar3 = *piVar2" (identifier "iVar3") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*piVar1 = iVar3;" (assignment_expression "*piVar1 = iVar3" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar3 == 0) {\n        param_1[1] = (int)piVar1;\n      }\n      else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_1[1] = (int)piVar1;\n      }" ({ "{") (expression_statement "param_1[1] = (int)piVar1;" (assignment_expression "param_1[1] = (int)piVar1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1"))) (; ";")) (} "}")) (else_clause "else {\n        *(int **)(iVar3 + 4) = piVar1;\n      }" (else "else") (compound_statement "{\n        *(int **)(iVar3 + 4) = piVar1;\n      }" ({ "{") (expression_statement "*(int **)(iVar3 + 4) = piVar1;" (assignment_expression "*(int **)(iVar3 + 4) = piVar1" (pointer_expression "*(int **)(iVar3 + 4)" (* "*") (cast_expression "(int **)(iVar3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (} "}")))) (expression_statement "*piVar2 = (int)piVar1;" (assignment_expression "*piVar2 = (int)piVar1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1"))) (; ";")) (return_statement "return piVar1;" (return "return") (identifier "piVar1") (; ";")) (} "}"))) (expression_statement "iVar3 = strcmp((char *)(piVar2 + 2),param_2);" (assignment_expression "iVar3 = strcmp((char *)(piVar2 + 2),param_2)" (identifier "iVar3") (= "=") (call_expression "strcmp((char *)(piVar2 + 2),param_2)" (identifier "strcmp") (argument_list "((char *)(piVar2 + 2),param_2)" (( "(") (cast_expression "(char *)(piVar2 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar2 + 2)" (( "(") (binary_expression "piVar2 + 2" (identifier "piVar2") (+ "+") (number_literal "2")) () ")"))) (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      return piVar2;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return piVar2;\n    }" ({ "{") (return_statement "return piVar2;" (return "return") (identifier "piVar2") (; ";")) (} "}"))) (if_statement "if (iVar3 < 0) {\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      piVar1 = (int *)FUN_00019b89();\n      FUN_00019377();\n      piVar4 = piVar2;\n      goto LAB_00033dce;\n    }" ({ "{") (expression_statement "piVar1 = (int *)FUN_00019b89();" (assignment_expression "piVar1 = (int *)FUN_00019b89()" (identifier "piVar1") (= "=") (cast_expression "(int *)FUN_00019b89()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00019b89()" (identifier "FUN_00019b89") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_00019377();" (call_expression "FUN_00019377()" (identifier "FUN_00019377") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar4 = piVar2;" (assignment_expression "piVar4 = piVar2" (identifier "piVar4") (= "=") (identifier "piVar2")) (; ";")) (goto_statement "goto LAB_00033dce;" (goto "goto") (statement_identifier "LAB_00033dce") (; ";")) (} "}"))) (expression_statement "piVar2 = (int *)piVar2[1];" (assignment_expression "piVar2 = (int *)piVar2[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)piVar2[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

type_1 * function_1(type_2 *ilist,char *name)

{
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) condition: (parenthesized_expression (true))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int * __regparm3 MASKED(int *param_1,char *param_2)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  
  piVar2 = (int *)param_1[1];
  do {
    if (piVar2 == (int *)0x0) {
      piVar1 = (int *)FUN_00019b89();
      FUN_00019377();
      piVar2 = param_1;
      piVar4 = (int *)0x0;
LAB_00033dce:
      piVar1[1] = (int)piVar4;
      iVar3 = *piVar2;
      *piVar1 = iVar3;
      if (iVar3 == 0) {
        param_1[1] = (int)piVar1;
      }
      else {
        *(int **)(iVar3 + 4) = piVar1;
      }
      *piVar2 = (int)piVar1;
      return piVar1;
    }
    iVar3 = strcmp((char *)(piVar2 + 2),param_2);
    if (iVar3 == 0) {
      return piVar2;
    }
    if (iVar3 < 0) {
      piVar1 = (int *)FUN_00019b89();
      FUN_00019377();
      piVar4 = piVar2;
      goto LAB_00033dce;
    }
    piVar2 = (int *)piVar2[1];
  } while( true );
}

