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

bfd_boolean stab_function_type(void *p,int argcount,bfd_boolean varargs)

{
  char *pcVar1;
  size_t sVar2;
  char *__s;
  bfd_boolean bVar3;
  int iVar4;
  
  iVar4 = 0;
  if (0 < argcount) {
    do {
      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {
        iVar4 = iVar4 + 1;
        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));
        free(pcVar1);
        if (argcount == iVar4) goto LAB_0002b067;
      }
      pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));
      sVar2 = strlen(pcVar1);
      __s = (char *)xmalloc(sVar2 + 3);
      sprintf(__s,":t%s",pcVar1);
      free(pcVar1);
      bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);
      if (bVar3 == 0) {
        return 0;
      }
      iVar4 = iVar4 + 1;
      free(__s);
    } while (argcount != iVar4);
  }
LAB_0002b067:
  bVar3 = stab_modify_type((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),
                           (size_t *)((int)p + 0xd0));
  return bVar3;
}



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

undefined4 FUN_0002af90(int param_1,int param_2)

{
  void *__ptr;
  char *__s;
  size_t sVar1;
  char *__s_00;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  iVar4 = 0;
  if (0 < param_2) {
    do {
      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {
        iVar4 = iVar4 + 1;
        __ptr = (void *)FUN_00029a00();
        free(__ptr);
        if (param_2 == iVar4) goto LAB_0002b067;
      }
      __s = (char *)FUN_00029a00();
      sVar1 = strlen(__s);
      __s_00 = (char *)xmalloc(sVar1 + 3);
      sprintf(__s_00,":t%s",__s);
      free(__s);
      iVar2 = FUN_00029160(0,0,__s_00);
      if (iVar2 == 0) {
        return 0;
      }
      iVar4 = iVar4 + 1;
      free(__s_00);
    } while (param_2 != iVar4);
  }
LAB_0002b067:
  uVar3 = FUN_0002acd0();
  return uVar3;
}


