
/* DWARF original prototype: void clear_declarations(Gdb_index_info_reader * this) */

void __thiscall gold::Gdb_index_info_reader::clear_declarations(Gdb_index_info_reader *this)

{
  _Hash_node_base *p_Var1;
  
  for (p_Var1 = (this->declarations_)._M_h._M_before_begin._M_nxt; p_Var1 != (_Hash_node_base *)0x0;
      p_Var1 = p_Var1->_M_nxt) {
    while ((p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||
           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0))) {
      p_Var1 = p_Var1->_M_nxt;
      if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;
    }
    operator_delete__(p_Var1[3]._M_nxt);
  }
LAB_002b7105:
  std::
  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
           *)&this->declarations_);
  return;
}



void FUN_002b70c0(long param_1)

{
  long *plVar1;
  
  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {
    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {
      plVar1 = (long *)*plVar1;
      if (plVar1 == (long *)0x0) goto LAB_002b7105;
    }
    thunk_FUN_002dac70();
  }
LAB_002b7105:
  FUN_002b8d60(param_1 + 0x950);
  return;
}


PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [RDI + 0x960]
TEST RBX,RBX
JNZ 0x002b70e8
JMP 0x002b7105
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JZ 0x002b7105
CMP qword ptr [RBX + 0x10],-0x1
JNZ 0x002b70e0
MOV RDI,qword ptr [RBX + 0x18]
TEST RDI,RDI
JZ 0x002b70e0
CALL 0x002dac40
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x002b70e8
ADD RSP,0x8
LEA RDI,[RBP + 0x950]
POP RBX
POP RBP
JMP 0x002b8d60
(translation_unit "void FUN_002b70c0(long param_1)\n\n{\n  long *plVar1;\n  \n  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }\nLAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);\n  return;\n}\n\n" (function_definition "void FUN_002b70c0(long param_1)\n\n{\n  long *plVar1;\n  \n  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }\nLAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);\n  return;\n}" primitive_type (function_declarator "FUN_002b70c0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long *plVar1;\n  \n  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }\nLAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (for_statement "for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }" for ( (assignment_expression "plVar1 = *(long **)(param_1 + 0x960)" identifier = (pointer_expression "*(long **)(param_1 + 0x960)" * (cast_expression "(long **)(param_1 + 0x960)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x960)" ( (binary_expression "param_1 + 0x960" identifier + number_literal) ))))) ; (binary_expression "plVar1 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ) (compound_statement "{\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }" { (while_statement "while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }" while (parenthesized_expression "((plVar1[2] != -1 || (plVar1[3] == 0)))" ( (parenthesized_expression "(plVar1[2] != -1 || (plVar1[3] == 0))" ( (binary_expression "plVar1[2] != -1 || (plVar1[3] == 0)" (binary_expression "plVar1[2] != -1" (subscript_expression "plVar1[2]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(plVar1[3] == 0)" ( (binary_expression "plVar1[3] == 0" (subscript_expression "plVar1[3]" identifier [ number_literal ]) == number_literal) ))) )) )) (compound_statement "{\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }" { (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ;) (if_statement "if (plVar1 == (long *)0x0) goto LAB_002b7105;" if (parenthesized_expression "(plVar1 == (long *)0x0)" ( (binary_expression "plVar1 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002b7105;" goto statement_identifier ;)) })) (expression_statement "thunk_FUN_002dac70();" (call_expression "thunk_FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);" statement_identifier : (expression_statement "FUN_002b8d60(param_1 + 0x950);" (call_expression "FUN_002b8d60(param_1 + 0x950)" identifier (argument_list "(param_1 + 0x950)" ( (binary_expression "param_1 + 0x950" identifier + number_literal) ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void clear_declarations(Gdb_index_info_reader * this) */\n\nvoid __thiscall gold::Gdb_index_info_reader::clear_declarations(Gdb_index_info_reader *this)\n\n{\n  _Hash_node_base *p_Var1;\n  \n  for (p_Var1 = (this->declarations_)._M_h._M_before_begin._M_nxt; p_Var1 != (_Hash_node_base *)0x0;\n      p_Var1 = p_Var1->_M_nxt) {\n    while ((p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0))) {\n      p_Var1 = p_Var1->_M_nxt;\n      if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;\n    }\n    operator_delete__(p_Var1[3]._M_nxt);\n  }\nLAB_002b7105:\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_);\n  return;\n}\n\n" comment (function_definition "void __thiscall gold::Gdb_index_info_reader::clear_declarations(Gdb_index_info_reader *this)\n\n{\n  _Hash_node_base *p_Var1;\n  \n  for (p_Var1 = (this->declarations_)._M_h._M_before_begin._M_nxt; p_Var1 != (_Hash_node_base *)0x0;\n      p_Var1 = p_Var1->_M_nxt) {\n    while ((p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0))) {\n      p_Var1 = p_Var1->_M_nxt;\n      if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;\n    }\n    operator_delete__(p_Var1[3]._M_nxt);\n  }\nLAB_002b7105:\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) (function_declarator "clear_declarations(Gdb_index_info_reader *this)" identifier (parameter_list "(Gdb_index_info_reader *this)" ( (parameter_declaration "Gdb_index_info_reader *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  _Hash_node_base *p_Var1;\n  \n  for (p_Var1 = (this->declarations_)._M_h._M_before_begin._M_nxt; p_Var1 != (_Hash_node_base *)0x0;\n      p_Var1 = p_Var1->_M_nxt) {\n    while ((p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0))) {\n      p_Var1 = p_Var1->_M_nxt;\n      if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;\n    }\n    operator_delete__(p_Var1[3]._M_nxt);\n  }\nLAB_002b7105:\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_);\n  return;\n}" { (declaration "_Hash_node_base *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (for_statement "for (p_Var1 = (this->declarations_)._M_h._M_before_begin._M_nxt; p_Var1 != (_Hash_node_base *)0x0;\n      p_Var1 = p_Var1->_M_nxt) {\n    while ((p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0))) {\n      p_Var1 = p_Var1->_M_nxt;\n      if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;\n    }\n    operator_delete__(p_Var1[3]._M_nxt);\n  }" for ( (assignment_expression "p_Var1 = (this->declarations_)._M_h._M_before_begin._M_nxt" identifier = (field_expression "(this->declarations_)._M_h._M_before_begin._M_nxt" (field_expression "(this->declarations_)._M_h._M_before_begin" (field_expression "(this->declarations_)._M_h" (parenthesized_expression "(this->declarations_)" ( (field_expression "this->declarations_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ; (binary_expression "p_Var1 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "p_Var1 = p_Var1->_M_nxt" identifier = (field_expression "p_Var1->_M_nxt" identifier -> field_identifier)) ) (compound_statement "{\n    while ((p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0))) {\n      p_Var1 = p_Var1->_M_nxt;\n      if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;\n    }\n    operator_delete__(p_Var1[3]._M_nxt);\n  }" { (while_statement "while ((p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0))) {\n      p_Var1 = p_Var1->_M_nxt;\n      if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;\n    }" while (parenthesized_expression "((p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0)))" ( (parenthesized_expression "(p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0))" ( (binary_expression "p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff ||\n           (p_Var1[3]._M_nxt == (_Hash_node_base *)0x0)" (binary_expression "p_Var1[2]._M_nxt != (_Hash_node_base *)0xffffffffffffffff" (field_expression "p_Var1[2]._M_nxt" (subscript_expression "p_Var1[2]" identifier [ number_literal ]) . field_identifier) != (cast_expression "(_Hash_node_base *)0xffffffffffffffff" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(p_Var1[3]._M_nxt == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var1[3]._M_nxt == (_Hash_node_base *)0x0" (field_expression "p_Var1[3]._M_nxt" (subscript_expression "p_Var1[3]" identifier [ number_literal ]) . field_identifier) == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) )) (compound_statement "{\n      p_Var1 = p_Var1->_M_nxt;\n      if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;\n    }" { (expression_statement "p_Var1 = p_Var1->_M_nxt;" (assignment_expression "p_Var1 = p_Var1->_M_nxt" identifier = (field_expression "p_Var1->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if (p_Var1 == (_Hash_node_base *)0x0) goto LAB_002b7105;" if (parenthesized_expression "(p_Var1 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var1 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002b7105;" goto statement_identifier ;)) })) (expression_statement "operator_delete__(p_Var1[3]._M_nxt);" (call_expression "operator_delete__(p_Var1[3]._M_nxt)" identifier (argument_list "(p_Var1[3]._M_nxt)" ( (field_expression "p_Var1[3]._M_nxt" (subscript_expression "p_Var1[3]" identifier [ number_literal ]) . field_identifier) ))) ;) })) (labeled_statement "LAB_002b7105:\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_);" statement_identifier (ERROR ":\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail:" : (comma_expression "std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std" identifier (ERROR "::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>" : : (comma_expression "_Hashtable<long_int,_std" (binary_expression "_Hashtable<long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>,_std" identifier (ERROR "::Declaration_pair>" : : identifier >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>_>,_std" identifier (ERROR "::Declaration_pair>_>" : : (binary_expression "Declaration_pair>_" identifier > identifier) >) , identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<long_int>,_std" identifier (ERROR "::_Select1st,_std::equal_to<long_int>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<long_int" identifier < identifier) >) , identifier) : : (binary_expression "hash<long_int" identifier < identifier) >) , identifier) : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier :) : (expression_statement "_Hashtable_traits<false,_false,_true>_>\n  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_);" (comma_expression "_Hashtable_traits<false,_false,_true>_>\n  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_)" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_)" identifier , (binary_expression "_true>_>\n  ::clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_)" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "clear((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_)" identifier (argument_list "((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_)" ( (binary_expression "(_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)&this->declarations_" (parenthesized_expression "(_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n           *)" ( (ERROR "_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<long_int,_std" (binary_expression "_Hashtable<long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : identifier : : (binary_expression "Declaration_pair>,_std" identifier > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : identifier : : (binary_expression "Declaration_pair>_>,_std" (binary_expression "Declaration_pair>_" identifier > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<long_int>,_std" (binary_expression "equal_to<long_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<long_int>,_std" (binary_expression "hash<long_int" identifier < identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<false,_false,_true>_>\n           *" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n           *" identifier , (binary_expression "_true>_>\n           *" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*" * identifier)))) )) & (field_expression "this->declarations_" identifier -> field_identifier)) )))))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002b70c0(long param_1)\n\n{\n  long *plVar1;\n  \n  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }\nLAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);\n  return;\n}\n\n" (function_definition "void FUN_002b70c0(long param_1)\n\n{\n  long *plVar1;\n  \n  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }\nLAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);\n  return;\n}" primitive_type (function_declarator "FUN_002b70c0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long *plVar1;\n  \n  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }\nLAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (for_statement "for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }" for ( (assignment_expression "plVar1 = *(long **)(param_1 + 0x960)" identifier = (pointer_expression "*(long **)(param_1 + 0x960)" * (cast_expression "(long **)(param_1 + 0x960)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x960)" ( (binary_expression "param_1 + 0x960" identifier + number_literal) ))))) ; (binary_expression "plVar1 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ) (compound_statement "{\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }" { (while_statement "while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }" while (parenthesized_expression "((plVar1[2] != -1 || (plVar1[3] == 0)))" ( (parenthesized_expression "(plVar1[2] != -1 || (plVar1[3] == 0))" ( (binary_expression "plVar1[2] != -1 || (plVar1[3] == 0)" (binary_expression "plVar1[2] != -1" (subscript_expression "plVar1[2]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(plVar1[3] == 0)" ( (binary_expression "plVar1[3] == 0" (subscript_expression "plVar1[3]" identifier [ number_literal ]) == number_literal) ))) )) )) (compound_statement "{\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }" { (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ;) (if_statement "if (plVar1 == (long *)0x0) goto LAB_002b7105;" if (parenthesized_expression "(plVar1 == (long *)0x0)" ( (binary_expression "plVar1 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002b7105;" goto statement_identifier ;)) })) (expression_statement "thunk_FUN_002dac70();" (call_expression "thunk_FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);" statement_identifier : (expression_statement "FUN_002b8d60(param_1 + 0x950);" (call_expression "FUN_002b8d60(param_1 + 0x950)" identifier (argument_list "(param_1 + 0x950)" ( (binary_expression "param_1 + 0x950" identifier + number_literal) ))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;)) (return_statement return ;) })))
(function_definition "void FUN_002b70c0(long param_1)\n\n{\n  long *plVar1;\n  \n  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }\nLAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002b70c0(long param_1)" (identifier "FUN_002b70c0") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  long *plVar1;\n  \n  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }\nLAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);\n  return;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (for_statement "for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }" (for "for") (( "(") (assignment_expression "plVar1 = *(long **)(param_1 + 0x960)" (identifier "plVar1") (= "=") (pointer_expression "*(long **)(param_1 + 0x960)" (* "*") (cast_expression "(long **)(param_1 + 0x960)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x960)" (( "(") (binary_expression "param_1 + 0x960" (identifier "param_1") (+ "+") (number_literal "0x960")) () ")"))))) (; ";") (binary_expression "plVar1 != (long *)0x0" (identifier "plVar1") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "plVar1 = (long *)*plVar1" (identifier "plVar1") (= "=") (cast_expression "(long *)*plVar1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar1" (* "*") (identifier "plVar1")))) () ")") (compound_statement "{\n    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }\n    thunk_FUN_002dac70();\n  }" ({ "{") (while_statement "while ((plVar1[2] != -1 || (plVar1[3] == 0))) {\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }" (while "while") (parenthesized_expression "((plVar1[2] != -1 || (plVar1[3] == 0)))" (( "(") (parenthesized_expression "(plVar1[2] != -1 || (plVar1[3] == 0))" (( "(") (binary_expression "plVar1[2] != -1 || (plVar1[3] == 0)" (binary_expression "plVar1[2] != -1" (subscript_expression "plVar1[2]" (identifier "plVar1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "-1")) (|| "||") (parenthesized_expression "(plVar1[3] == 0)" (( "(") (binary_expression "plVar1[3] == 0" (subscript_expression "plVar1[3]" (identifier "plVar1") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")")) (compound_statement "{\n      plVar1 = (long *)*plVar1;\n      if (plVar1 == (long *)0x0) goto LAB_002b7105;\n    }" ({ "{") (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" (identifier "plVar1") (= "=") (cast_expression "(long *)*plVar1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar1" (* "*") (identifier "plVar1")))) (; ";")) (if_statement "if (plVar1 == (long *)0x0) goto LAB_002b7105;" (if "if") (parenthesized_expression "(plVar1 == (long *)0x0)" (( "(") (binary_expression "plVar1 == (long *)0x0" (identifier "plVar1") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_002b7105;" (goto "goto") (statement_identifier "LAB_002b7105") (; ";"))) (} "}"))) (expression_statement "thunk_FUN_002dac70();" (call_expression "thunk_FUN_002dac70()" (identifier "thunk_FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_002b7105:\n  FUN_002b8d60(param_1 + 0x950);" (statement_identifier "LAB_002b7105") (: ":") (expression_statement "FUN_002b8d60(param_1 + 0x950);" (call_expression "FUN_002b8d60(param_1 + 0x950)" (identifier "FUN_002b8d60") (argument_list "(param_1 + 0x950)" (( "(") (binary_expression "param_1 + 0x950" (identifier "param_1") (+ "+") (number_literal "0x950")) () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void clear_declarations(Gdb_index_info_reader * this) */

void __thiscall gold::type_1::function_1(type_1 *this)

{
  type_2 *var_1;
  
  for (var_1 = (this->declarations_)._M_h._M_before_begin._M_nxt; var_1 != (type_2 *)0x0;
      var_1 = var_1->_M_nxt) {
    while ((var_1[2]._M_nxt != (type_2 *)0xffffffffffffffff ||
           (var_1[3]._M_nxt == (type_2 *)0x0))) {
      var_1 = var_1->_M_nxt;
      if (var_1 == (type_2 *)0x0) goto LAB_002b7105;
    }
    var_2(var_1[3]._M_nxt);
  }
LAB_002b7105:
  std::
  _Hashtable<long_int,_std::pair<long_int_const,_gold::type_1::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::type_1::Declaration_pair>var_5>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_3<false,_false,var_4>var_5>
  ::var_6((_Hashtable<long_int,_std::pair<long_int_const,_gold::type_1::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::type_1::Declaration_pair>var_5>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_3<false,_false,var_4>var_5>
           *)&this->declarations_);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (for_statement initializer: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) condition: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) body: (compound_statement (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (return_statement))))

void MASKED(long param_1)

{
  long *plVar1;
  
  for (plVar1 = *(long **)(param_1 + 0x960); plVar1 != (long *)0x0; plVar1 = (long *)*plVar1) {
    while ((plVar1[2] != -1 || (plVar1[3] == 0))) {
      plVar1 = (long *)*plVar1;
      if (plVar1 == (long *)0x0) goto LAB_002b7105;
    }
    thunk_FUN_002dac70();
  }
LAB_002b7105:
  FUN_002b8d60(param_1 + 0x950);
  return;
}

