
void __cxa_call_unexpected_cold_6(void)

{
  undefined8 *puVar1;
  char cVar2;
  long *plVar3;
  undefined8 *puVar4;
  long unaff_RBP;
  _func_void *unaff_R12;
  uchar *unaff_R13;
  
  __cxa_begin_catch();
  plVar3 = (long *)__cxa_get_globals_fast();
  puVar1 = (undefined8 *)*plVar3;
  puVar4 = puVar1 + 0xe;
  if ((*(byte *)(puVar1 + 10) & 1) != 0) {
    puVar4 = (undefined8 *)*puVar1;
  }
                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */
  parse_lsda_header((_Unwind_Context *)0x0,unaff_R13,(lsda_header_info *)&stack0x00000000);
  cVar2 = check_exception_spec
                    ((lsda_header_info *)&stack0x00000000,(type_info *)puVar4[-0xe],puVar4,unaff_RBP
                    );
  if (cVar2 == '\0') {
    cVar2 = check_exception_spec
                      ((lsda_header_info *)&stack0x00000000,
                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP);
    if (cVar2 == '\0') {
                    /* WARNING: Subroutine does not return */
      __cxxabiv1::__terminate(unaff_R12);
    }
    puVar4 = (undefined8 *)__cxa_allocate_exception(8);
    *puVar4 = &PTR__bad_exception_004383e8;
                    /* WARNING: Subroutine does not return */
    __cxa_throw(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception);
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */
  __cxa_rethrow();
}



void FUN_0014e5d1(void)

{
  undefined8 *puVar1;
  char cVar2;
  long *plVar3;
  undefined8 *puVar4;
  
  FUN_002da4d0();
  plVar3 = (long *)FUN_002da350();
  puVar1 = (undefined8 *)*plVar3;
  puVar4 = puVar1 + 0xe;
  if ((*(byte *)(puVar1 + 10) & 1) != 0) {
    puVar4 = (undefined8 *)*puVar1;
  }
                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */
  FUN_002d9c90(0);
  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);
  if (cVar2 == '\0') {
    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);
    if (cVar2 == '\0') {
                    /* WARNING: Subroutine does not return */
      FUN_002d98d0();
    }
    puVar4 = (undefined8 *)FUN_002daaf0(8);
    *puVar4 = &PTR_FUN_004383e8;
                    /* WARNING: Subroutine does not return */
    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */
  FUN_002d9860();
}


