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

bfd_boolean stab_start_function(void *p,char *name,bfd_boolean globalp)

{
  char *__s;
  size_t sVar1;
  size_t sVar2;
  char *__s_00;
  bfd_boolean bVar3;
  
  if ((*(int *)((int)p + 0x110) == 0) && (*(int *)((int)p + 0x104) == -1)) {
    __s = stab_pop_type((stab_write_handle *)((int)p + 0x38));
    sVar1 = strlen(name);
    sVar2 = strlen(__s);
    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);
    sprintf(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s);
    *(undefined4 *)((int)p + 0x104) = *(undefined4 *)((int)p + 8);
    bVar3 = stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00);
    if (bVar3 != 0) {
      free(__s_00);
      bVar3 = 1;
    }
    return bVar3;
  }
                    /* WARNING: Subroutine does not return */
  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,
                "stab_start_function");
}



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

int FUN_0002a2a0(int param_1,char *param_2,int param_3)

{
  char *__s;
  size_t sVar1;
  size_t sVar2;
  char *__s_00;
  int iVar3;
  
  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {
    __s = (char *)FUN_00029a00();
    sVar1 = strlen(param_2);
    sVar2 = strlen(__s);
    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);
    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);
    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);
    iVar3 = FUN_00029160(0,0,__s_00);
    if (iVar3 != 0) {
      free(__s_00);
      iVar3 = 1;
    }
    return iVar3;
  }
                    /* WARNING: Subroutine does not return */
  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,
                "stab_start_function");
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000166c0
ADD EBX,0x15d57
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESI + 0x110]
TEST EAX,EAX
JNZ 0x0002a360
CMP dword ptr [ESI + 0x104],-0x1
JNZ 0x0002a360
LEA EAX,[ESI + 0x38]
CALL 0x00029a00
SUB ESP,0xc
PUSH dword ptr [ESP + 0x30]
MOV EBP,EAX
CALL 0x000134e0
MOV dword ptr [ESP],EBP
MOV EDI,EAX
CALL 0x000134e0
LEA EAX,[EDI + EAX*0x1 + 0x3]
MOV dword ptr [ESP],EAX
CALL 0x000132e0
CMP dword ptr [ESP + 0x38],0x1
MOV dword ptr [ESP],EBP
MOV EDI,EAX
SBB EAX,EAX
AND EAX,0x20
ADD EAX,0x46
PUSH EAX
LEA EAX,[EBX + 0xffff4e7e]
PUSH dword ptr [ESP + 0x38]
PUSH EAX
PUSH EDI
CALL 0x000137a0
MOV EAX,dword ptr [ESI + 0x8]
ADD ESP,0x1c
XOR ECX,ECX
MOV EDX,0x24
MOV dword ptr [ESI + 0x104],EAX
MOV EAX,ESI
PUSH EDI
PUSH 0x0
PUSH 0x0
CALL 0x00029160
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002a358
SUB ESP,0xc
PUSH EDI
CALL 0x00013948
ADD ESP,0x10
MOV EAX,0x1
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0xffff5264]
PUSH EAX
LEA EAX,[EBX + 0xffff4dac]
PUSH 0x828
PUSH EAX
LEA EAX,[EBX + 0xffff5084]
PUSH EAX
CALL 0x00013920
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_0002a2a0(int param_1,char *param_2,int param_3)\n\n{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  int iVar3;\n  \n  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}\n\n" comment (function_definition "int FUN_0002a2a0(int param_1,char *param_2,int param_3)\n\n{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  int iVar3;\n  \n  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}" primitive_type (function_declarator "FUN_0002a2a0(int param_1,char *param_2,int param_3)" identifier (parameter_list "(int param_1,char *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  int iVar3;\n  \n  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (if_statement "if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1))" ( (binary_expression "(*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)" (parenthesized_expression "(*(int *)(param_1 + 0x110) == 0)" ( (binary_expression "*(int *)(param_1 + 0x110) == 0" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 0x104) == -1)" ( (binary_expression "*(int *)(param_1 + 0x104) == -1" (pointer_expression "*(int *)(param_1 + 0x104)" * (cast_expression "(int *)(param_1 + 0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }" { (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(param_2);" (assignment_expression "sVar1 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);" (assignment_expression "__s_00 = (char *)xmalloc(sVar1 + 3 + sVar2)" identifier = (cast_expression "(char *)xmalloc(sVar1 + 3 + sVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar1 + 3 + sVar2)" identifier (argument_list "(sVar1 + 3 + sVar2)" ( (binary_expression "sVar1 + 3 + sVar2" (binary_expression "sVar1 + 3" identifier + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);" (call_expression "sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s)" identifier (argument_list "(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s)" ( identifier , (string_literal ""%s:%c%s"" " string_content ") , identifier , (binary_expression "(-(uint)(param_3 == 0) & 0x20) + 0x46" (parenthesized_expression "(-(uint)(param_3 == 0) & 0x20)" ( (binary_expression "-(uint)(param_3 == 0) & 0x20" (unary_expression "-(uint)(param_3 == 0)" - (call_expression "(uint)(param_3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )))) & number_literal) )) + number_literal) , identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);" (assignment_expression "*(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8)" (pointer_expression "*(undefined4 *)(param_1 + 0x104)" * (cast_expression "(undefined4 *)(param_1 + 0x104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = FUN_00029160(0,0,__s_00);" (assignment_expression "iVar3 = 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 (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      free(__s_00);\n      iVar3 = 1;\n    }" { (expression_statement "free(__s_00);" (call_expression "free(__s_00)" identifier (argument_list "(__s_00)" ( identifier ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) (return_statement "return iVar3;" return identifier ;) })) comment (expression_statement "__assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");" (call_expression "__assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function")" identifier (argument_list "("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function")" ( (string_literal ""info->nesting == 0 && info->fun_offset == -1"" " string_content ") , (string_literal ""../../binutils/wrstabs.c"" " string_content ") , number_literal , (string_literal ""stab_start_function"" " string_content ") ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nbfd_boolean stab_start_function(void *p,char *name,bfd_boolean globalp)\n\n{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  bfd_boolean bVar3;\n  \n  if ((*(int *)((int)p + 0x110) == 0) && (*(int *)((int)p + 0x104) == -1)) {\n    __s = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n    sVar1 = strlen(name);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)((int)p + 0x104) = *(undefined4 *)((int)p + 8);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}\n\n" comment comment (function_definition "bfd_boolean stab_start_function(void *p,char *name,bfd_boolean globalp)\n\n{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  bfd_boolean bVar3;\n  \n  if ((*(int *)((int)p + 0x110) == 0) && (*(int *)((int)p + 0x104) == -1)) {\n    __s = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n    sVar1 = strlen(name);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)((int)p + 0x104) = *(undefined4 *)((int)p + 8);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}" type_identifier (function_declarator "stab_start_function(void *p,char *name,bfd_boolean globalp)" identifier (parameter_list "(void *p,char *name,bfd_boolean globalp)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "bfd_boolean globalp" type_identifier identifier) ))) (compound_statement "{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  bfd_boolean bVar3;\n  \n  if ((*(int *)((int)p + 0x110) == 0) && (*(int *)((int)p + 0x104) == -1)) {\n    __s = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n    sVar1 = strlen(name);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)((int)p + 0x104) = *(undefined4 *)((int)p + 8);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "bfd_boolean bVar3;" type_identifier identifier ;) (if_statement "if ((*(int *)((int)p + 0x110) == 0) && (*(int *)((int)p + 0x104) == -1)) {\n    __s = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n    sVar1 = strlen(name);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)((int)p + 0x104) = *(undefined4 *)((int)p + 8);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }" if (parenthesized_expression "((*(int *)((int)p + 0x110) == 0) && (*(int *)((int)p + 0x104) == -1))" ( (binary_expression "(*(int *)((int)p + 0x110) == 0) && (*(int *)((int)p + 0x104) == -1)" (parenthesized_expression "(*(int *)((int)p + 0x110) == 0)" ( (binary_expression "*(int *)((int)p + 0x110) == 0" (pointer_expression "*(int *)((int)p + 0x110)" * (cast_expression "(int *)((int)p + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0x110)" ( (binary_expression "(int)p + 0x110" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)((int)p + 0x104) == -1)" ( (binary_expression "*(int *)((int)p + 0x104) == -1" (pointer_expression "*(int *)((int)p + 0x104)" * (cast_expression "(int *)((int)p + 0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0x104)" ( (binary_expression "(int)p + 0x104" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    __s = stab_pop_type((stab_write_handle *)((int)p + 0x38));\n    sVar1 = strlen(name);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)((int)p + 0x104) = *(undefined4 *)((int)p + 8);\n    bVar3 = stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00);\n    if (bVar3 != 0) {\n      free(__s_00);\n      bVar3 = 1;\n    }\n    return bVar3;\n  }" { (expression_statement "__s = stab_pop_type((stab_write_handle *)((int)p + 0x38));" (assignment_expression "__s = 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 "sVar1 = strlen(name);" (assignment_expression "sVar1 = strlen(name)" identifier = (call_expression "strlen(name)" identifier (argument_list "(name)" ( identifier )))) ;) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);" (assignment_expression "__s_00 = (char *)xmalloc(sVar1 + 3 + sVar2)" identifier = (cast_expression "(char *)xmalloc(sVar1 + 3 + sVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar1 + 3 + sVar2)" identifier (argument_list "(sVar1 + 3 + sVar2)" ( (binary_expression "sVar1 + 3 + sVar2" (binary_expression "sVar1 + 3" identifier + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s);" (call_expression "sprintf(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s)" identifier (argument_list "(__s_00,"%s:%c%s",name,(-(uint)(globalp == 0) & 0x20) + 0x46,__s)" ( identifier , (string_literal ""%s:%c%s"" " string_content ") , identifier , (binary_expression "(-(uint)(globalp == 0) & 0x20) + 0x46" (parenthesized_expression "(-(uint)(globalp == 0) & 0x20)" ( (binary_expression "-(uint)(globalp == 0) & 0x20" (unary_expression "-(uint)(globalp == 0)" - (call_expression "(uint)(globalp == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(globalp == 0)" ( (binary_expression "globalp == 0" identifier == number_literal) )))) & number_literal) )) + number_literal) , identifier ))) ;) (expression_statement "*(undefined4 *)((int)p + 0x104) = *(undefined4 *)((int)p + 8);" (assignment_expression "*(undefined4 *)((int)p + 0x104) = *(undefined4 *)((int)p + 8)" (pointer_expression "*(undefined4 *)((int)p + 0x104)" * (cast_expression "(undefined4 *)((int)p + 0x104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 0x104)" ( (binary_expression "(int)p + 0x104" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)p + 8)" * (cast_expression "(undefined4 *)((int)p + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "bVar3 = stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00);" (assignment_expression "bVar3 = stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00)" identifier = (call_expression "stab_write_symbol((stab_write_handle *)p,0x24,0,0,__s_00)" identifier (argument_list "((stab_write_handle *)p,0x24,0,0,__s_00)" ( (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      free(__s_00);\n      bVar3 = 1;\n    }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      free(__s_00);\n      bVar3 = 1;\n    }" { (expression_statement "free(__s_00);" (call_expression "free(__s_00)" identifier (argument_list "(__s_00)" ( identifier ))) ;) (expression_statement "bVar3 = 1;" (assignment_expression "bVar3 = 1" identifier = number_literal) ;) })) (return_statement "return bVar3;" return identifier ;) })) comment (expression_statement "__assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");" (call_expression "__assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function")" identifier (argument_list "("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function")" ( (string_literal ""info->nesting == 0 && info->fun_offset == -1"" " string_content ") , (string_literal ""../../binutils/wrstabs.c"" " string_content ") , number_literal , (string_literal ""stab_start_function"" " string_content ") ))) ;) })))
(translation_unit "int FUN_0002a2a0(int param_1,char *param_2,int param_3)\n\n{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  int iVar3;\n  \n  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }\n                    \n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}\n\n" (function_definition "int FUN_0002a2a0(int param_1,char *param_2,int param_3)\n\n{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  int iVar3;\n  \n  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }\n                    \n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}" primitive_type (function_declarator "FUN_0002a2a0(int param_1,char *param_2,int param_3)" identifier (parameter_list "(int param_1,char *param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  int iVar3;\n  \n  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }\n                    \n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}" { (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (if_statement "if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1))" ( (binary_expression "(*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)" (parenthesized_expression "(*(int *)(param_1 + 0x110) == 0)" ( (binary_expression "*(int *)(param_1 + 0x110) == 0" (pointer_expression "*(int *)(param_1 + 0x110)" * (cast_expression "(int *)(param_1 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 0x104) == -1)" ( (binary_expression "*(int *)(param_1 + 0x104) == -1" (pointer_expression "*(int *)(param_1 + 0x104)" * (cast_expression "(int *)(param_1 + 0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }" { (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(param_2);" (assignment_expression "sVar1 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "__s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);" (assignment_expression "__s_00 = (char *)xmalloc(sVar1 + 3 + sVar2)" identifier = (cast_expression "(char *)xmalloc(sVar1 + 3 + sVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar1 + 3 + sVar2)" identifier (argument_list "(sVar1 + 3 + sVar2)" ( (binary_expression "sVar1 + 3 + sVar2" (binary_expression "sVar1 + 3" identifier + number_literal) + identifier) ))))) ;) (expression_statement "sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);" (call_expression "sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s)" identifier (argument_list "(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s)" ( identifier , (string_literal ""%s:%c%s"" " string_content ") , identifier , (binary_expression "(-(uint)(param_3 == 0) & 0x20) + 0x46" (parenthesized_expression "(-(uint)(param_3 == 0) & 0x20)" ( (binary_expression "-(uint)(param_3 == 0) & 0x20" (unary_expression "-(uint)(param_3 == 0)" - (call_expression "(uint)(param_3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )))) & number_literal) )) + number_literal) , identifier ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);" (assignment_expression "*(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8)" (pointer_expression "*(undefined4 *)(param_1 + 0x104)" * (cast_expression "(undefined4 *)(param_1 + 0x104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = FUN_00029160(0,0,__s_00);" (assignment_expression "iVar3 = 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 (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      free(__s_00);\n      iVar3 = 1;\n    }" { (expression_statement "free(__s_00);" (call_expression "free(__s_00)" identifier (argument_list "(__s_00)" ( identifier ))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) (return_statement "return iVar3;" return identifier ;) })) (expression_statement "__assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");" (call_expression "__assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function")" identifier (argument_list "("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function")" ( (string_literal ""info->nesting == 0 && info->fun_offset == -1"" " string_content ") , (string_literal ""../../binutils/wrstabs.c"" " string_content ") , number_literal , (string_literal ""stab_start_function"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (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 = (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 (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) & LIT) )) + LIT) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "int FUN_0002a2a0(int param_1,char *param_2,int param_3)\n\n{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  int iVar3;\n  \n  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }\n                    \n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}" (primitive_type "int") (function_declarator "FUN_0002a2a0(int param_1,char *param_2,int param_3)" (identifier "FUN_0002a2a0") (parameter_list "(int param_1,char *param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  char *__s;\n  size_t sVar1;\n  size_t sVar2;\n  char *__s_00;\n  int iVar3;\n  \n  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }\n                    \n  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");\n}" ({ "{") (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "size_t sVar2;" (primitive_type "size_t") (identifier "sVar2") (; ";")) (declaration "char *__s_00;" (primitive_type "char") (pointer_declarator "*__s_00" (* "*") (identifier "__s_00")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (if_statement "if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1))" (( "(") (binary_expression "(*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)" (parenthesized_expression "(*(int *)(param_1 + 0x110) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x110) == 0" (pointer_expression "*(int *)(param_1 + 0x110)" (* "*") (cast_expression "(int *)(param_1 + 0x110)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0x104) == -1)" (( "(") (binary_expression "*(int *)(param_1 + 0x104) == -1" (pointer_expression "*(int *)(param_1 + 0x104)" (* "*") (cast_expression "(int *)(param_1 + 0x104)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x104)" (( "(") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) () ")")))) (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n    __s = (char *)FUN_00029a00();\n    sVar1 = strlen(param_2);\n    sVar2 = strlen(__s);\n    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);\n    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);\n    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);\n    iVar3 = FUN_00029160(0,0,__s_00);\n    if (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }\n    return iVar3;\n  }" ({ "{") (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(param_2);" (assignment_expression "sVar1 = strlen(param_2)" (identifier "sVar1") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" (identifier "sVar2") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "__s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);" (assignment_expression "__s_00 = (char *)xmalloc(sVar1 + 3 + sVar2)" (identifier "__s_00") (= "=") (cast_expression "(char *)xmalloc(sVar1 + 3 + sVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar1 + 3 + sVar2)" (identifier "xmalloc") (argument_list "(sVar1 + 3 + sVar2)" (( "(") (binary_expression "sVar1 + 3 + sVar2" (binary_expression "sVar1 + 3" (identifier "sVar1") (+ "+") (number_literal "3")) (+ "+") (identifier "sVar2")) () ")"))))) (; ";")) (expression_statement "sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);" (call_expression "sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s)" (identifier "sprintf") (argument_list "(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s)" (( "(") (identifier "__s_00") (, ",") (string_literal ""%s:%c%s"" (" """) (string_content "%s:%c%s") (" """)) (, ",") (identifier "param_2") (, ",") (binary_expression "(-(uint)(param_3 == 0) & 0x20) + 0x46" (parenthesized_expression "(-(uint)(param_3 == 0) & 0x20)" (( "(") (binary_expression "-(uint)(param_3 == 0) & 0x20" (unary_expression "-(uint)(param_3 == 0)" (- "-") (call_expression "(uint)(param_3 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (+ "+") (number_literal "0x46")) (, ",") (identifier "__s") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);" (assignment_expression "*(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8)" (pointer_expression "*(undefined4 *)(param_1 + 0x104)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x104)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x104)" (( "(") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_00029160(0,0,__s_00);" (assignment_expression "iVar3 = FUN_00029160(0,0,__s_00)" (identifier "iVar3") (= "=") (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 (iVar3 != 0) {\n      free(__s_00);\n      iVar3 = 1;\n    }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      free(__s_00);\n      iVar3 = 1;\n    }" ({ "{") (expression_statement "free(__s_00);" (call_expression "free(__s_00)" (identifier "free") (argument_list "(__s_00)" (( "(") (identifier "__s_00") () ")"))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (} "}"))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (expression_statement "__assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function");" (call_expression "__assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function")" (identifier "__assert_fail") (argument_list "("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,\n                "stab_start_function")" (( "(") (string_literal ""info->nesting == 0 && info->fun_offset == -1"" (" """) (string_content "info->nesting == 0 && info->fun_offset == -1") (" """)) (, ",") (string_literal ""../../binutils/wrstabs.c"" (" """) (string_content "../../binutils/wrstabs.c") (" """)) (, ",") (number_literal "0x828") (, ",") (string_literal ""stab_start_function"" (" """) (string_content "stab_start_function") (" """)) () ")"))) (; ";")) (} "}")))

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

type_1 function_1(void *p,char *name,type_1 var_7)

{
  char *__s;
  size_t var_4;
  size_t var_5;
  char *__s_00;
  type_1 var_9;
  
  if ((*(int *)((int)p + 0x110) == 0) && (*(int *)((int)p + 0x104) == -1)) {
    __s = var_1((type_2 *)((int)p + 0x38));
    var_4 = var_2(name);
    var_5 = var_2(__s);
    __s_00 = (char *)var_3(var_4 + 3 + var_5);
    var_6(__s_00,"%s:%c%s",name,(-(uint)(var_7 == 0) & 0x20) + 0x46,__s);
    *(type_3 *)((int)p + 0x104) = *(type_3 *)((int)p + 8);
    var_9 = var_8((type_2 *)p,0x24,0,0,__s_00);
    if (var_9 != 0) {
      var_10(__s_00);
      var_9 = 1;
    }
    return var_9;
  }
                    /* WARNING: Subroutine does not return */
  var_11("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,
                "stab_start_function");
}


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

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

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

{
  char *__s;
  size_t sVar1;
  size_t sVar2;
  char *__s_00;
  int iVar3;
  
  if ((*(int *)(param_1 + 0x110) == 0) && (*(int *)(param_1 + 0x104) == -1)) {
    __s = (char *)FUN_00029a00();
    sVar1 = strlen(param_2);
    sVar2 = strlen(__s);
    __s_00 = (char *)xmalloc(sVar1 + 3 + sVar2);
    sprintf(__s_00,"%s:%c%s",param_2,(-(uint)(param_3 == 0) & 0x20) + 0x46,__s);
    *(undefined4 *)(param_1 + 0x104) = *(undefined4 *)(param_1 + 8);
    iVar3 = FUN_00029160(0,0,__s_00);
    if (iVar3 != 0) {
      free(__s_00);
      iVar3 = 1;
    }
    return iVar3;
  }
                    /* WARNING: Subroutine does not return */
  __assert_fail("info->nesting == 0 && info->fun_offset == -1","../../binutils/wrstabs.c",0x828,
                "stab_start_function");
}

