
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* __verbose_terminate_handler() */

void __verbose_terminate_handler(void)

{
  undefined *puVar1;
  int iVar2;
  char *__s;
  char *__s_00;
  int local_20 [4];
  
  if (__verbose_terminate_handler()::terminating != '\0') {
    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);
                    /* WARNING: Subroutine does not return */
    abort();
  }
  __verbose_terminate_handler()::terminating = 1;
  iVar2 = __cxa_current_exception_type();
  if (iVar2 != 0) {
    local_20[0] = -1;
    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');
    __s = (char *)__cxa_demangle(__s_00,0,0,local_20);
    puVar1 = PTR_stderr_0038ed28;
    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)
    ;
    if (local_20[0] == 0) {
      fputs(__s,*(FILE **)puVar1);
    }
    else {
      fputs(__s_00,*(FILE **)puVar1);
    }
    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);
    if (local_20[0] == 0) {
      FUN_000332b2();
      return;
    }
                    /* WARNING: Subroutine does not return */
    __cxa_rethrow();
  }
  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);
                    /* WARNING: Subroutine does not return */
  abort();
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_0022e1f0(void)

{
  undefined *puVar1;
  int iVar2;
  char *__s;
  char *__s_00;
  int local_20 [4];
  
  if (DAT_00396e28 != '\0') {
    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);
                    /* WARNING: Subroutine does not return */
    abort();
  }
  DAT_00396e28 = 1;
  iVar2 = FUN_0022ee60();
  if (iVar2 != 0) {
    local_20[0] = -1;
    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');
    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);
    puVar1 = PTR_stderr_0038ed28;
    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)
    ;
    if (local_20[0] == 0) {
      fputs(__s,*(FILE **)puVar1);
    }
    else {
      fputs(__s_00,*(FILE **)puVar1);
    }
    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);
    if (local_20[0] == 0) {
      FUN_000332b2();
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_001e5680();
  }
  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);
                    /* WARNING: Subroutine does not return */
  abort();
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
CALL 0x000559ea
ADD ESI,0x160e06
PUSH EBX
SUB ESP,0x2c
CMP byte ptr [ESI + 0x7e28],0x0
JNZ 0x0022e2e8
MOV EBX,ESI
MOV byte ptr [ESI + 0x7e28],0x1
CALL 0x0022ee60
TEST EAX,EAX
JZ 0x0022e2c8
MOV ECX,dword ptr [EAX + 0x4]
XOR EAX,EAX
CMP byte ptr [ECX],0x2a
MOV dword ptr [EBP + -0x1c],0xffffffff
SETZ AL
ADD ECX,EAX
LEA EAX,[EBP + -0x1c]
PUSH EAX
PUSH 0x0
PUSH 0x0
PUSH ECX
MOV dword ptr [EBP + -0x30],ECX
CALL 0x00279df0
MOV EDI,dword ptr [ESI + 0xfffffd28]
ADD ESP,0x10
MOV dword ptr [EBP + -0x2c],EAX
LEA EAX,[ESI + 0xfff16d80]
PUSH dword ptr [EDI]
PUSH 0x30
PUSH 0x1
PUSH EAX
CALL 0x00029730
MOV EAX,dword ptr [EBP + -0x1c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0022e2b0
SUB ESP,0x8
PUSH dword ptr [EDI]
PUSH dword ptr [EBP + -0x30]
CALL 0x00029060
ADD ESP,0x10
LEA EAX,[ESI + 0xfff16d6e]
PUSH dword ptr [EDI]
MOV EBX,ESI
PUSH 0x2
PUSH 0x1
PUSH EAX
CALL 0x00029730
MOV EAX,dword ptr [EBP + -0x1c]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000332c0
JMP 0x000332b2
SUB ESP,0x8
PUSH dword ptr [EDI]
PUSH dword ptr [EBP + -0x2c]
CALL 0x00029060
ADD ESP,0x10
JMP 0x0022e284
MOV EAX,dword ptr [ESI + 0xfffffd28]
PUSH dword ptr [EAX]
LEA EAX,[ESI + 0xfff16db4]
PUSH 0x2d
PUSH 0x1
PUSH EAX
CALL 0x00029730
ADD ESP,0x10
JMP 0x000332ab
MOV EAX,dword ptr [ESI + 0xfffffd28]
MOV EBX,ESI
PUSH dword ptr [EAX]
LEA EAX,[ESI + 0xfff16d50]
PUSH 0x1d
PUSH 0x1
PUSH EAX
CALL 0x00029730
CALL 0x00029080
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_0022e1f0(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  DAT_00396e28 = 1;\n  iVar2 = FUN_0022ee60();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001e5680();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n  abort();\n}\n\n" comment (function_definition "void FUN_0022e1f0(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  DAT_00396e28 = 1;\n  iVar2 = FUN_0022ee60();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001e5680();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n  abort();\n}" primitive_type (function_declarator "FUN_0022e1f0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  DAT_00396e28 = 1;\n  iVar2 = FUN_0022ee60();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001e5680();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n  abort();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (if_statement "if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" if (parenthesized_expression "(DAT_00396e28 != '\0')" ( (binary_expression "DAT_00396e28 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { (expression_statement "fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);" (call_expression "fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called recursively\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "DAT_00396e28 = 1;" (assignment_expression "DAT_00396e28 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = FUN_0022ee60();" (assignment_expression "iVar2 = FUN_0022ee60()" identifier = (call_expression "FUN_0022ee60()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001e5680();\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001e5680();\n  }" { (expression_statement "local_20[0] = -1;" (assignment_expression "local_20[0] = -1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');" (assignment_expression "__s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*')" identifier = (binary_expression "*(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*')" (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + (parenthesized_expression "(**(char **)(iVar2 + 4) == '*')" ( (binary_expression "**(char **)(iVar2 + 4) == '*'" (pointer_expression "**(char **)(iVar2 + 4)" * (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) == (char_literal "'*'" ' character ')) )))) ;) (expression_statement "__s = (char *)FUN_00279df0(__s_00,0,0,local_20);" (assignment_expression "__s = (char *)FUN_00279df0(__s_00,0,0,local_20)" identifier = (cast_expression "(char *)FUN_00279df0(__s_00,0,0,local_20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00279df0(__s_00,0,0,local_20)" identifier (argument_list "(__s_00,0,0,local_20)" ( identifier , number_literal , number_literal , identifier ))))) ;) (expression_statement "puVar1 = PTR_stderr_0038ed28;" (assignment_expression "puVar1 = PTR_stderr_0038ed28" identifier = identifier) ;) (expression_statement "fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;" (call_expression "fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called after throwing an instance of \'"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (if_statement "if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      fputs(__s,*(FILE **)puVar1);\n    }" { (expression_statement "fputs(__s,*(FILE **)puVar1);" (call_expression "fputs(__s,*(FILE **)puVar1)" identifier (argument_list "(__s,*(FILE **)puVar1)" ( identifier , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fputs(__s_00,*(FILE **)puVar1);\n    }" { (expression_statement "fputs(__s_00,*(FILE **)puVar1);" (call_expression "fputs(__s_00,*(FILE **)puVar1)" identifier (argument_list "(__s_00,*(FILE **)puVar1)" ( identifier , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (expression_statement "fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1)" identifier (argument_list "(&DAT_002a5d6e,1,2,*(FILE **)puVar1)" ( (pointer_expression "&DAT_002a5d6e" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (if_statement "if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_000332b2();\n      return;\n    }" { (expression_statement "FUN_000332b2();" (call_expression "FUN_000332b2()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_001e5680();" (call_expression "FUN_001e5680()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);" (call_expression "fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called without an active exception\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* __verbose_terminate_handler() */\n\nvoid __verbose_terminate_handler(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (__verbose_terminate_handler()::terminating != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  __verbose_terminate_handler()::terminating = 1;\n  iVar2 = __cxa_current_exception_type();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)__cxa_demangle(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __cxa_rethrow();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n  abort();\n}\n\n" comment comment comment (function_definition "void __verbose_terminate_handler(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (__verbose_terminate_handler()::terminating != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  __verbose_terminate_handler()::terminating = 1;\n  iVar2 = __cxa_current_exception_type();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)__cxa_demangle(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __cxa_rethrow();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n  abort();\n}" primitive_type (function_declarator "__verbose_terminate_handler(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (__verbose_terminate_handler()::terminating != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  __verbose_terminate_handler()::terminating = 1;\n  iVar2 = __cxa_current_exception_type();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)__cxa_demangle(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __cxa_rethrow();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n  abort();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (if_statement "if (__verbose_terminate_handler()::terminating != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" if (parenthesized_expression "(__verbose_terminate_handler()::terminating != '\0')" ( (binary_expression "__verbose_terminate_handler()::terminating != '\0'" (call_expression "__verbose_terminate_handler()" identifier (argument_list "()" ( ))) (ERROR "::terminating" : : identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { (expression_statement "fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);" (call_expression "fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called recursively\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (ERROR "__verbose_terminate_handler()::" (call_expression "__verbose_terminate_handler()" identifier (argument_list "()" ( ))) : :) (expression_statement "terminating = 1;" (assignment_expression "terminating = 1" identifier = number_literal) ;) (expression_statement "iVar2 = __cxa_current_exception_type();" (assignment_expression "iVar2 = __cxa_current_exception_type()" identifier = (call_expression "__cxa_current_exception_type()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)__cxa_demangle(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __cxa_rethrow();\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)__cxa_demangle(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    __cxa_rethrow();\n  }" { (expression_statement "local_20[0] = -1;" (assignment_expression "local_20[0] = -1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');" (assignment_expression "__s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*')" identifier = (binary_expression "*(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*')" (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + (parenthesized_expression "(**(char **)(iVar2 + 4) == '*')" ( (binary_expression "**(char **)(iVar2 + 4) == '*'" (pointer_expression "**(char **)(iVar2 + 4)" * (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) == (char_literal "'*'" ' character ')) )))) ;) (expression_statement "__s = (char *)__cxa_demangle(__s_00,0,0,local_20);" (assignment_expression "__s = (char *)__cxa_demangle(__s_00,0,0,local_20)" identifier = (cast_expression "(char *)__cxa_demangle(__s_00,0,0,local_20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "__cxa_demangle(__s_00,0,0,local_20)" identifier (argument_list "(__s_00,0,0,local_20)" ( identifier , number_literal , number_literal , identifier ))))) ;) (expression_statement "puVar1 = PTR_stderr_0038ed28;" (assignment_expression "puVar1 = PTR_stderr_0038ed28" identifier = identifier) ;) (expression_statement "fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;" (call_expression "fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called after throwing an instance of \'"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (if_statement "if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      fputs(__s,*(FILE **)puVar1);\n    }" { (expression_statement "fputs(__s,*(FILE **)puVar1);" (call_expression "fputs(__s,*(FILE **)puVar1)" identifier (argument_list "(__s,*(FILE **)puVar1)" ( identifier , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fputs(__s_00,*(FILE **)puVar1);\n    }" { (expression_statement "fputs(__s_00,*(FILE **)puVar1);" (call_expression "fputs(__s_00,*(FILE **)puVar1)" identifier (argument_list "(__s_00,*(FILE **)puVar1)" ( identifier , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (expression_statement "fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1)" identifier (argument_list "(&DAT_002a5d6e,1,2,*(FILE **)puVar1)" ( (pointer_expression "&DAT_002a5d6e" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (if_statement "if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_000332b2();\n      return;\n    }" { (expression_statement "FUN_000332b2();" (call_expression "FUN_000332b2()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "__cxa_rethrow();" (call_expression "__cxa_rethrow()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);" (call_expression "fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called without an active exception\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_0022e1f0(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }\n  DAT_00396e28 = 1;\n  iVar2 = FUN_0022ee60();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    \n  abort();\n}\n\n" (function_definition "void FUN_0022e1f0(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }\n  DAT_00396e28 = 1;\n  iVar2 = FUN_0022ee60();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    \n  abort();\n}" primitive_type (function_declarator "FUN_0022e1f0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }\n  DAT_00396e28 = 1;\n  iVar2 = FUN_0022ee60();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    \n  abort();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (if_statement "if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }" if (parenthesized_expression "(DAT_00396e28 != '\0')" ( (binary_expression "DAT_00396e28 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }" { (expression_statement "fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);" (call_expression "fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called recursively\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "DAT_00396e28 = 1;" (assignment_expression "DAT_00396e28 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = FUN_0022ee60();" (assignment_expression "iVar2 = FUN_0022ee60()" identifier = (call_expression "FUN_0022ee60()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }" { (expression_statement "local_20[0] = -1;" (assignment_expression "local_20[0] = -1" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');" (assignment_expression "__s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*')" identifier = (binary_expression "*(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*')" (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + (parenthesized_expression "(**(char **)(iVar2 + 4) == '*')" ( (binary_expression "**(char **)(iVar2 + 4) == '*'" (pointer_expression "**(char **)(iVar2 + 4)" * (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) == (char_literal "'*'" ' character ')) )))) ;) (expression_statement "__s = (char *)FUN_00279df0(__s_00,0,0,local_20);" (assignment_expression "__s = (char *)FUN_00279df0(__s_00,0,0,local_20)" identifier = (cast_expression "(char *)FUN_00279df0(__s_00,0,0,local_20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00279df0(__s_00,0,0,local_20)" identifier (argument_list "(__s_00,0,0,local_20)" ( identifier , number_literal , number_literal , identifier ))))) ;) (expression_statement "puVar1 = PTR_stderr_0038ed28;" (assignment_expression "puVar1 = PTR_stderr_0038ed28" identifier = identifier) ;) (expression_statement "fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;" (call_expression "fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called after throwing an instance of \'"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (if_statement "if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      fputs(__s,*(FILE **)puVar1);\n    }" { (expression_statement "fputs(__s,*(FILE **)puVar1);" (call_expression "fputs(__s,*(FILE **)puVar1)" identifier (argument_list "(__s,*(FILE **)puVar1)" ( identifier , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fputs(__s_00,*(FILE **)puVar1);\n    }" { (expression_statement "fputs(__s_00,*(FILE **)puVar1);" (call_expression "fputs(__s_00,*(FILE **)puVar1)" identifier (argument_list "(__s_00,*(FILE **)puVar1)" ( identifier , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (expression_statement "fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1)" identifier (argument_list "(&DAT_002a5d6e,1,2,*(FILE **)puVar1)" ( (pointer_expression "&DAT_002a5d6e" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (if_statement "if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      FUN_000332b2();\n      return;\n    }" { (expression_statement "FUN_000332b2();" (call_expression "FUN_000332b2()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_001e5680();" (call_expression "FUN_001e5680()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);" (call_expression "fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28)" identifier (argument_list "("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28)" ( (string_literal ""terminate called without an active exception\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stderr_0038ed28" * (cast_expression "(FILE **)PTR_stderr_0038ed28" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == (char_literal ' character ')) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_0022e1f0(void)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }\n  DAT_00396e28 = 1;\n  iVar2 = FUN_0022ee60();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    \n  abort();\n}" (primitive_type "void") (function_declarator "FUN_0022e1f0(void)" (identifier "FUN_0022e1f0") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char *__s;\n  char *__s_00;\n  int local_20 [4];\n  \n  if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }\n  DAT_00396e28 = 1;\n  iVar2 = FUN_0022ee60();\n  if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }\n  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);\n                    \n  abort();\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "char *__s_00;" (primitive_type "char") (pointer_declarator "*__s_00" (* "*") (identifier "__s_00")) (; ";")) (declaration "int local_20 [4];" (primitive_type "int") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]")) (; ";")) (if_statement "if (DAT_00396e28 != '\0') {\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }" (if "if") (parenthesized_expression "(DAT_00396e28 != '\0')" (( "(") (binary_expression "DAT_00396e28 != '\0'" (identifier "DAT_00396e28") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);\n                    \n    abort();\n  }" ({ "{") (expression_statement "fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);" (call_expression "fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28)" (identifier "fwrite") (argument_list "("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28)" (( "(") (string_literal ""terminate called recursively\n"" (" """) (string_content "terminate called recursively") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x1d") (, ",") (pointer_expression "*(FILE **)PTR_stderr_0038ed28" (* "*") (cast_expression "(FILE **)PTR_stderr_0038ed28" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stderr_0038ed28"))) () ")"))) (; ";")) (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_00396e28 = 1;" (assignment_expression "DAT_00396e28 = 1" (identifier "DAT_00396e28") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar2 = FUN_0022ee60();" (assignment_expression "iVar2 = FUN_0022ee60()" (identifier "iVar2") (= "=") (call_expression "FUN_0022ee60()" (identifier "FUN_0022ee60") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_20[0] = -1;\n    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');\n    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);\n    puVar1 = PTR_stderr_0038ed28;\n    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;\n    if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }\n    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);\n    if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }\n                    \n    FUN_001e5680();\n  }" ({ "{") (expression_statement "local_20[0] = -1;" (assignment_expression "local_20[0] = -1" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "__s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');" (assignment_expression "__s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*')" (identifier "__s_00") (= "=") (binary_expression "*(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*')" (pointer_expression "*(char **)(iVar2 + 4)" (* "*") (cast_expression "(char **)(iVar2 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (parenthesized_expression "(**(char **)(iVar2 + 4) == '*')" (( "(") (binary_expression "**(char **)(iVar2 + 4) == '*'" (pointer_expression "**(char **)(iVar2 + 4)" (* "*") (pointer_expression "*(char **)(iVar2 + 4)" (* "*") (cast_expression "(char **)(iVar2 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")"))))) (== "==") (char_literal "'*'" (' "'") (character "*") (' "'"))) () ")")))) (; ";")) (expression_statement "__s = (char *)FUN_00279df0(__s_00,0,0,local_20);" (assignment_expression "__s = (char *)FUN_00279df0(__s_00,0,0,local_20)" (identifier "__s") (= "=") (cast_expression "(char *)FUN_00279df0(__s_00,0,0,local_20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00279df0(__s_00,0,0,local_20)" (identifier "FUN_00279df0") (argument_list "(__s_00,0,0,local_20)" (( "(") (identifier "__s_00") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "local_20") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR_stderr_0038ed28;" (assignment_expression "puVar1 = PTR_stderr_0038ed28" (identifier "puVar1") (= "=") (identifier "PTR_stderr_0038ed28")) (; ";")) (expression_statement "fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)\n    ;" (call_expression "fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)" (identifier "fwrite") (argument_list "("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)" (( "(") (string_literal ""terminate called after throwing an instance of \'"" (" """) (string_content "terminate called after throwing an instance of ") (escape_sequence "\'") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x30") (, ",") (pointer_expression "*(FILE **)PTR_stderr_0038ed28" (* "*") (cast_expression "(FILE **)PTR_stderr_0038ed28" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stderr_0038ed28"))) () ")"))) (; ";")) (if_statement "if (local_20[0] == 0) {\n      fputs(__s,*(FILE **)puVar1);\n    }\n    else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }" (if "if") (parenthesized_expression "(local_20[0] == 0)" (( "(") (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      fputs(__s,*(FILE **)puVar1);\n    }" ({ "{") (expression_statement "fputs(__s,*(FILE **)puVar1);" (call_expression "fputs(__s,*(FILE **)puVar1)" (identifier "fputs") (argument_list "(__s,*(FILE **)puVar1)" (( "(") (identifier "__s") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      fputs(__s_00,*(FILE **)puVar1);\n    }" (else "else") (compound_statement "{\n      fputs(__s_00,*(FILE **)puVar1);\n    }" ({ "{") (expression_statement "fputs(__s_00,*(FILE **)puVar1);" (call_expression "fputs(__s_00,*(FILE **)puVar1)" (identifier "fputs") (argument_list "(__s_00,*(FILE **)puVar1)" (( "(") (identifier "__s_00") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")))) (expression_statement "fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "(&DAT_002a5d6e,1,2,*(FILE **)puVar1)" (( "(") (pointer_expression "&DAT_002a5d6e" (& "&") (identifier "DAT_002a5d6e")) (, ",") (number_literal "1") (, ",") (number_literal "2") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (if_statement "if (local_20[0] == 0) {\n      FUN_000332b2();\n      return;\n    }" (if "if") (parenthesized_expression "(local_20[0] == 0)" (( "(") (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_000332b2();\n      return;\n    }" ({ "{") (expression_statement "FUN_000332b2();" (call_expression "FUN_000332b2()" (identifier "FUN_000332b2") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_001e5680();" (call_expression "FUN_001e5680()" (identifier "FUN_001e5680") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);" (call_expression "fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28)" (identifier "fwrite") (argument_list "("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28)" (( "(") (string_literal ""terminate called without an active exception\n"" (" """) (string_content "terminate called without an active exception") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x2d") (, ",") (pointer_expression "*(FILE **)PTR_stderr_0038ed28" (* "*") (cast_expression "(FILE **)PTR_stderr_0038ed28" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stderr_0038ed28"))) () ")"))) (; ";")) (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* __verbose_terminate_handler() */

void function_1(void)

{
  type_1 *puVar1;
  int var_4;
  char *__s;
  char *__s_00;
  int local_20 [4];
  
  if (function_1()::terminating != '\0') {
    var_1("terminate called recursively\n",1,0x1d,*(type_2 **)PTR_stderr_0038ed28);
                    /* WARNING: Subroutine does not return */
    var_2();
  }
  function_1()::terminating = 1;
  var_4 = var_3();
  if (var_4 != 0) {
    local_20[0] = -1;
    __s_00 = *(char **)(var_4 + 4) + (**(char **)(var_4 + 4) == '*');
    __s = (char *)var_5(__s_00,0,0,local_20);
    puVar1 = PTR_stderr_0038ed28;
    var_1("terminate called after throwing an instance of \'",1,0x30,*(type_2 **)PTR_stderr_0038ed28)
    ;
    if (local_20[0] == 0) {
      var_6(__s,*(type_2 **)puVar1);
    }
    else {
      var_6(__s_00,*(type_2 **)puVar1);
    }
    var_1(&DAT_002a5d6e,1,2,*(type_2 **)puVar1);
    if (local_20[0] == 0) {
      var_7();
      return;
    }
                    /* WARNING: Subroutine does not return */
    var_8();
  }
  var_1("terminate called without an active exception\n",1,0x2d,*(type_2 **)PTR_stderr_0038ed28);
                    /* WARNING: Subroutine does not return */
  var_2();
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (type_identifier) 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (character))))))) (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 (identifier) (number_literal) (number_literal) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(void)

{
  undefined *puVar1;
  int iVar2;
  char *__s;
  char *__s_00;
  int local_20 [4];
  
  if (DAT_00396e28 != '\0') {
    fwrite("terminate called recursively\n",1,0x1d,*(FILE **)PTR_stderr_0038ed28);
                    /* WARNING: Subroutine does not return */
    abort();
  }
  DAT_00396e28 = 1;
  iVar2 = FUN_0022ee60();
  if (iVar2 != 0) {
    local_20[0] = -1;
    __s_00 = *(char **)(iVar2 + 4) + (**(char **)(iVar2 + 4) == '*');
    __s = (char *)FUN_00279df0(__s_00,0,0,local_20);
    puVar1 = PTR_stderr_0038ed28;
    fwrite("terminate called after throwing an instance of \'",1,0x30,*(FILE **)PTR_stderr_0038ed28)
    ;
    if (local_20[0] == 0) {
      fputs(__s,*(FILE **)puVar1);
    }
    else {
      fputs(__s_00,*(FILE **)puVar1);
    }
    fwrite(&DAT_002a5d6e,1,2,*(FILE **)puVar1);
    if (local_20[0] == 0) {
      FUN_000332b2();
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_001e5680();
  }
  fwrite("terminate called without an active exception\n",1,0x2d,*(FILE **)PTR_stderr_0038ed28);
                    /* WARNING: Subroutine does not return */
  abort();
}

