
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: bool do_local_has_got_offset(Sized_relobj<64,_true> * this, uint
   symndx, uint got_type, uint64_t addend) */

bool __thiscall
gold::Sized_relobj<64,_true>::do_local_has_got_offset
          (Sized_relobj<64,_true> *this,uint symndx,uint got_type,uint64_t addend)

{
  uint *puVar1;
  Local_got_entry_key key;
  int local_10 [2];
  
  std::
  _Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
  ::find((_Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
          *)local_10,(key_type *)&this->local_got_offsets_);
  if ((local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0)) {
    return false;
  }
  do {
    if (got_type == *puVar1) {
      puVar1 = (uint *)(uint)(puVar1[1] != 0xffffffff);
      break;
    }
    puVar1 = (uint *)puVar1[2];
  } while (puVar1 != (uint *)0x0);
  return SUB41(puVar1,0);
}



bool FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)

{
  int *piVar1;
  int local_10 [2];
  
  std::
  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>
  ::find((Local_got_entry_key *)local_10);
  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {
    do {
      if (param_3 == *piVar1) {
        return piVar1[1] != -1;
      }
      piVar1 = (int *)piVar1[2];
    } while (piVar1 != (int *)0x0);
    return false;
  }
  return false;
}


lui gp,0x38
addiu gp,gp,0x1750
addu gp,gp,t9
addiu sp,sp,-0x38
lw t9,-0x7458(gp)
lw v0,0x48(sp)
lw v1,0x4c(sp)
sw s0,0x30(sp)
or s0,a2,zero
sw a1,0x18(sp)
addiu a2,sp,0x18
addiu a1,a0,0x68
sw gp,0x10(sp)
addiu a0,sp,0x28
sw v0,0x20(sp)
sw ra,0x34(sp)
bal 0x001476c0
_sw v1,0x24(sp)
lw v0,0x28(sp)
beq v0,zero,0x00147b88
_lw ra,0x34(sp)
lw v0,0x18(v0)
bne v0,zero,0x00147b64
_nop
b 0x00147b8c
_or v0,zero,zero
lw v0,0x8(v0)
beq v0,zero,0x00147b7c
_nop
lw v1,0x0(v0)
bne s0,v1,0x00147b58
_lw ra,0x34(sp)
lw v0,0x4(v0)
addiu v0,v0,0x1
sltu v0,zero,v0
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x38
or v0,zero,zero
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x38
(translation_unit "bool FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int *piVar1;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);\n  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }\n  return false;\n}\n\n" (function_definition "bool FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int *piVar1;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);\n  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }\n  return false;\n}" primitive_type (function_declarator "FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);\n  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }\n  return false;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int local_10 [2];" primitive_type (array_declarator "local_10 [2]" identifier [ number_literal ]) ;) (labeled_statement "std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std:" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (comma_expression "Local_got_entry_key,std" identifier , identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (comma_expression "Local_got_entry_key_const,gold" identifier , identifier) : : (comma_expression "Got_offset_list*>,std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (comma_expression "Local_got_entry_key_const,gold" identifier , identifier) : : (comma_expression "Got_offset_list*>>,std" identifier (ERROR "*>>" * >>) , identifier) :) : (labeled_statement "__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::_Select1st,gold:" : : (comma_expression "_Select1st,gold" identifier , identifier) :) : (labeled_statement "Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::equal_to,gold:" : : (comma_expression "equal_to,gold" identifier , identifier) :) : (labeled_statement "Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::hash,std:" : : (comma_expression "hash,std" identifier , identifier) :) : (labeled_statement "__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::_Mod_range_hashing,std:" : : (comma_expression "_Mod_range_hashing,std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::_Default_ranged_hash,std:" : : (comma_expression "_Default_ranged_hash,std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::_Prime_rehash_policy,std:" : : (comma_expression "_Prime_rehash_policy,std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (comma_expression "_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "false,true>>\n  ::find((Local_got_entry_key *)local_10)" false , (binary_expression "true>>\n  ::find((Local_got_entry_key *)local_10)" true >> (ERROR "::" : :) (call_expression "find((Local_got_entry_key *)local_10)" identifier (argument_list "((Local_got_entry_key *)local_10)" ( (cast_expression "(Local_got_entry_key *)local_10" ( (type_descriptor "Local_got_entry_key *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))))) ;))))))))) (if_statement "if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }" if (parenthesized_expression "((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0))" ( (binary_expression "(local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)" (parenthesized_expression "(local_10[0] != 0)" ( (binary_expression "local_10[0] != 0" (subscript_expression "local_10[0]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)" ( (comma_expression "piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0" (assignment_expression "piVar1 = *(int **)(local_10[0] + 0x18)" identifier = (pointer_expression "*(int **)(local_10[0] + 0x18)" * (cast_expression "(int **)(local_10[0] + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_10[0] + 0x18)" ( (binary_expression "local_10[0] + 0x18" (subscript_expression "local_10[0]" identifier [ number_literal ]) + number_literal) ))))) , (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }" { (do_statement "do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);" do (compound_statement "{\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    }" { (if_statement "if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }" if (parenthesized_expression "(param_3 == *piVar1)" ( (binary_expression "param_3 == *piVar1" identifier == (pointer_expression "*piVar1" * identifier)) )) (compound_statement "{\n        return piVar1[1] != -1;\n      }" { (return_statement "return piVar1[1] != -1;" return (binary_expression "piVar1[1] != -1" (subscript_expression "piVar1[1]" identifier [ number_literal ]) != number_literal) ;) })) (expression_statement "piVar1 = (int *)piVar1[2];" (assignment_expression "piVar1 = (int *)piVar1[2]" identifier = (cast_expression "(int *)piVar1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (return_statement "return false;" return false ;) })) (return_statement "return false;" return false ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: bool do_local_has_got_offset(Sized_relobj<64,_true> * this, uint\n   symndx, uint got_type, uint64_t addend) */\n\nbool __thiscall\ngold::Sized_relobj<64,_true>::do_local_has_got_offset\n          (Sized_relobj<64,_true> *this,uint symndx,uint got_type,uint64_t addend)\n\n{\n  uint *puVar1;\n  Local_got_entry_key key;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::find((_Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_);\n  if ((local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0)) {\n    return false;\n  }\n  do {\n    if (got_type == *puVar1) {\n      puVar1 = (uint *)(uint)(puVar1[1] != 0xffffffff);\n      break;\n    }\n    puVar1 = (uint *)puVar1[2];\n  } while (puVar1 != (uint *)0x0);\n  return SUB41(puVar1,0);\n}\n\n" comment comment comment (declaration "bool __thiscall\ngold::Sized_relobj<64,_true>::do_local_has_got_offset\n          (Sized_relobj<64,_true> *this,uint symndx,uint got_type,uint64_t addend)\n\n{\n  uint *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::do_local_has_got_offset\n          (Sized_relobj<64,_true> *this,uint symndx,uint got_type,uint64_t addend)\n\n{\n  uint" identifier > : : (function_declarator "do_local_has_got_offset\n          (Sized_relobj<64,_true> *this,uint symndx,uint got_type,uint64_t addend)" identifier (parameter_list "(Sized_relobj<64,_true> *this,uint symndx,uint got_type,uint64_t addend)" ( (parameter_declaration "Sized_relobj" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint symndx" type_identifier identifier) , (parameter_declaration "uint got_type" type_identifier identifier) , (parameter_declaration "uint64_t addend" primitive_type identifier) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "Local_got_entry_key key;" type_identifier identifier ;) (declaration "int local_10 [2];" primitive_type (array_declarator "local_10 [2]" identifier [ number_literal ]) ;) (ERROR "std::\n  _Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::find((_Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_);\n  if ((local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0)) {\n    return false;\n  }\n  do {\n    if (got_type == *puVar1) {\n      puVar1 = (uint *)(uint)(puVar1[1] != 0xffffffff);\n      break;\n    }\n    puVar1 = (uint *)puVar1[2];\n  } while (puVar1 != (uint *)0x0);\n  return SUB41(puVar1,0);\n}" (binary_expression "std::\n  _Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std" (binary_expression "std::\n  _Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_" identifier (ERROR "::\n  _Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (comma_expression "Local_got_entry_key,_std" identifier , identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (comma_expression "Local_got_entry_key,_gold" identifier , identifier) : : (comma_expression "Got_offset_list*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (comma_expression "Local_got_entry_key,_gold" identifier , identifier) : : identifier *) > identifier) > (ERROR "," ,) identifier) : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier < true , identifier , (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) identifier ( (assignment_expression "(_Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_);\n  if ((local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0)) {\n    return false;\n  }\n  do {\n    if (got_type == *puVar1) {\n      puVar1 = (uint *)(uint)(puVar1[1] != 0xffffffff)" (call_expression "(_Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_);\n  if ((local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0)) {\n    return false;\n  }\n  do {\n    if (got_type == *puVar1)" (call_expression "(_Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_);\n  if ((local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0))" (parenthesized_expression "(_Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_)" ( (ERROR "_Hashtable<gold::Local_got_entry_key,_std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::Local_got_entry_key,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::Local_got_entry_key::equal_to,_gold::Local_got_entry_key::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (binary_expression "_Hashtable<gold" identifier < identifier) : : (comma_expression "Local_got_entry_key,_std" identifier , identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (comma_expression "Local_got_entry_key,_gold" identifier , identifier) : : (comma_expression "Got_offset_list*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (comma_expression "Local_got_entry_key,_gold" identifier , identifier) : : (binary_expression "Got_offset_list*>_>,_std" (binary_expression "Got_offset_list*>_" identifier * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_gold" identifier , identifier) : : identifier : : (comma_expression "equal_to,_gold" identifier , identifier) : : identifier : : (comma_expression "hash,_std" identifier , 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<true,_false,_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_" identifier , (comma_expression "_true>_>\n          *)local_10,(key_type *)&this->local_got_offsets_" (binary_expression "_true>_>\n          *)local_10" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)local_10" * (ERROR ")" )) identifier)) , (cast_expression "(key_type *)&this->local_got_offsets_" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->local_got_offsets_" & (field_expression "this->local_got_offsets_" identifier -> field_identifier)))))) )) (ERROR ";\n  if" ; if) (argument_list "((local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0))" ( (binary_expression "(local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0)" (parenthesized_expression "(local_10[0] == 0)" ( (binary_expression "local_10[0] == 0" (subscript_expression "local_10[0]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0)" ( (comma_expression "puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0" (assignment_expression "puVar1 = *(uint **)(local_10[0] + 0x18)" identifier = (pointer_expression "*(uint **)(local_10[0] + 0x18)" * (cast_expression "(uint **)(local_10[0] + 0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_10[0] + 0x18)" ( (binary_expression "local_10[0] + 0x18" (subscript_expression "local_10[0]" identifier [ number_literal ]) + number_literal) ))))) , (binary_expression "puVar1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) ))) (ERROR "{\n    return false;\n  }\n  do {\n    if" { return false ; } do { if) (argument_list "(got_type == *puVar1)" ( (binary_expression "got_type == *puVar1" identifier == (pointer_expression "*puVar1" * identifier)) ))) (ERROR "{\n      puVar1" { identifier) = (cast_expression "(uint *)(uint)(puVar1[1] != 0xffffffff)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(puVar1[1] != 0xffffffff)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar1[1] != 0xffffffff)" ( (binary_expression "puVar1[1] != 0xffffffff" (subscript_expression "puVar1[1]" identifier [ number_literal ]) != number_literal) ))))) (ERROR ";\n      break;\n    }\n    puVar1 =" ; break ; } identifier =) ( (ERROR "uint *)puVar1[2];\n  } while (puVar1 != (uint *)0x0);\n  return" (call_expression "uint *)puVar1[2];\n  } while (puVar1 != (uint *)0x0)" (binary_expression "uint *)puVar1[2]" identifier * (ERROR ")" )) (subscript_expression "puVar1[2]" identifier [ number_literal ])) (ERROR ";\n  } while" ; } while) (argument_list "(puVar1 != (uint *)0x0)" ( (binary_expression "puVar1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) ; return) (call_expression "SUB41(puVar1,0)" identifier (argument_list "(puVar1,0)" ( identifier , number_literal ))) ; }))
(translation_unit "bool FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int *piVar1;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);\n  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }\n  return false;\n}\n\n" (function_definition "bool FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int *piVar1;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);\n  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }\n  return false;\n}" primitive_type (function_declarator "FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);\n  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }\n  return false;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int local_10 [2];" primitive_type (array_declarator "local_10 [2]" identifier [ number_literal ]) ;) (labeled_statement "std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std:" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (comma_expression "Local_got_entry_key,std" identifier , identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (comma_expression "Local_got_entry_key_const,gold" identifier , identifier) : : (comma_expression "Got_offset_list*>,std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (comma_expression "Local_got_entry_key_const,gold" identifier , identifier) : : (comma_expression "Got_offset_list*>>,std" identifier (ERROR "*>>" * >>) , identifier) :) : (labeled_statement "__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::_Select1st,gold:" : : (comma_expression "_Select1st,gold" identifier , identifier) :) : (labeled_statement "Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::equal_to,gold:" : : (comma_expression "equal_to,gold" identifier , identifier) :) : (labeled_statement "Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::hash,std:" : : (comma_expression "hash,std" identifier , identifier) :) : (labeled_statement "__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::_Mod_range_hashing,std:" : : (comma_expression "_Mod_range_hashing,std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::_Default_ranged_hash,std:" : : (comma_expression "_Default_ranged_hash,std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier (ERROR "::_Prime_rehash_policy,std:" : : (comma_expression "_Prime_rehash_policy,std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (comma_expression "_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "false,true>>\n  ::find((Local_got_entry_key *)local_10)" false , (binary_expression "true>>\n  ::find((Local_got_entry_key *)local_10)" true >> (ERROR "::" : :) (call_expression "find((Local_got_entry_key *)local_10)" identifier (argument_list "((Local_got_entry_key *)local_10)" ( (cast_expression "(Local_got_entry_key *)local_10" ( (type_descriptor "Local_got_entry_key *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))))) ;))))))))) (if_statement "if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }" if (parenthesized_expression "((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0))" ( (binary_expression "(local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)" (parenthesized_expression "(local_10[0] != 0)" ( (binary_expression "local_10[0] != 0" (subscript_expression "local_10[0]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)" ( (comma_expression "piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0" (assignment_expression "piVar1 = *(int **)(local_10[0] + 0x18)" identifier = (pointer_expression "*(int **)(local_10[0] + 0x18)" * (cast_expression "(int **)(local_10[0] + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_10[0] + 0x18)" ( (binary_expression "local_10[0] + 0x18" (subscript_expression "local_10[0]" identifier [ number_literal ]) + number_literal) ))))) , (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }" { (do_statement "do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);" do (compound_statement "{\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    }" { (if_statement "if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }" if (parenthesized_expression "(param_3 == *piVar1)" ( (binary_expression "param_3 == *piVar1" identifier == (pointer_expression "*piVar1" * identifier)) )) (compound_statement "{\n        return piVar1[1] != -1;\n      }" { (return_statement "return piVar1[1] != -1;" return (binary_expression "piVar1[1] != -1" (subscript_expression "piVar1[1]" identifier [ number_literal ]) != number_literal) ;) })) (expression_statement "piVar1 = (int *)piVar1[2];" (assignment_expression "piVar1 = (int *)piVar1[2]" identifier = (cast_expression "(int *)piVar1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (return_statement "return false;" return false ;) })) (return_statement "return false;" return false ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (labeled_statement statement_identifier (ERROR : : (binary_expression IDENT < IDENT) : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) : : (comma_expression IDENT , IDENT) : : (comma_expression IDENT (ERROR * >) , IDENT) : : (binary_expression IDENT < IDENT) : : (binary_expression IDENT < IDENT) : : (comma_expression IDENT , IDENT) : : (comma_expression IDENT (ERROR * >>) , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier : (ERROR :) (expression_statement (comma_expression (binary_expression IDENT < BOOL) , (comma_expression BOOL , (binary_expression BOOL >> (ERROR : :) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))))) ;))))))))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (return_statement return BOOL ;) })) (return_statement return BOOL ;) })))
(function_definition "bool FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int *piVar1;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);\n  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }\n  return false;\n}" (primitive_type "bool") (function_declarator "FUN_00147af0(undefined4 param_1,undefined4 param_2,int param_3)" (identifier "FUN_00147af0") (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int local_10 [2];\n  \n  std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);\n  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }\n  return false;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int local_10 [2];" (primitive_type "int") (array_declarator "local_10 [2]" (identifier "local_10") ([ "[") (number_literal "2") (] "]")) (; ";")) (labeled_statement "std::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (statement_identifier "std") (ERROR "::\n  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std:" (: ":") (: ":") (binary_expression "_Hashtable<gold" (identifier "_Hashtable") (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Local_got_entry_key,std" (identifier "Local_got_entry_key") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "pair<gold" (identifier "pair") (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Local_got_entry_key_const,gold" (identifier "Local_got_entry_key_const") (, ",") (identifier "gold")) (: ":") (: ":") (comma_expression "Got_offset_list*>,std" (identifier "Got_offset_list") (ERROR "*>" (* "*") (> ">")) (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<std" (identifier "allocator") (< "<") (identifier "std")) (: ":") (: ":") (binary_expression "pair<gold" (identifier "pair") (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Local_got_entry_key_const,gold" (identifier "Local_got_entry_key_const") (, ",") (identifier "gold")) (: ":") (: ":") (comma_expression "Got_offset_list*>>,std" (identifier "Got_offset_list") (ERROR "*>>" (* "*") (>> ">>")) (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (statement_identifier "__detail") (ERROR "::_Select1st,gold:" (: ":") (: ":") (comma_expression "_Select1st,gold" (identifier "_Select1st") (, ",") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (statement_identifier "Local_got_entry_key") (ERROR "::equal_to,gold:" (: ":") (: ":") (comma_expression "equal_to,gold" (identifier "equal_to") (, ",") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (statement_identifier "Local_got_entry_key") (ERROR "::hash,std:" (: ":") (: ":") (comma_expression "hash,std" (identifier "hash") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (statement_identifier "__detail") (ERROR "::_Mod_range_hashing,std:" (: ":") (: ":") (comma_expression "_Mod_range_hashing,std" (identifier "_Mod_range_hashing") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (statement_identifier "__detail") (ERROR "::_Default_ranged_hash,std:" (: ":") (: ":") (comma_expression "_Default_ranged_hash,std" (identifier "_Default_ranged_hash") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (statement_identifier "__detail") (ERROR "::_Prime_rehash_policy,std:" (: ":") (: ":") (comma_expression "_Prime_rehash_policy,std" (identifier "_Prime_rehash_policy") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (statement_identifier "__detail") (: ":") (ERROR ":" (: ":")) (expression_statement "_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10);" (comma_expression "_Hashtable_traits<true,false,true>>\n  ::find((Local_got_entry_key *)local_10)" (binary_expression "_Hashtable_traits<true" (identifier "_Hashtable_traits") (< "<") (true "true")) (, ",") (comma_expression "false,true>>\n  ::find((Local_got_entry_key *)local_10)" (false "false") (, ",") (binary_expression "true>>\n  ::find((Local_got_entry_key *)local_10)" (true "true") (>> ">>") (ERROR "::" (: ":") (: ":")) (call_expression "find((Local_got_entry_key *)local_10)" (identifier "find") (argument_list "((Local_got_entry_key *)local_10)" (( "(") (cast_expression "(Local_got_entry_key *)local_10" (( "(") (type_descriptor "Local_got_entry_key *" (type_identifier "Local_got_entry_key") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_10")) () ")")))))) (; ";")))))))))) (if_statement "if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }" (if "if") (parenthesized_expression "((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0))" (( "(") (binary_expression "(local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)" (parenthesized_expression "(local_10[0] != 0)" (( "(") (binary_expression "local_10[0] != 0" (subscript_expression "local_10[0]" (identifier "local_10") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)" (( "(") (comma_expression "piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0" (assignment_expression "piVar1 = *(int **)(local_10[0] + 0x18)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(local_10[0] + 0x18)" (* "*") (cast_expression "(int **)(local_10[0] + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_10[0] + 0x18)" (( "(") (binary_expression "local_10[0] + 0x18" (subscript_expression "local_10[0]" (identifier "local_10") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "0x18")) () ")"))))) (, ",") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);\n    return false;\n  }" ({ "{") (do_statement "do {\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    } while (piVar1 != (int *)0x0);" (do "do") (compound_statement "{\n      if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }\n      piVar1 = (int *)piVar1[2];\n    }" ({ "{") (if_statement "if (param_3 == *piVar1) {\n        return piVar1[1] != -1;\n      }" (if "if") (parenthesized_expression "(param_3 == *piVar1)" (( "(") (binary_expression "param_3 == *piVar1" (identifier "param_3") (== "==") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) () ")")) (compound_statement "{\n        return piVar1[1] != -1;\n      }" ({ "{") (return_statement "return piVar1[1] != -1;" (return "return") (binary_expression "piVar1[1] != -1" (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "-1")) (; ";")) (} "}"))) (expression_statement "piVar1 = (int *)piVar1[2];" (assignment_expression "piVar1 = (int *)piVar1[2]" (identifier "piVar1") (= "=") (cast_expression "(int *)piVar1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar1 != (int *)0x0)" (( "(") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: bool do_local_has_got_offset(Sized_relobj<64,_true> * this, uint
   symndx, uint got_type, uint64_t addend) */

bool __thiscall
gold::Sized_relobj<64,_true>::do_local_has_got_offset
          (Sized_relobj<64,_true> *this,uint symndx,uint got_type,uint64_t addend)

{
  uint *puVar1;
  type_1 key;
  int local_10 [2];
  
  std::
  _Hashtable<gold::type_1,_std::pair<const_gold::type_1,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::type_1,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::type_1::equal_to,_gold::type_1::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
  ::find((_Hashtable<gold::type_1,_std::pair<const_gold::type_1,_gold::Got_offset_list*>,_std::allocator<std::pair<const_gold::type_1,_gold::Got_offset_list*>_>,_std::__detail::_Select1st,_gold::type_1::equal_to,_gold::type_1::hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
          *)local_10,(key_type *)&this->local_got_offsets_);
  if ((local_10[0] == 0) || (puVar1 = *(uint **)(local_10[0] + 0x18), puVar1 == (uint *)0x0)) {
    return false;
  }
  do {
    if (got_type == *puVar1) {
      puVar1 = (uint *)(uint)(puVar1[1] != 0xffffffff);
      break;
    }
    puVar1 = (uint *)puVar1[2];
  } while (puVar1 != (uint *)0x0);
  return SUB41(puVar1,0);
}


(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)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (labeled_statement label: (statement_identifier) (ERROR (binary_expression left: (identifier) right: (identifier)) (comma_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier)) (comma_expression left: (identifier) right: (identifier)) (comma_expression left: (identifier) (ERROR) right: (identifier)) (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier)) (comma_expression left: (identifier) right: (identifier)) (comma_expression left: (identifier) (ERROR) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR (comma_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (comma_expression left: (binary_expression left: (identifier) right: (true)) right: (comma_expression left: (false) right: (binary_expression left: (true) (ERROR) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (return_statement (false)))) (return_statement (false)))))

bool MASKED(undefined4 param_1,undefined4 param_2,int param_3)

{
  int *piVar1;
  int local_10 [2];
  
  std::
  _Hashtable<gold::Local_got_entry_key,std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>,std::allocator<std::pair<gold::Local_got_entry_key_const,gold::Got_offset_list*>>,std::__detail::_Select1st,gold::Local_got_entry_key::equal_to,gold::Local_got_entry_key::hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>
  ::find((Local_got_entry_key *)local_10);
  if ((local_10[0] != 0) && (piVar1 = *(int **)(local_10[0] + 0x18), piVar1 != (int *)0x0)) {
    do {
      if (param_3 == *piVar1) {
        return piVar1[1] != -1;
      }
      piVar1 = (int *)piVar1[2];
    } while (piVar1 != (int *)0x0);
    return false;
  }
  return false;
}

