
/* DWARF original prototype: void visit_children_for_decls(Gdb_index_info_reader * this, Dwarf_die *
   parent) */

void __thiscall
gold::Gdb_index_info_reader::visit_children_for_decls(Gdb_index_info_reader *this,Dwarf_die *parent)

{
  off_t die_offset;
  Dwarf_die die;
  
  __x86_get_pc_thunk_di();
  die_offset = Dwarf_die::child_offset(parent);
  if (die_offset != 0) {
    do {
      Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);
      if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {
        if (die.attributes_.
            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>
            ._M_impl._M_start == (pointer)0x0) {
          return;
        }
        operator_delete(die.attributes_.
                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>
                        ._M_impl._M_start);
        return;
      }
                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */
      visit_die_for_decls(this,&die,parent);
      die_offset = Dwarf_die::sibling_offset(&die);
      if (die.attributes_.
          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>
          ._M_impl._M_start != (pointer)0x0) {
        operator_delete(die.attributes_.
                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>
                        ._M_impl._M_start);
      }
    } while (die_offset != 0);
  }
  return;
}



void FUN_00089af0(undefined4 param_1,undefined4 param_2)

{
  longlong lVar1;
  undefined1 local_84 [40];
  int *local_5c;
  int local_58;
  
  FUN_00058c4a();
  lVar1 = FUN_001747b0(param_2);
  if (lVar1 != 0) {
    do {
      FUN_001766b0(local_84,param_1,lVar1,param_2);
      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {
        if (local_58 == 0) {
          return;
        }
        FUN_001ac470(local_58);
        return;
      }
                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */
      FUN_00089a30(param_1,local_84,param_2);
      lVar1 = FUN_00176860(local_84);
      if (local_58 != 0) {
        FUN_001ac470(local_58);
      }
    } while (lVar1 != 0);
  }
  return;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x00058c4a
ADD EDI,0x2b5507
PUSH ESI
PUSH EBX
SUB ESP,0x98
PUSH dword ptr [EBP + 0xc]
MOV EBX,EDI
CALL 0x001747b0
ADD ESP,0x10
MOV EBX,EDX
OR EBX,EAX
JZ 0x00089b8b
LEA ESI,[EBP + -0x80]
SUB ESP,0xc
PUSH dword ptr [EBP + 0xc]
MOV EBX,EDI
PUSH EDX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
PUSH ESI
CALL 0x001766b0
MOV EAX,dword ptr [EBP + -0x58]
ADD ESP,0x20
TEST EAX,EAX
JZ 0x00089b98
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00089b98
SUB ESP,0x4
PUSH dword ptr [EBP + 0xc]
PUSH ESI
PUSH dword ptr [EBP + 0x8]
CALL 0x00089a30
MOV dword ptr [ESP],ESI
CALL 0x00176860
MOV ECX,dword ptr [EBP + -0x54]
ADD ESP,0x10
TEST ECX,ECX
JZ 0x00089b85
SUB ESP,0xc
MOV dword ptr [EBP + 0xffffff70],EAX
PUSH ECX
MOV dword ptr [EBP + 0xffffff74],EDX
CALL 0x001ac470
MOV EAX,dword ptr [EBP + 0xffffff70]
MOV EDX,dword ptr [EBP + 0xffffff74]
ADD ESP,0x10
MOV EBX,EDX
OR EBX,EAX
JNZ 0x00089b1d
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + -0x54]
TEST EAX,EAX
JZ 0x00089b8b
SUB ESP,0xc
MOV EBX,EDI
PUSH EAX
CALL 0x001ac470
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void FUN_00089af0(undefined4 param_1,undefined4 param_2)\n\n{\n  longlong lVar1;\n  undefined1 local_84 [40];\n  int *local_5c;\n  int local_58;\n  \n  FUN_00058c4a();\n  lVar1 = FUN_001747b0(param_2);\n  if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00089af0(undefined4 param_1,undefined4 param_2)\n\n{\n  longlong lVar1;\n  undefined1 local_84 [40];\n  int *local_5c;\n  int local_58;\n  \n  FUN_00058c4a();\n  lVar1 = FUN_001747b0(param_2);\n  if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00089af0(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  undefined1 local_84 [40];\n  int *local_5c;\n  int local_58;\n  \n  FUN_00058c4a();\n  lVar1 = FUN_001747b0(param_2);\n  if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined1 local_84 [40];" type_identifier (array_declarator "local_84 [40]" identifier [ number_literal ]) ;) (declaration "int *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "int local_58;" primitive_type identifier ;) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar1 = FUN_001747b0(param_2);" (assignment_expression "lVar1 = FUN_001747b0(param_2)" identifier = (call_expression "FUN_001747b0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }" { (do_statement "do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);" do (compound_statement "{\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    }" { (expression_statement "FUN_001766b0(local_84,param_1,lVar1,param_2);" (call_expression "FUN_001766b0(local_84,param_1,lVar1,param_2)" identifier (argument_list "(local_84,param_1,lVar1,param_2)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }" if (parenthesized_expression "((local_5c == (int *)0x0) || (*local_5c == 0))" ( (binary_expression "(local_5c == (int *)0x0) || (*local_5c == 0)" (parenthesized_expression "(local_5c == (int *)0x0)" ( (binary_expression "local_5c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*local_5c == 0)" ( (binary_expression "*local_5c == 0" (pointer_expression "*local_5c" * identifier) == number_literal) ))) )) (compound_statement "{\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }" { (if_statement "if (local_58 == 0) {\n          return;\n        }" if (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "FUN_001ac470(local_58);" (call_expression "FUN_001ac470(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_00089a30(param_1,local_84,param_2);" (call_expression "FUN_00089a30(param_1,local_84,param_2)" identifier (argument_list "(param_1,local_84,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "lVar1 = FUN_00176860(local_84);" (assignment_expression "lVar1 = FUN_00176860(local_84)" identifier = (call_expression "FUN_00176860(local_84)" identifier (argument_list "(local_84)" ( identifier )))) ;) (if_statement "if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_001ac470(local_58);\n      }" { (expression_statement "FUN_001ac470(local_58);" (call_expression "FUN_001ac470(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) }) while (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void visit_children_for_decls(Gdb_index_info_reader * this, Dwarf_die *\n   parent) */\n\nvoid __thiscall\ngold::Gdb_index_info_reader::visit_children_for_decls(Gdb_index_info_reader *this,Dwarf_die *parent)\n\n{\n  off_t die_offset;\n  Dwarf_die die;\n  \n  __x86_get_pc_thunk_di();\n  die_offset = Dwarf_die::child_offset(parent);\n  if (die_offset != 0) {\n    do {\n      Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);\n      if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      visit_die_for_decls(this,&die,parent);\n      die_offset = Dwarf_die::sibling_offset(&die);\n      if (die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0) {\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }\n    } while (die_offset != 0);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Gdb_index_info_reader::visit_children_for_decls(Gdb_index_info_reader *this,Dwarf_die *parent)\n\n{\n  off_t die_offset;\n  Dwarf_die die;\n  \n  __x86_get_pc_thunk_di();\n  die_offset = Dwarf_die::child_offset(parent);\n  if (die_offset != 0) {\n    do {\n      Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);\n      if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      visit_die_for_decls(this,&die,parent);\n      die_offset = Dwarf_die::sibling_offset(&die);\n      if (die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0) {\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }\n    } while (die_offset != 0);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) (function_declarator "visit_children_for_decls(Gdb_index_info_reader *this,Dwarf_die *parent)" identifier (parameter_list "(Gdb_index_info_reader *this,Dwarf_die *parent)" ( (parameter_declaration "Gdb_index_info_reader *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Dwarf_die *parent" type_identifier (pointer_declarator "*parent" * identifier)) ))) (compound_statement "{\n  off_t die_offset;\n  Dwarf_die die;\n  \n  __x86_get_pc_thunk_di();\n  die_offset = Dwarf_die::child_offset(parent);\n  if (die_offset != 0) {\n    do {\n      Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);\n      if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      visit_die_for_decls(this,&die,parent);\n      die_offset = Dwarf_die::sibling_offset(&die);\n      if (die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0) {\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }\n    } while (die_offset != 0);\n  }\n  return;\n}" { (declaration "off_t die_offset;" type_identifier identifier ;) (declaration "Dwarf_die die;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (ERROR "die_offset = Dwarf_die::" (assignment_expression "die_offset = Dwarf_die" identifier = identifier) : :) (expression_statement "child_offset(parent);" (call_expression "child_offset(parent)" identifier (argument_list "(parent)" ( identifier ))) ;) (if_statement "if (die_offset != 0) {\n    do {\n      Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);\n      if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      visit_die_for_decls(this,&die,parent);\n      die_offset = Dwarf_die::sibling_offset(&die);\n      if (die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0) {\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }\n    } while (die_offset != 0);\n  }" if (parenthesized_expression "(die_offset != 0)" ( (binary_expression "die_offset != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);\n      if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      visit_die_for_decls(this,&die,parent);\n      die_offset = Dwarf_die::sibling_offset(&die);\n      if (die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0) {\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }\n    } while (die_offset != 0);\n  }" { (do_statement "do {\n      Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);\n      if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      visit_die_for_decls(this,&die,parent);\n      die_offset = Dwarf_die::sibling_offset(&die);\n      if (die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0) {\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }\n    } while (die_offset != 0);" do (compound_statement "{\n      Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);\n      if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }\n                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */\n      visit_die_for_decls(this,&die,parent);\n      die_offset = Dwarf_die::sibling_offset(&die);\n      if (die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0) {\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }\n    }" { (labeled_statement "Dwarf_die::Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);" statement_identifier : (ERROR ":" :) (expression_statement "Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent);" (call_expression "Dwarf_die(&die,&this->super_Dwarf_info_reader,die_offset,parent)" identifier (argument_list "(&die,&this->super_Dwarf_info_reader,die_offset,parent)" ( (pointer_expression "&die" & identifier) , (pointer_expression "&this->super_Dwarf_info_reader" & (field_expression "this->super_Dwarf_info_reader" identifier -> field_identifier)) , identifier , identifier ))) ;)) (if_statement "if ((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)) {\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }" if (parenthesized_expression "((die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0))" ( (binary_expression "(die.abbrev_code_ == (Abbrev_code *)0x0) || ((die.abbrev_code_)->tag == 0)" (parenthesized_expression "(die.abbrev_code_ == (Abbrev_code *)0x0)" ( (binary_expression "die.abbrev_code_ == (Abbrev_code *)0x0" (field_expression "die.abbrev_code_" identifier . field_identifier) == (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((die.abbrev_code_)->tag == 0)" ( (binary_expression "(die.abbrev_code_)->tag == 0" (field_expression "(die.abbrev_code_)->tag" (parenthesized_expression "(die.abbrev_code_)" ( (field_expression "die.abbrev_code_" identifier . field_identifier) )) -> field_identifier) == number_literal) ))) )) (compound_statement "{\n        if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n        return;\n      }" { (if_statement "if (die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0) {\n          return;\n        }" if (parenthesized_expression "(die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0)" ( (ERROR "die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::" (comma_expression "die.attributes_.\n            super__Vector_base<gold::Dwarf_die::Attribute_value,_std" (binary_expression "die.attributes_.\n            super__Vector_base<gold" (field_expression "die.attributes_.\n            super__Vector_base" (field_expression "die.attributes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Dwarf_die::Attribute_value" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Attribute_value>_>\n            ._M_impl._M_start == (pointer)0x0" (field_expression "Attribute_value>_>\n            ._M_impl._M_start" (field_expression "Attribute_value>_>\n            ._M_impl" (binary_expression "Attribute_value>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) == (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);" (call_expression "operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start)" identifier (argument_list "(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start)" ( (binary_expression "die.attributes_.\n                        super__Vector_base<gold" (field_expression "die.attributes_.\n                        super__Vector_base" (field_expression "die.attributes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Dwarf_die::Attribute_value" : : identifier : : identifier) , (ERROR "_std::allocator<gold::Dwarf_die::" identifier : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Attribute_value>_>\n                        ._M_impl._M_start" (field_expression "Attribute_value>_>\n                        ._M_impl" (binary_expression "Attribute_value>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "visit_die_for_decls(this,&die,parent);" (call_expression "visit_die_for_decls(this,&die,parent)" identifier (argument_list "(this,&die,parent)" ( identifier , (pointer_expression "&die" & identifier) , identifier ))) ;) (ERROR "die_offset = Dwarf_die::" (assignment_expression "die_offset = Dwarf_die" identifier = identifier) : :) (expression_statement "sibling_offset(&die);" (call_expression "sibling_offset(&die)" identifier (argument_list "(&die)" ( (pointer_expression "&die" & identifier) ))) ;) (if_statement "if (die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0) {\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }" if (parenthesized_expression "(die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0)" ( (ERROR "die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::" (comma_expression "die.attributes_.\n          super__Vector_base<gold::Dwarf_die::Attribute_value,_std" (binary_expression "die.attributes_.\n          super__Vector_base<gold" (field_expression "die.attributes_.\n          super__Vector_base" (field_expression "die.attributes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Dwarf_die::Attribute_value" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Attribute_value>_>\n          ._M_impl._M_start != (pointer)0x0" (field_expression "Attribute_value>_>\n          ._M_impl._M_start" (field_expression "Attribute_value>_>\n          ._M_impl" (binary_expression "Attribute_value>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n        operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);\n      }" { (expression_statement "operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start);" (call_expression "operator_delete(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start)" identifier (argument_list "(die.attributes_.\n                        super__Vector_base<gold::Dwarf_die::Attribute_value,_std::allocator<gold::Dwarf_die::Attribute_value>_>\n                        ._M_impl._M_start)" ( (binary_expression "die.attributes_.\n                        super__Vector_base<gold" (field_expression "die.attributes_.\n                        super__Vector_base" (field_expression "die.attributes_" identifier . field_identifier) . field_identifier) < identifier) (ERROR "::Dwarf_die::Attribute_value" : : identifier : : identifier) , (ERROR "_std::allocator<gold::Dwarf_die::" identifier : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Attribute_value>_>\n                        ._M_impl._M_start" (field_expression "Attribute_value>_>\n                        ._M_impl" (binary_expression "Attribute_value>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ))) ;) })) }) while (parenthesized_expression "(die_offset != 0)" ( (binary_expression "die_offset != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00089af0(undefined4 param_1,undefined4 param_2)\n\n{\n  longlong lVar1;\n  undefined1 local_84 [40];\n  int *local_5c;\n  int local_58;\n  \n  FUN_00058c4a();\n  lVar1 = FUN_001747b0(param_2);\n  if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00089af0(undefined4 param_1,undefined4 param_2)\n\n{\n  longlong lVar1;\n  undefined1 local_84 [40];\n  int *local_5c;\n  int local_58;\n  \n  FUN_00058c4a();\n  lVar1 = FUN_001747b0(param_2);\n  if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00089af0(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  undefined1 local_84 [40];\n  int *local_5c;\n  int local_58;\n  \n  FUN_00058c4a();\n  lVar1 = FUN_001747b0(param_2);\n  if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined1 local_84 [40];" type_identifier (array_declarator "local_84 [40]" identifier [ number_literal ]) ;) (declaration "int *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "int local_58;" primitive_type identifier ;) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" identifier (argument_list "()" ( ))) ;) (expression_statement "lVar1 = FUN_001747b0(param_2);" (assignment_expression "lVar1 = FUN_001747b0(param_2)" identifier = (call_expression "FUN_001747b0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }" { (do_statement "do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);" do (compound_statement "{\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    }" { (expression_statement "FUN_001766b0(local_84,param_1,lVar1,param_2);" (call_expression "FUN_001766b0(local_84,param_1,lVar1,param_2)" identifier (argument_list "(local_84,param_1,lVar1,param_2)" ( identifier , identifier , identifier , identifier ))) ;) (if_statement "if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }" if (parenthesized_expression "((local_5c == (int *)0x0) || (*local_5c == 0))" ( (binary_expression "(local_5c == (int *)0x0) || (*local_5c == 0)" (parenthesized_expression "(local_5c == (int *)0x0)" ( (binary_expression "local_5c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*local_5c == 0)" ( (binary_expression "*local_5c == 0" (pointer_expression "*local_5c" * identifier) == number_literal) ))) )) (compound_statement "{\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }" { (if_statement "if (local_58 == 0) {\n          return;\n        }" if (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "FUN_001ac470(local_58);" (call_expression "FUN_001ac470(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00089a30(param_1,local_84,param_2);" (call_expression "FUN_00089a30(param_1,local_84,param_2)" identifier (argument_list "(param_1,local_84,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "lVar1 = FUN_00176860(local_84);" (assignment_expression "lVar1 = FUN_00176860(local_84)" identifier = (call_expression "FUN_00176860(local_84)" identifier (argument_list "(local_84)" ( identifier )))) ;) (if_statement "if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }" if (parenthesized_expression "(local_58 != 0)" ( (binary_expression "local_58 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_001ac470(local_58);\n      }" { (expression_statement "FUN_001ac470(local_58);" (call_expression "FUN_001ac470(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) }) while (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00089af0(undefined4 param_1,undefined4 param_2)\n\n{\n  longlong lVar1;\n  undefined1 local_84 [40];\n  int *local_5c;\n  int local_58;\n  \n  FUN_00058c4a();\n  lVar1 = FUN_001747b0(param_2);\n  if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00089af0(undefined4 param_1,undefined4 param_2)" (identifier "FUN_00089af0") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  longlong lVar1;\n  undefined1 local_84 [40];\n  int *local_5c;\n  int local_58;\n  \n  FUN_00058c4a();\n  lVar1 = FUN_001747b0(param_2);\n  if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }\n  return;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "undefined1 local_84 [40];" (type_identifier "undefined1") (array_declarator "local_84 [40]" (identifier "local_84") ([ "[") (number_literal "40") (] "]")) (; ";")) (declaration "int *local_5c;" (primitive_type "int") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c")) (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (expression_statement "FUN_00058c4a();" (call_expression "FUN_00058c4a()" (identifier "FUN_00058c4a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "lVar1 = FUN_001747b0(param_2);" (assignment_expression "lVar1 = FUN_001747b0(param_2)" (identifier "lVar1") (= "=") (call_expression "FUN_001747b0(param_2)" (identifier "FUN_001747b0") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (lVar1 != 0) {\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }" (if "if") (parenthesized_expression "(lVar1 != 0)" (( "(") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);\n  }" ({ "{") (do_statement "do {\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    } while (lVar1 != 0);" (do "do") (compound_statement "{\n      FUN_001766b0(local_84,param_1,lVar1,param_2);\n      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }\n                    \n      FUN_00089a30(param_1,local_84,param_2);\n      lVar1 = FUN_00176860(local_84);\n      if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }\n    }" ({ "{") (expression_statement "FUN_001766b0(local_84,param_1,lVar1,param_2);" (call_expression "FUN_001766b0(local_84,param_1,lVar1,param_2)" (identifier "FUN_001766b0") (argument_list "(local_84,param_1,lVar1,param_2)" (( "(") (identifier "local_84") (, ",") (identifier "param_1") (, ",") (identifier "lVar1") (, ",") (identifier "param_2") () ")"))) (; ";")) (if_statement "if ((local_5c == (int *)0x0) || (*local_5c == 0)) {\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }" (if "if") (parenthesized_expression "((local_5c == (int *)0x0) || (*local_5c == 0))" (( "(") (binary_expression "(local_5c == (int *)0x0) || (*local_5c == 0)" (parenthesized_expression "(local_5c == (int *)0x0)" (( "(") (binary_expression "local_5c == (int *)0x0" (identifier "local_5c") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*local_5c == 0)" (( "(") (binary_expression "*local_5c == 0" (pointer_expression "*local_5c" (* "*") (identifier "local_5c")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        if (local_58 == 0) {\n          return;\n        }\n        FUN_001ac470(local_58);\n        return;\n      }" ({ "{") (if_statement "if (local_58 == 0) {\n          return;\n        }" (if "if") (parenthesized_expression "(local_58 == 0)" (( "(") (binary_expression "local_58 == 0" (identifier "local_58") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_001ac470(local_58);" (call_expression "FUN_001ac470(local_58)" (identifier "FUN_001ac470") (argument_list "(local_58)" (( "(") (identifier "local_58") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00089a30(param_1,local_84,param_2);" (call_expression "FUN_00089a30(param_1,local_84,param_2)" (identifier "FUN_00089a30") (argument_list "(param_1,local_84,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "local_84") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "lVar1 = FUN_00176860(local_84);" (assignment_expression "lVar1 = FUN_00176860(local_84)" (identifier "lVar1") (= "=") (call_expression "FUN_00176860(local_84)" (identifier "FUN_00176860") (argument_list "(local_84)" (( "(") (identifier "local_84") () ")")))) (; ";")) (if_statement "if (local_58 != 0) {\n        FUN_001ac470(local_58);\n      }" (if "if") (parenthesized_expression "(local_58 != 0)" (( "(") (binary_expression "local_58 != 0" (identifier "local_58") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_001ac470(local_58);\n      }" ({ "{") (expression_statement "FUN_001ac470(local_58);" (call_expression "FUN_001ac470(local_58)" (identifier "FUN_001ac470") (argument_list "(local_58)" (( "(") (identifier "local_58") () ")"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(lVar1 != 0)" (( "(") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void visit_children_for_decls(Gdb_index_info_reader * this, Dwarf_die *
   parent) */

void __thiscall
var_7::type_1::function_1(type_1 *this,type_2 *parent)

{
  type_3 var_3;
  type_2 die;
  
  var_1();
  var_3 = type_2::var_2(parent);
  if (var_3 != 0) {
    do {
      Dwarf_die::type_2(&die,&this->super_Dwarf_info_reader,var_3,parent);
      if ((die.abbrev_code_ == (type_4 *)0x0) || ((die.abbrev_code_)->tag == 0)) {
        if (die.attributes_.
            super__Vector_base<var_7::type_2::var_4,_std::allocator<var_7::type_2::var_4>var_5>
            ._M_impl._M_start == (type_5)0x0) {
          return;
        }
        var_6(die.attributes_.
                        super__Vector_base<var_7::type_2::var_4,_std::allocator<var_7::type_2::var_4>var_5>
                        ._M_impl._M_start);
        return;
      }
                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */
      var_8(this,&die,parent);
      var_3 = type_2::var_9(&die);
      if (die.attributes_.
          super__Vector_base<var_7::type_2::var_4,_std::allocator<var_7::type_2::var_4>var_5>
          ._M_impl._M_start != (type_5)0x0) {
        var_6(die.attributes_.
                        super__Vector_base<var_7::type_2::var_4,_std::allocator<var_7::type_2::var_4>var_5>
                        ._M_impl._M_start);
      }
    } while (var_3 != 0);
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (return_statement))))

void MASKED(undefined4 param_1,undefined4 param_2)

{
  longlong lVar1;
  undefined1 local_84 [40];
  int *local_5c;
  int local_58;
  
  FUN_00058c4a();
  lVar1 = FUN_001747b0(param_2);
  if (lVar1 != 0) {
    do {
      FUN_001766b0(local_84,param_1,lVar1,param_2);
      if ((local_5c == (int *)0x0) || (*local_5c == 0)) {
        if (local_58 == 0) {
          return;
        }
        FUN_001ac470(local_58);
        return;
      }
                    /* try { // try from 00089b4a to 00089b56 has its CatchHandler @ 00089bb5 */
      FUN_00089a30(param_1,local_84,param_2);
      lVar1 = FUN_00176860(local_84);
      if (local_58 != 0) {
        FUN_001ac470(local_58);
      }
    } while (lVar1 != 0);
  }
  return;
}