PUSH EBP
PUSH EDI
PUSH ESI
XOR ESI,ESI
PUSH EBX
CALL 0x000166c0
ADD EBX,0x15065
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x34]
LEA EDX,[EBP + 0x38]
MOV dword ptr [ESP + 0x8],EAX
LEA ECX,[EBX + 0xffff4ea4]
MOV dword ptr [ESP + 0x4],EDX
MOV dword ptr [ESP + 0xc],ECX
TEST EAX,EAX
JG 0x0002afee
JMP 0x0002b067
MOV EAX,dword ptr [ESP + 0x4]
ADD ESI,0x1
CALL 0x00029a00
SUB ESP,0xc
PUSH EAX
CALL 0x00013948
ADD ESP,0x10
CMP dword ptr [ESP + 0x8],ESI
JZ 0x0002b067
MOV EAX,dword ptr [EBP + 0x38]
MOV EAX,dword ptr [EAX + 0x10]
TEST EAX,EAX
JZ 0x0002afd0
MOV EAX,dword ptr [ESP + 0x4]
CALL 0x00029a00
SUB ESP,0xc
PUSH EAX
MOV EDI,EAX
CALL 0x000134e0
ADD EAX,0x3
MOV dword ptr [ESP],EAX
CALL 0x000132e0
ADD ESP,0xc
PUSH EDI
PUSH dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0xc],EAX
PUSH EAX
CALL 0x000137a0
MOV dword ptr [ESP],EDI
CALL 0x00013948
ADD ESP,0xc
MOV EDI,dword ptr [ESP + 0x4]
XOR ECX,ECX
MOV EDX,0x80
MOV EAX,EBP
PUSH EDI
PUSH 0x0
PUSH 0x0
CALL 0x00029160
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002b090
SUB ESP,0xc
ADD ESI,0x1
PUSH EDI
CALL 0x00013948
ADD ESP,0x10
CMP dword ptr [ESP + 0x8],ESI
JNZ 0x0002afee
LEA EAX,[EBP + 0xd0]
XOR ECX,ECX
MOV EDX,0x66
MOV dword ptr [ESP + 0x34],EAX
LEA EAX,[EBP + 0xcc]
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x0002acd0
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_0002af90(int param_1,int param_2)\n\n{\n  void *__ptr;\n  char *__s;\n  size_t sVar1;\n  char *__s_00;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }\nLAB_0002b067:\n  uVar3 = FUN_0002acd0();\n  return uVar3;\n}\n\n" comment (function_definition "undefined4 FUN_0002af90(int param_1,int param_2)\n\n{\n  void *__ptr;\n  char *__s;\n  size_t sVar1;\n  char *__s_00;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }\nLAB_0002b067:\n  uVar3 = FUN_0002acd0();\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0002af90(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  void *__ptr;\n  char *__s;\n  size_t sVar1;\n  char *__s_00;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }\nLAB_0002b067:\n  uVar3 = FUN_0002acd0();\n  return uVar3;\n}" { (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }" { (do_statement "do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);" do (compound_statement "{\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    }" { (while_statement "while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }" while (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x38) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x38) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x38) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x38) + 0x10" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "__ptr = (void *)FUN_00029a00();" (assignment_expression "__ptr = (void *)FUN_00029a00()" identifier = (cast_expression "(void *)FUN_00029a00()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00029a00()" identifier (argument_list "()" ( ))))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (if_statement "if (param_2 == iVar4) goto LAB_0002b067;" if (parenthesized_expression "(param_2 == iVar4)" ( (binary_expression "param_2 == iVar4" identifier == identifier) )) (goto_statement "goto LAB_0002b067;" goto statement_identifier ;)) })) (expression_statement "__s = (char *)FUN_00029a00();" (assignment_expression "__s = (char *)FUN_00029a00()" identifier = (cast_expression "(char *)FUN_00029a00()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00029a00()" identifier (argument_list "()" ( ))))) ;) (expression_statement "sVar1 = strlen(__s);" (assignment_expression "sVar1 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__s_00 = (char *)xmalloc(sVar1 + 3);" (assignment_expression "__s_00 = (char *)xmalloc(sVar1 + 3)" identifier = (cast_expression "(char *)xmalloc(sVar1 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar1 + 3)" identifier (argument_list "(sVar1 + 3)" ( (binary_expression "sVar1 + 3" identifier + number_literal) ))))) ;) (expression_statement "sprintf(__s_00,":t%s",__s);" (call_expression "sprintf(__s_00,":t%s",__s)" identifier (argument_list "(__s_00,":t%s",__s)" ( identifier , (string_literal "":t%s"" " string_content ") , identifier ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "iVar2 = FUN_00029160(0,0,__s_00);" (assignment_expression "iVar2 = FUN_00029160(0,0,__s_00)" identifier = (call_expression "FUN_00029160(0,0,__s_00)" identifier (argument_list "(0,0,__s_00)" ( number_literal , number_literal , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "free(__s_00);" (call_expression "free(__s_00)" identifier (argument_list "(__s_00)" ( identifier ))) ;) }) while (parenthesized_expression "(param_2 != iVar4)" ( (binary_expression "param_2 != iVar4" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002b067:\n  uVar3 = FUN_0002acd0();" statement_identifier : (expression_statement "uVar3 = FUN_0002acd0();" (assignment_expression "uVar3 = FUN_0002acd0()" identifier = (call_expression "FUN_0002acd0()" identifier (argument_list "()" ( )))) ;)) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbfd_boolean stab_function_type(void *p,int argcount,bfd_boolean varargs)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  char *__s;\n  bfd_boolean bVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < argcount) {\n    do {\n      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }\n      pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n      sVar2 = strlen(pcVar1);\n      __s = (char *)xmalloc(sVar2 + 3);\n      sprintf(__s,":t%s",pcVar1);\n      free(pcVar1);\n      bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);\n      if (bVar3 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s);\n    } while (argcount != iVar4);\n  }\nLAB_0002b067:\n  bVar3 = stab_modify_type((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),\n                           (size_t *)((int)p + 0xd0));\n  return bVar3;\n}\n\n" comment (function_definition "bfd_boolean stab_function_type(void *p,int argcount,bfd_boolean varargs)\n\n{\n  char *pcVar1;\n  size_t sVar2;\n  char *__s;\n  bfd_boolean bVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < argcount) {\n    do {\n      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }\n      pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n      sVar2 = strlen(pcVar1);\n      __s = (char *)xmalloc(sVar2 + 3);\n      sprintf(__s,":t%s",pcVar1);\n      free(pcVar1);\n      bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);\n      if (bVar3 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s);\n    } while (argcount != iVar4);\n  }\nLAB_0002b067:\n  bVar3 = stab_modify_type((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),\n                           (size_t *)((int)p + 0xd0));\n  return bVar3;\n}" type_identifier (function_declarator "stab_function_type(void *p,int argcount,bfd_boolean varargs)" identifier (parameter_list "(void *p,int argcount,bfd_boolean varargs)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "int argcount" primitive_type identifier) , (parameter_declaration "bfd_boolean varargs" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  size_t sVar2;\n  char *__s;\n  bfd_boolean bVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < argcount) {\n    do {\n      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }\n      pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n      sVar2 = strlen(pcVar1);\n      __s = (char *)xmalloc(sVar2 + 3);\n      sprintf(__s,":t%s",pcVar1);\n      free(pcVar1);\n      bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);\n      if (bVar3 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s);\n    } while (argcount != iVar4);\n  }\nLAB_0002b067:\n  bVar3 = stab_modify_type((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),\n                           (size_t *)((int)p + 0xd0));\n  return bVar3;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "bfd_boolean bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (0 < argcount) {\n    do {\n      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }\n      pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n      sVar2 = strlen(pcVar1);\n      __s = (char *)xmalloc(sVar2 + 3);\n      sprintf(__s,":t%s",pcVar1);\n      free(pcVar1);\n      bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);\n      if (bVar3 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s);\n    } while (argcount != iVar4);\n  }" if (parenthesized_expression "(0 < argcount)" ( (binary_expression "0 < argcount" number_literal < identifier) )) (compound_statement "{\n    do {\n      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }\n      pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n      sVar2 = strlen(pcVar1);\n      __s = (char *)xmalloc(sVar2 + 3);\n      sprintf(__s,":t%s",pcVar1);\n      free(pcVar1);\n      bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);\n      if (bVar3 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s);\n    } while (argcount != iVar4);\n  }" { (do_statement "do {\n      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }\n      pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n      sVar2 = strlen(pcVar1);\n      __s = (char *)xmalloc(sVar2 + 3);\n      sprintf(__s,":t%s",pcVar1);\n      free(pcVar1);\n      bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);\n      if (bVar3 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s);\n    } while (argcount != iVar4);" do (compound_statement "{\n      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }\n      pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n      sVar2 = strlen(pcVar1);\n      __s = (char *)xmalloc(sVar2 + 3);\n      sprintf(__s,":t%s",pcVar1);\n      free(pcVar1);\n      bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);\n      if (bVar3 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s);\n    }" { (while_statement "while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }" while (parenthesized_expression "(*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0)" ( (binary_expression "*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0" (pointer_expression "*(int *)(*(int *)((int)p + 0x38) + 0x10)" * (cast_expression "(int *)(*(int *)((int)p + 0x38) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)p + 0x38) + 0x10)" ( (binary_expression "*(int *)((int)p + 0x38) + 0x10" (pointer_expression "*(int *)((int)p + 0x38)" * (cast_expression "(int *)((int)p + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0x38)" ( (binary_expression "(int)p + 0x38" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar4 = iVar4 + 1;\n        pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n        free(pcVar1);\n        if (argcount == iVar4) goto LAB_0002b067;\n      }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));" (assignment_expression "pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38))" identifier = (call_expression "stab_pop_type((stab_write_handle *)((int)p + 0x38))" identifier (argument_list "((stab_write_handle *)((int)p + 0x38))" ( (cast_expression "(stab_write_handle *)((int)p + 0x38)" ( (type_descriptor "stab_write_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0x38)" ( (binary_expression "(int)p + 0x38" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )))) ;) (expression_statement "free(pcVar1);" (call_expression "free(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier ))) ;) (if_statement "if (argcount == iVar4) goto LAB_0002b067;" if (parenthesized_expression "(argcount == iVar4)" ( (binary_expression "argcount == iVar4" identifier == identifier) )) (goto_statement "goto LAB_0002b067;" goto statement_identifier ;)) })) (expression_statement "pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38));" (assignment_expression "pcVar1 = stab_pop_type((stab_write_handle *)((int)p + 0x38))" identifier = (call_expression "stab_pop_type((stab_write_handle *)((int)p + 0x38))" identifier (argument_list "((stab_write_handle *)((int)p + 0x38))" ( (cast_expression "(stab_write_handle *)((int)p + 0x38)" ( (type_descriptor "stab_write_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0x38)" ( (binary_expression "(int)p + 0x38" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )))) ;) (expression_statement "sVar2 = strlen(pcVar1);" (assignment_expression "sVar2 = strlen(pcVar1)" identifier = (call_expression "strlen(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier )))) ;) (expression_statement "__s = (char *)xmalloc(sVar2 + 3);" (assignment_expression "__s = (char *)xmalloc(sVar2 + 3)" identifier = (cast_expression "(char *)xmalloc(sVar2 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar2 + 3)" identifier (argument_list "(sVar2 + 3)" ( (binary_expression "sVar2 + 3" identifier + number_literal) ))))) ;) (expression_statement "sprintf(__s,":t%s",pcVar1);" (call_expression "sprintf(__s,":t%s",pcVar1)" identifier (argument_list "(__s,":t%s",pcVar1)" ( identifier , (string_literal "":t%s"" " string_content ") , identifier ))) ;) (expression_statement "free(pcVar1);" (call_expression "free(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier ))) ;) (expression_statement "bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s);" (assignment_expression "bVar3 = stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s)" identifier = (call_expression "stab_write_symbol((stab_write_handle *)p,0x80,0,0,__s)" identifier (argument_list "((stab_write_handle *)p,0x80,0,0,__s)" ( (cast_expression "(stab_write_handle *)p" ( (type_descriptor "stab_write_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , number_literal , identifier )))) ;) (if_statement "if (bVar3 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) }) while (parenthesized_expression "(argcount != iVar4)" ( (binary_expression "argcount != iVar4" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002b067:\n  bVar3 = stab_modify_type((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),\n                           (size_t *)((int)p + 0xd0));" statement_identifier : (expression_statement "bVar3 = stab_modify_type((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),\n                           (size_t *)((int)p + 0xd0));" (assignment_expression "bVar3 = stab_modify_type((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),\n                           (size_t *)((int)p + 0xd0))" identifier = (call_expression "stab_modify_type((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),\n                           (size_t *)((int)p + 0xd0))" identifier (argument_list "((stab_write_handle *)p,0x66,0,(long **)((int)p + 0xcc),\n                           (size_t *)((int)p + 0xd0))" ( (cast_expression "(stab_write_handle *)p" ( (type_descriptor "stab_write_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , (cast_expression "(long **)((int)p + 0xcc)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)p + 0xcc)" ( (binary_expression "(int)p + 0xcc" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (cast_expression "(size_t *)((int)p + 0xd0)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0xd0)" ( (binary_expression "(int)p + 0xd0" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )))) ;)) (return_statement "return bVar3;" return identifier ;) })))
(translation_unit "undefined4 FUN_0002af90(int param_1,int param_2)\n\n{\n  void *__ptr;\n  char *__s;\n  size_t sVar1;\n  char *__s_00;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }\nLAB_0002b067:\n  uVar3 = FUN_0002acd0();\n  return uVar3;\n}\n\n" (function_definition "undefined4 FUN_0002af90(int param_1,int param_2)\n\n{\n  void *__ptr;\n  char *__s;\n  size_t sVar1;\n  char *__s_00;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }\nLAB_0002b067:\n  uVar3 = FUN_0002acd0();\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0002af90(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  void *__ptr;\n  char *__s;\n  size_t sVar1;\n  char *__s_00;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }\nLAB_0002b067:\n  uVar3 = FUN_0002acd0();\n  return uVar3;\n}" { (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }" { (do_statement "do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);" do (compound_statement "{\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    }" { (while_statement "while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }" while (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x38) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x38) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x38) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x38) + 0x10" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "__ptr = (void *)FUN_00029a00();" (assignment_expression "__ptr = (void *)FUN_00029a00()" identifier = (cast_expression "(void *)FUN_00029a00()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00029a00()" identifier (argument_list "()" ( ))))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (if_statement "if (param_2 == iVar4) goto LAB_0002b067;" if (parenthesized_expression "(param_2 == iVar4)" ( (binary_expression "param_2 == iVar4" identifier == identifier) )) (goto_statement "goto LAB_0002b067;" goto statement_identifier ;)) })) (expression_statement "__s = (char *)FUN_00029a00();" (assignment_expression "__s = (char *)FUN_00029a00()" identifier = (cast_expression "(char *)FUN_00029a00()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00029a00()" identifier (argument_list "()" ( ))))) ;) (expression_statement "sVar1 = strlen(__s);" (assignment_expression "sVar1 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__s_00 = (char *)xmalloc(sVar1 + 3);" (assignment_expression "__s_00 = (char *)xmalloc(sVar1 + 3)" identifier = (cast_expression "(char *)xmalloc(sVar1 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar1 + 3)" identifier (argument_list "(sVar1 + 3)" ( (binary_expression "sVar1 + 3" identifier + number_literal) ))))) ;) (expression_statement "sprintf(__s_00,":t%s",__s);" (call_expression "sprintf(__s_00,":t%s",__s)" identifier (argument_list "(__s_00,":t%s",__s)" ( identifier , (string_literal "":t%s"" " string_content ") , identifier ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "iVar2 = FUN_00029160(0,0,__s_00);" (assignment_expression "iVar2 = FUN_00029160(0,0,__s_00)" identifier = (call_expression "FUN_00029160(0,0,__s_00)" identifier (argument_list "(0,0,__s_00)" ( number_literal , number_literal , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "free(__s_00);" (call_expression "free(__s_00)" identifier (argument_list "(__s_00)" ( identifier ))) ;) }) while (parenthesized_expression "(param_2 != iVar4)" ( (binary_expression "param_2 != iVar4" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002b067:\n  uVar3 = FUN_0002acd0();" statement_identifier : (expression_statement "uVar3 = FUN_0002acd0();" (assignment_expression "uVar3 = FUN_0002acd0()" identifier = (call_expression "FUN_0002acd0()" identifier (argument_list "()" ( )))) ;)) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_0002af90(int param_1,int param_2)\n\n{\n  void *__ptr;\n  char *__s;\n  size_t sVar1;\n  char *__s_00;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }\nLAB_0002b067:\n  uVar3 = FUN_0002acd0();\n  return uVar3;\n}" (type_identifier "undefined4") (function_declarator "FUN_0002af90(int param_1,int param_2)" (identifier "FUN_0002af90") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  void *__ptr;\n  char *__s;\n  size_t sVar1;\n  char *__s_00;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  \n  iVar4 = 0;\n  if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }\nLAB_0002b067:\n  uVar3 = FUN_0002acd0();\n  return uVar3;\n}" ({ "{") (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "char *__s_00;" (primitive_type "char") (pointer_declarator "*__s_00" (* "*") (identifier "__s_00")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_2) {\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }" (if "if") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);\n  }" ({ "{") (do_statement "do {\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    } while (param_2 != iVar4);" (do "do") (compound_statement "{\n      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }\n      __s = (char *)FUN_00029a00();\n      sVar1 = strlen(__s);\n      __s_00 = (char *)xmalloc(sVar1 + 3);\n      sprintf(__s_00,":t%s",__s);\n      free(__s);\n      iVar2 = FUN_00029160(0,0,__s_00);\n      if (iVar2 == 0) {\n        return 0;\n      }\n      iVar4 = iVar4 + 1;\n      free(__s_00);\n    }" ({ "{") (while_statement "while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }" (while "while") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x38) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x38) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x38) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x38) + 0x10" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar4 = iVar4 + 1;\n        __ptr = (void *)FUN_00029a00();\n        free(__ptr);\n        if (param_2 == iVar4) goto LAB_0002b067;\n      }" ({ "{") (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__ptr = (void *)FUN_00029a00();" (assignment_expression "__ptr = (void *)FUN_00029a00()" (identifier "__ptr") (= "=") (cast_expression "(void *)FUN_00029a00()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00029a00()" (identifier "FUN_00029a00") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (if_statement "if (param_2 == iVar4) goto LAB_0002b067;" (if "if") (parenthesized_expression "(param_2 == iVar4)" (( "(") (binary_expression "param_2 == iVar4" (identifier "param_2") (== "==") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_0002b067;" (goto "goto") (statement_identifier "LAB_0002b067") (; ";"))) (} "}"))) (expression_statement "__s = (char *)FUN_00029a00();" (assignment_expression "__s = (char *)FUN_00029a00()" (identifier "__s") (= "=") (cast_expression "(char *)FUN_00029a00()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00029a00()" (identifier "FUN_00029a00") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "sVar1 = strlen(__s);" (assignment_expression "sVar1 = strlen(__s)" (identifier "sVar1") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "__s_00 = (char *)xmalloc(sVar1 + 3);" (assignment_expression "__s_00 = (char *)xmalloc(sVar1 + 3)" (identifier "__s_00") (= "=") (cast_expression "(char *)xmalloc(sVar1 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar1 + 3)" (identifier "xmalloc") (argument_list "(sVar1 + 3)" (( "(") (binary_expression "sVar1 + 3" (identifier "sVar1") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "sprintf(__s_00,":t%s",__s);" (call_expression "sprintf(__s_00,":t%s",__s)" (identifier "sprintf") (argument_list "(__s_00,":t%s",__s)" (( "(") (identifier "__s_00") (, ",") (string_literal "":t%s"" (" """) (string_content ":t%s") (" """)) (, ",") (identifier "__s") () ")"))) (; ";")) (expression_statement "free(__s);" (call_expression "free(__s)" (identifier "free") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (expression_statement "iVar2 = FUN_00029160(0,0,__s_00);" (assignment_expression "iVar2 = FUN_00029160(0,0,__s_00)" (identifier "iVar2") (= "=") (call_expression "FUN_00029160(0,0,__s_00)" (identifier "FUN_00029160") (argument_list "(0,0,__s_00)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "__s_00") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "free(__s_00);" (call_expression "free(__s_00)" (identifier "free") (argument_list "(__s_00)" (( "(") (identifier "__s_00") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != iVar4)" (( "(") (binary_expression "param_2 != iVar4" (identifier "param_2") (!= "!=") (identifier "iVar4")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0002b067:\n  uVar3 = FUN_0002acd0();" (statement_identifier "LAB_0002b067") (: ":") (expression_statement "uVar3 = FUN_0002acd0();" (assignment_expression "uVar3 = FUN_0002acd0()" (identifier "uVar3") (= "=") (call_expression "FUN_0002acd0()" (identifier "FUN_0002acd0") (argument_list "()" (( "(") () ")")))) (; ";"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

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

type_1 function_1(void *p,int var_1,type_1 varargs)

{
  char *pcVar1;
  size_t var_7;
  char *__s;
  type_1 var_10;
  int var_2;
  
  var_2 = 0;
  if (0 < var_1) {
    do {
      while (*(int *)(*(int *)((int)p + 0x38) + 0x10) == 0) {
        var_2 = var_2 + 1;
        pcVar1 = var_3((type_2 *)((int)p + 0x38));
        var_4(pcVar1);
        if (var_1 == var_2) goto LAB_0002b067;
      }
      pcVar1 = var_3((type_2 *)((int)p + 0x38));
      var_7 = var_5(pcVar1);
      __s = (char *)var_6(var_7 + 3);
      var_8(__s,":t%s",pcVar1);
      var_4(pcVar1);
      var_10 = var_9((type_2 *)p,0x80,0,0,__s);
      if (var_10 == 0) {
        return 0;
      }
      var_2 = var_2 + 1;
      var_4(__s);
    } while (var_1 != var_2);
  }
LAB_0002b067:
  var_10 = var_11((type_2 *)p,0x66,0,(long **)((int)p + 0xcc),
                           (size_t *)((int)p + 0xd0));
  return var_10;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) 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))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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 (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (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: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (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 (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) (return_statement (identifier)))))

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

undefined4 MASKED(int param_1,int param_2)

{
  void *__ptr;
  char *__s;
  size_t sVar1;
  char *__s_00;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  iVar4 = 0;
  if (0 < param_2) {
    do {
      while (*(int *)(*(int *)(param_1 + 0x38) + 0x10) == 0) {
        iVar4 = iVar4 + 1;
        __ptr = (void *)FUN_00029a00();
        free(__ptr);
        if (param_2 == iVar4) goto LAB_0002b067;
      }
      __s = (char *)FUN_00029a00();
      sVar1 = strlen(__s);
      __s_00 = (char *)xmalloc(sVar1 + 3);
      sprintf(__s_00,":t%s",__s);
      free(__s);
      iVar2 = FUN_00029160(0,0,__s_00);
      if (iVar2 == 0) {
        return 0;
      }
      iVar4 = iVar4 + 1;
      free(__s_00);
    } while (param_2 != iVar4);
  }
LAB_0002b067:
  uVar3 = FUN_0002acd0();
  return uVar3;
}