MOV RDI,RAX
CALL 0x002da4d0
CALL 0x002da350
MOV RAX,qword ptr [RAX]
LEA R14,[RAX + 0x70]
TEST byte ptr [RAX + 0x50],0x1
JNZ 0x0014e634
MOV RBX,RSP
MOV RSI,R13
XOR EDI,EDI
MOV RDX,RBX
CALL 0x002d9c90
MOV RSI,qword ptr [R14 + -0x70]
MOV RCX,RBP
MOV RDX,R14
MOV RDI,RBX
CALL 0x002d9bb0
TEST AL,AL
JNZ 0x0014e64e
MOV RCX,RBP
LEA RBP,[0x438378]
XOR EDX,EDX
MOV RDI,RBX
MOV RSI,RBP
CALL 0x002d9bb0
TEST AL,AL
JNZ 0x0014e653
MOV RDI,R12
CALL 0x002d98d0
MOV R14,qword ptr [RAX]
JMP 0x0014e5eb
CALL 0x002d9860
MOV EDI,0x8
CALL 0x002daaf0
LEA RDX,[0x4383d8]
MOV RSI,RBP
MOV RDI,RAX
ADD RDX,0x10
MOV qword ptr [RAX],RDX
LEA RDX,[0x2da3a0]
CALL 0x002d9810
(translation_unit "void FUN_0014e5d1(void)\n\n{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  \n  FUN_002da4d0();\n  plVar3 = (long *)FUN_002da350();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */\n  FUN_002d9c90(0);\n  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);\n  if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    /* WARNING: Subroutine does not return */\n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */\n  FUN_002d9860();\n}\n\n" (function_definition "void FUN_0014e5d1(void)\n\n{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  \n  FUN_002da4d0();\n  plVar3 = (long *)FUN_002da350();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */\n  FUN_002d9c90(0);\n  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);\n  if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    /* WARNING: Subroutine does not return */\n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */\n  FUN_002d9860();\n}" primitive_type (function_declarator "FUN_0014e5d1(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  \n  FUN_002da4d0();\n  plVar3 = (long *)FUN_002da350();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */\n  FUN_002d9c90(0);\n  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);\n  if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    /* WARNING: Subroutine does not return */\n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */\n  FUN_002d9860();\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "FUN_002da4d0();" (call_expression "FUN_002da4d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "plVar3 = (long *)FUN_002da350();" (assignment_expression "plVar3 = (long *)FUN_002da350()" identifier = (cast_expression "(long *)FUN_002da350()" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002da350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar1 = (undefined8 *)*plVar3;" (assignment_expression "puVar1 = (undefined8 *)*plVar3" identifier = (cast_expression "(undefined8 *)*plVar3" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) (expression_statement "puVar4 = puVar1 + 0xe;" (assignment_expression "puVar4 = puVar1 + 0xe" identifier = (binary_expression "puVar1 + 0xe" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }" if (parenthesized_expression "((*(byte *)(puVar1 + 10) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar1 + 10) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar1 + 10) & 1)" ( (binary_expression "*(byte *)(puVar1 + 10) & 1" (pointer_expression "*(byte *)(puVar1 + 10)" * (cast_expression "(byte *)(puVar1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 10)" ( (binary_expression "puVar1 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    puVar4 = (undefined8 *)*puVar1;\n  }" { (expression_statement "puVar4 = (undefined8 *)*puVar1;" (assignment_expression "puVar4 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) })) comment (expression_statement "FUN_002d9c90(0);" (call_expression "FUN_002d9c90(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);" (assignment_expression "cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4)" identifier = (call_expression "FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4)" identifier (argument_list "(&stack0x00000000,puVar4[-0xe],puVar4)" ( (pointer_expression "&stack0x00000000" & identifier) , (subscript_expression "puVar4[-0xe]" identifier [ number_literal ]) , identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    /* WARNING: Subroutine does not return */\n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    /* WARNING: Subroutine does not return */\n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }" { (expression_statement "cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);" (assignment_expression "cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" identifier = (call_expression "FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" identifier (argument_list "(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" ( (pointer_expression "&stack0x00000000" & identifier) , (pointer_expression "&PTR_PTR_FUN_00438378" & identifier) , number_literal )))) ;) (if_statement "if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      FUN_002d98d0();\n    }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_002d98d0();\n    }" { comment (expression_statement "FUN_002d98d0();" (call_expression "FUN_002d98d0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar4 = (undefined8 *)FUN_002daaf0(8);" (assignment_expression "puVar4 = (undefined8 *)FUN_002daaf0(8)" identifier = (cast_expression "(undefined8 *)FUN_002daaf0(8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002daaf0(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "*puVar4 = &PTR_FUN_004383e8;" (assignment_expression "*puVar4 = &PTR_FUN_004383e8" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004383e8" & identifier)) ;) comment (expression_statement "FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);" (call_expression "FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0)" identifier (argument_list "(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0)" ( identifier , (pointer_expression "&PTR_PTR_FUN_00438378" & identifier) , identifier ))) ;) })) comment comment (expression_statement "FUN_002d9860();" (call_expression "FUN_002d9860()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void __cxa_call_unexpected_cold_6(void)\n\n{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  long unaff_RBP;\n  _func_void *unaff_R12;\n  uchar *unaff_R13;\n  \n  __cxa_begin_catch();\n  plVar3 = (long *)__cxa_get_globals_fast();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */\n  parse_lsda_header((_Unwind_Context *)0x0,unaff_R13,(lsda_header_info *)&stack0x00000000);\n  cVar2 = check_exception_spec\n                    ((lsda_header_info *)&stack0x00000000,(type_info *)puVar4[-0xe],puVar4,unaff_RBP\n                    );\n  if (cVar2 == '\0') {\n    cVar2 = check_exception_spec\n                      ((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      __cxxabiv1::__terminate(unaff_R12);\n    }\n    puVar4 = (undefined8 *)__cxa_allocate_exception(8);\n    *puVar4 = &PTR__bad_exception_004383e8;\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception);\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */\n  __cxa_rethrow();\n}\n\n" (function_definition "void __cxa_call_unexpected_cold_6(void)\n\n{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  long unaff_RBP;\n  _func_void *unaff_R12;\n  uchar *unaff_R13;\n  \n  __cxa_begin_catch();\n  plVar3 = (long *)__cxa_get_globals_fast();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */\n  parse_lsda_header((_Unwind_Context *)0x0,unaff_R13,(lsda_header_info *)&stack0x00000000);\n  cVar2 = check_exception_spec\n                    ((lsda_header_info *)&stack0x00000000,(type_info *)puVar4[-0xe],puVar4,unaff_RBP\n                    );\n  if (cVar2 == '\0') {\n    cVar2 = check_exception_spec\n                      ((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      __cxxabiv1::__terminate(unaff_R12);\n    }\n    puVar4 = (undefined8 *)__cxa_allocate_exception(8);\n    *puVar4 = &PTR__bad_exception_004383e8;\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception);\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */\n  __cxa_rethrow();\n}" primitive_type (function_declarator "__cxa_call_unexpected_cold_6(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  long unaff_RBP;\n  _func_void *unaff_R12;\n  uchar *unaff_R13;\n  \n  __cxa_begin_catch();\n  plVar3 = (long *)__cxa_get_globals_fast();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */\n  parse_lsda_header((_Unwind_Context *)0x0,unaff_R13,(lsda_header_info *)&stack0x00000000);\n  cVar2 = check_exception_spec\n                    ((lsda_header_info *)&stack0x00000000,(type_info *)puVar4[-0xe],puVar4,unaff_RBP\n                    );\n  if (cVar2 == '\0') {\n    cVar2 = check_exception_spec\n                      ((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      __cxxabiv1::__terminate(unaff_R12);\n    }\n    puVar4 = (undefined8 *)__cxa_allocate_exception(8);\n    *puVar4 = &PTR__bad_exception_004383e8;\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception);\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */\n  __cxa_rethrow();\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "long unaff_RBP;" (sized_type_specifier "long" long) identifier ;) (declaration "_func_void *unaff_R12;" type_identifier (pointer_declarator "*unaff_R12" * identifier) ;) (declaration "uchar *unaff_R13;" type_identifier (pointer_declarator "*unaff_R13" * identifier) ;) (expression_statement "__cxa_begin_catch();" (call_expression "__cxa_begin_catch()" identifier (argument_list "()" ( ))) ;) (expression_statement "plVar3 = (long *)__cxa_get_globals_fast();" (assignment_expression "plVar3 = (long *)__cxa_get_globals_fast()" identifier = (cast_expression "(long *)__cxa_get_globals_fast()" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "__cxa_get_globals_fast()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar1 = (undefined8 *)*plVar3;" (assignment_expression "puVar1 = (undefined8 *)*plVar3" identifier = (cast_expression "(undefined8 *)*plVar3" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) (expression_statement "puVar4 = puVar1 + 0xe;" (assignment_expression "puVar4 = puVar1 + 0xe" identifier = (binary_expression "puVar1 + 0xe" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }" if (parenthesized_expression "((*(byte *)(puVar1 + 10) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar1 + 10) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar1 + 10) & 1)" ( (binary_expression "*(byte *)(puVar1 + 10) & 1" (pointer_expression "*(byte *)(puVar1 + 10)" * (cast_expression "(byte *)(puVar1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 10)" ( (binary_expression "puVar1 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    puVar4 = (undefined8 *)*puVar1;\n  }" { (expression_statement "puVar4 = (undefined8 *)*puVar1;" (assignment_expression "puVar4 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) })) comment (expression_statement "parse_lsda_header((_Unwind_Context *)0x0,unaff_R13,(lsda_header_info *)&stack0x00000000);" (call_expression "parse_lsda_header((_Unwind_Context *)0x0,unaff_R13,(lsda_header_info *)&stack0x00000000)" identifier (argument_list "((_Unwind_Context *)0x0,unaff_R13,(lsda_header_info *)&stack0x00000000)" ( (cast_expression "(_Unwind_Context *)0x0" ( (type_descriptor "_Unwind_Context *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , (cast_expression "(lsda_header_info *)&stack0x00000000" ( (type_descriptor "lsda_header_info *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000000" & identifier)) ))) ;) (expression_statement "cVar2 = check_exception_spec\n                    ((lsda_header_info *)&stack0x00000000,(type_info *)puVar4[-0xe],puVar4,unaff_RBP\n                    );" (assignment_expression "cVar2 = check_exception_spec\n                    ((lsda_header_info *)&stack0x00000000,(type_info *)puVar4[-0xe],puVar4,unaff_RBP\n                    )" identifier = (call_expression "check_exception_spec\n                    ((lsda_header_info *)&stack0x00000000,(type_info *)puVar4[-0xe],puVar4,unaff_RBP\n                    )" identifier (argument_list "((lsda_header_info *)&stack0x00000000,(type_info *)puVar4[-0xe],puVar4,unaff_RBP\n                    )" ( (cast_expression "(lsda_header_info *)&stack0x00000000" ( (type_descriptor "lsda_header_info *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000000" & identifier)) , (cast_expression "(type_info *)puVar4[-0xe]" ( (type_descriptor "type_info *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-0xe]" identifier [ number_literal ])) , identifier , identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    cVar2 = check_exception_spec\n                      ((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      __cxxabiv1::__terminate(unaff_R12);\n    }\n    puVar4 = (undefined8 *)__cxa_allocate_exception(8);\n    *puVar4 = &PTR__bad_exception_004383e8;\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    cVar2 = check_exception_spec\n                      ((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP);\n    if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      __cxxabiv1::__terminate(unaff_R12);\n    }\n    puVar4 = (undefined8 *)__cxa_allocate_exception(8);\n    *puVar4 = &PTR__bad_exception_004383e8;\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception);\n  }" { (expression_statement "cVar2 = check_exception_spec\n                      ((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP);" (assignment_expression "cVar2 = check_exception_spec\n                      ((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP)" identifier = (call_expression "check_exception_spec\n                      ((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP)" identifier (argument_list "((lsda_header_info *)&stack0x00000000,\n                       (type_info *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP)" ( (cast_expression "(lsda_header_info *)&stack0x00000000" ( (type_descriptor "lsda_header_info *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000000" & identifier)) , (cast_expression "(type_info *)&std" ( (type_descriptor "type_info *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&std" & identifier)) (ERROR "::bad_exception::typeinfo" : : identifier : : identifier) , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n                    /* WARNING: Subroutine does not return */\n      __cxxabiv1::__terminate(unaff_R12);\n    }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __cxxabiv1::__terminate(unaff_R12);\n    }" { comment (labeled_statement "__cxxabiv1::__terminate(unaff_R12);" statement_identifier : (ERROR ":" :) (expression_statement "__terminate(unaff_R12);" (call_expression "__terminate(unaff_R12)" identifier (argument_list "(unaff_R12)" ( identifier ))) ;)) })) (expression_statement "puVar4 = (undefined8 *)__cxa_allocate_exception(8);" (assignment_expression "puVar4 = (undefined8 *)__cxa_allocate_exception(8)" identifier = (cast_expression "(undefined8 *)__cxa_allocate_exception(8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "__cxa_allocate_exception(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "*puVar4 = &PTR__bad_exception_004383e8;" (assignment_expression "*puVar4 = &PTR__bad_exception_004383e8" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR__bad_exception_004383e8" & identifier)) ;) comment (expression_statement "__cxa_throw(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception);" (call_expression "__cxa_throw(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception)" identifier (argument_list "(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception)" ( identifier , (ERROR "&std::bad_exception::" (pointer_expression "&std" & identifier) : : identifier : :) identifier , (ERROR "std::bad_exception::" identifier : : identifier : :) (unary_expression "~bad_exception" ~ identifier) ))) ;) })) comment comment (expression_statement "__cxa_rethrow();" (call_expression "__cxa_rethrow()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_0014e5d1(void)\n\n{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  \n  FUN_002da4d0();\n  plVar3 = (long *)FUN_002da350();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    \n  FUN_002d9c90(0);\n  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);\n  if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }\n                    \n                    \n  FUN_002d9860();\n}\n\n" (function_definition "void FUN_0014e5d1(void)\n\n{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  \n  FUN_002da4d0();\n  plVar3 = (long *)FUN_002da350();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    \n  FUN_002d9c90(0);\n  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);\n  if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }\n                    \n                    \n  FUN_002d9860();\n}" primitive_type (function_declarator "FUN_0014e5d1(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  \n  FUN_002da4d0();\n  plVar3 = (long *)FUN_002da350();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    \n  FUN_002d9c90(0);\n  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);\n  if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }\n                    \n                    \n  FUN_002d9860();\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "FUN_002da4d0();" (call_expression "FUN_002da4d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "plVar3 = (long *)FUN_002da350();" (assignment_expression "plVar3 = (long *)FUN_002da350()" identifier = (cast_expression "(long *)FUN_002da350()" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002da350()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar1 = (undefined8 *)*plVar3;" (assignment_expression "puVar1 = (undefined8 *)*plVar3" identifier = (cast_expression "(undefined8 *)*plVar3" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar3" * identifier))) ;) (expression_statement "puVar4 = puVar1 + 0xe;" (assignment_expression "puVar4 = puVar1 + 0xe" identifier = (binary_expression "puVar1 + 0xe" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }" if (parenthesized_expression "((*(byte *)(puVar1 + 10) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar1 + 10) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar1 + 10) & 1)" ( (binary_expression "*(byte *)(puVar1 + 10) & 1" (pointer_expression "*(byte *)(puVar1 + 10)" * (cast_expression "(byte *)(puVar1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 10)" ( (binary_expression "puVar1 + 10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    puVar4 = (undefined8 *)*puVar1;\n  }" { (expression_statement "puVar4 = (undefined8 *)*puVar1;" (assignment_expression "puVar4 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) })) (expression_statement "FUN_002d9c90(0);" (call_expression "FUN_002d9c90(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);" (assignment_expression "cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4)" identifier = (call_expression "FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4)" identifier (argument_list "(&stack0x00000000,puVar4[-0xe],puVar4)" ( (pointer_expression "&stack0x00000000" & identifier) , (subscript_expression "puVar4[-0xe]" identifier [ number_literal ]) , identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }" { (expression_statement "cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);" (assignment_expression "cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" identifier = (call_expression "FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" identifier (argument_list "(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" ( (pointer_expression "&stack0x00000000" & identifier) , (pointer_expression "&PTR_PTR_FUN_00438378" & identifier) , number_literal )))) ;) (if_statement "if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n      FUN_002d98d0();\n    }" { (expression_statement "FUN_002d98d0();" (call_expression "FUN_002d98d0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar4 = (undefined8 *)FUN_002daaf0(8);" (assignment_expression "puVar4 = (undefined8 *)FUN_002daaf0(8)" identifier = (cast_expression "(undefined8 *)FUN_002daaf0(8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002daaf0(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "*puVar4 = &PTR_FUN_004383e8;" (assignment_expression "*puVar4 = &PTR_FUN_004383e8" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_004383e8" & identifier)) ;) (expression_statement "FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);" (call_expression "FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0)" identifier (argument_list "(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0)" ( identifier , (pointer_expression "&PTR_PTR_FUN_00438378" & identifier) , identifier ))) ;) })) (expression_statement "FUN_002d9860();" (call_expression "FUN_002d9860()" 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 (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (subscript_expression IDENT [ LIT ]) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_0014e5d1(void)\n\n{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  \n  FUN_002da4d0();\n  plVar3 = (long *)FUN_002da350();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    \n  FUN_002d9c90(0);\n  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);\n  if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }\n                    \n                    \n  FUN_002d9860();\n}" (primitive_type "void") (function_declarator "FUN_0014e5d1(void)" (identifier "FUN_0014e5d1") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  char cVar2;\n  long *plVar3;\n  undefined8 *puVar4;\n  \n  FUN_002da4d0();\n  plVar3 = (long *)FUN_002da350();\n  puVar1 = (undefined8 *)*plVar3;\n  puVar4 = puVar1 + 0xe;\n  if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }\n                    \n  FUN_002d9c90(0);\n  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);\n  if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }\n                    \n                    \n  FUN_002d9860();\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (expression_statement "FUN_002da4d0();" (call_expression "FUN_002da4d0()" (identifier "FUN_002da4d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "plVar3 = (long *)FUN_002da350();" (assignment_expression "plVar3 = (long *)FUN_002da350()" (identifier "plVar3") (= "=") (cast_expression "(long *)FUN_002da350()" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002da350()" (identifier "FUN_002da350") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar1 = (undefined8 *)*plVar3;" (assignment_expression "puVar1 = (undefined8 *)*plVar3" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)*plVar3" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar3" (* "*") (identifier "plVar3")))) (; ";")) (expression_statement "puVar4 = puVar1 + 0xe;" (assignment_expression "puVar4 = puVar1 + 0xe" (identifier "puVar4") (= "=") (binary_expression "puVar1 + 0xe" (identifier "puVar1") (+ "+") (number_literal "0xe"))) (; ";")) (if_statement "if ((*(byte *)(puVar1 + 10) & 1) != 0) {\n    puVar4 = (undefined8 *)*puVar1;\n  }" (if "if") (parenthesized_expression "((*(byte *)(puVar1 + 10) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(puVar1 + 10) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar1 + 10) & 1)" (( "(") (binary_expression "*(byte *)(puVar1 + 10) & 1" (pointer_expression "*(byte *)(puVar1 + 10)" (* "*") (cast_expression "(byte *)(puVar1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 10)" (( "(") (binary_expression "puVar1 + 10" (identifier "puVar1") (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar4 = (undefined8 *)*puVar1;\n  }" ({ "{") (expression_statement "puVar4 = (undefined8 *)*puVar1;" (assignment_expression "puVar4 = (undefined8 *)*puVar1" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)*puVar1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (} "}"))) (expression_statement "FUN_002d9c90(0);" (call_expression "FUN_002d9c90(0)" (identifier "FUN_002d9c90") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);" (assignment_expression "cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4)" (identifier "cVar2") (= "=") (call_expression "FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4)" (identifier "FUN_002d9bb0") (argument_list "(&stack0x00000000,puVar4[-0xe],puVar4)" (( "(") (pointer_expression "&stack0x00000000" (& "&") (identifier "stack0x00000000")) (, ",") (subscript_expression "puVar4[-0xe]" (identifier "puVar4") ([ "[") (number_literal "-0xe") (] "]")) (, ",") (identifier "puVar4") () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);\n    if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }\n    puVar4 = (undefined8 *)FUN_002daaf0(8);\n    *puVar4 = &PTR_FUN_004383e8;\n                    \n    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);\n  }" ({ "{") (expression_statement "cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);" (assignment_expression "cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" (identifier "cVar2") (= "=") (call_expression "FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" (identifier "FUN_002d9bb0") (argument_list "(&stack0x00000000,&PTR_PTR_FUN_00438378,0)" (( "(") (pointer_expression "&stack0x00000000" (& "&") (identifier "stack0x00000000")) (, ",") (pointer_expression "&PTR_PTR_FUN_00438378" (& "&") (identifier "PTR_PTR_FUN_00438378")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n                    \n      FUN_002d98d0();\n    }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n      FUN_002d98d0();\n    }" ({ "{") (expression_statement "FUN_002d98d0();" (call_expression "FUN_002d98d0()" (identifier "FUN_002d98d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined8 *)FUN_002daaf0(8);" (assignment_expression "puVar4 = (undefined8 *)FUN_002daaf0(8)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)FUN_002daaf0(8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002daaf0(8)" (identifier "FUN_002daaf0") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (expression_statement "*puVar4 = &PTR_FUN_004383e8;" (assignment_expression "*puVar4 = &PTR_FUN_004383e8" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_004383e8" (& "&") (identifier "PTR_FUN_004383e8"))) (; ";")) (expression_statement "FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);" (call_expression "FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0)" (identifier "FUN_002d9810") (argument_list "(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0)" (( "(") (identifier "puVar4") (, ",") (pointer_expression "&PTR_PTR_FUN_00438378" (& "&") (identifier "PTR_PTR_FUN_00438378")) (, ",") (identifier "FUN_002da3a0") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002d9860();" (call_expression "FUN_002d9860()" (identifier "FUN_002d9860") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

void function_1(void)

{
  type_1 *var_3;
  char var_6;
  long *plVar3;
  type_1 *puVar4;
  long unaff_RBP;
  type_2 *unaff_R12;
  type_3 *unaff_R13;
  
  var_1();
  plVar3 = (long *)var_2();
  var_3 = (type_1 *)*plVar3;
  puVar4 = var_3 + 0xe;
  if ((*(type_4 *)(var_3 + 10) & 1) != 0) {
    puVar4 = (type_1 *)*var_3;
  }
                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */
  var_4((type_5 *)0x0,unaff_R13,(type_6 *)&stack0x00000000);
  var_6 = var_5
                    ((type_6 *)&stack0x00000000,(type_7 *)puVar4[-0xe],puVar4,unaff_RBP
                    );
  if (var_6 == '\0') {
    var_6 = var_5
                      ((type_6 *)&stack0x00000000,
                       (type_7 *)&std::bad_exception::typeinfo,(void *)0x0,unaff_RBP);
    if (var_6 == '\0') {
                    /* WARNING: Subroutine does not return */
      __cxxabiv1::var_7(unaff_R12);
    }
    puVar4 = (type_1 *)var_8(8);
    *puVar4 = &PTR__bad_exception_004383e8;
                    /* WARNING: Subroutine does not return */
    var_9(puVar4,&std::bad_exception::typeinfo,std::bad_exception::~bad_exception);
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */
  var_10();
}


(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: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (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))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

void MASKED(void)

{
  undefined8 *puVar1;
  char cVar2;
  long *plVar3;
  undefined8 *puVar4;
  
  FUN_002da4d0();
  plVar3 = (long *)FUN_002da350();
  puVar1 = (undefined8 *)*plVar3;
  puVar4 = puVar1 + 0xe;
  if ((*(byte *)(puVar1 + 10) & 1) != 0) {
    puVar4 = (undefined8 *)*puVar1;
  }
                    /* try { // try from 0014e5f6 to 0014e627 has its CatchHandler @ 0014e639 */
  FUN_002d9c90(0);
  cVar2 = FUN_002d9bb0(&stack0x00000000,puVar4[-0xe],puVar4);
  if (cVar2 == '\0') {
    cVar2 = FUN_002d9bb0(&stack0x00000000,&PTR_PTR_FUN_00438378,0);
    if (cVar2 == '\0') {
                    /* WARNING: Subroutine does not return */
      FUN_002d98d0();
    }
    puVar4 = (undefined8 *)FUN_002daaf0(8);
    *puVar4 = &PTR_FUN_004383e8;
                    /* WARNING: Subroutine does not return */
    FUN_002d9810(puVar4,&PTR_PTR_FUN_00438378,FUN_002da3a0);
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0014e64e to 0014e67c has its CatchHandler @ 0014e639 */
  FUN_002d9860();
}

