
/* DWARF original prototype: iterator
   _M_insert_unique_node(_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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, size_type __bkt, __hash_code __code, __node_type * __node, size_type __n_elt) */

iterator __thiscall
std::
_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
::_M_insert_unique_node
          (_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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,size_type __bkt,__hash_code __code,__node_type *__node,size_type __n_elt)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int in_t9;
  pair<bool,_unsigned_int> __do_rehash;
  __rehash_state local_28 [4];
  
  local_28[0] = *(__rehash_state *)(__bkt + 0x14);
  (**(code **)(in_t9 + 0x344358))
            (&__do_rehash,__bkt + 0x10,*(undefined4 *)(__bkt + 4),*(undefined4 *)(__bkt + 0xc));
  if (__do_rehash.first != false) {
                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */
    _M_rehash((_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
               *)__bkt,__do_rehash.second,local_28);
    if (*(uint *)(__bkt + 4) == 0) {
      trap(7);
    }
    __code = (uint)__node % *(uint *)(__bkt + 4);
  }
  iVar3 = __code * 4;
  if (*(undefined4 **)(*(int *)__bkt + iVar3) != (undefined4 *)0x0) {
    uVar1 = **(undefined4 **)(*(int *)__bkt + iVar3);
    this->_M_buckets = (__bucket_type *)__n_elt;
    *(undefined4 *)__n_elt = uVar1;
    **(size_type **)(*(int *)__bkt + iVar3) = __n_elt;
    *(int *)(__bkt + 0xc) = *(int *)(__bkt + 0xc) + 1;
    return (iterator)
           (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>
            )this;
  }
  *(undefined4 *)__n_elt = *(undefined4 *)(__bkt + 8);
  *(size_type *)(__bkt + 8) = __n_elt;
  if (*(int *)__n_elt == 0) {
    iVar2 = *(int *)__bkt;
  }
  else {
    iVar2 = *(int *)__bkt;
    if (*(uint *)(__bkt + 4) == 0) {
      trap(7);
    }
    *(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4) = __n_elt;
  }
  *(size_type *)(iVar2 + iVar3) = __bkt + 8;
  iVar3 = *(int *)(__bkt + 0xc);
  this->_M_buckets = (__bucket_type *)__n_elt;
  *(int *)(__bkt + 0xc) = iVar3 + 1;
  return (iterator)
         (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>
          )this;
}



/* std::_Hashtable<long long, std::pair<long long const,
   gold::Gdb_index_info_reader::Declaration_pair>, std::allocator<std::pair<long long const,
   gold::Gdb_index_info_reader::Declaration_pair> >, std::__detail::_Select1st, std::equal_to<long
   long>, std::hash<long long>, std::__detail::_Mod_range_hashing,
   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
   std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned int,
   unsigned int, std::__detail::_Hash_node<std::pair<long long const,
   gold::Gdb_index_info_reader::Declaration_pair>, false>*, unsigned int) */

uint std::
     _Hashtable<long_long,std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>,std::allocator<std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>>,std::__detail::_Select1st,std::equal_to<long_long>,std::hash<long_long>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>
     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)

{
  int iVar1;
  int iVar2;
  int in_t9;
  int *in_stack_00000010;
  char local_30 [4];
  uint *local_2c;
  undefined4 local_28;
  
  local_28 = *(undefined4 *)(param_2 + 0x14);
  (**(code **)(in_t9 + 0x344358))
            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc));
  if (local_30[0] != '\0') {
                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */
    _M_rehash(param_2,local_2c);
    if (*(uint *)(param_2 + 4) == 0) {
      trap(7);
    }
    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));
  }
  iVar2 = (int)param_3 * 4;
  if (*(int **)(*(int *)param_2 + iVar2) != (int *)0x0) {
    iVar1 = **(int **)(*(int *)param_2 + iVar2);
    *(int **)param_1 = in_stack_00000010;
    *in_stack_00000010 = iVar1;
    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;
    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
    return param_1;
  }
  *in_stack_00000010 = *(int *)(param_2 + 8);
  *(int **)(param_2 + 8) = in_stack_00000010;
  if (*in_stack_00000010 == 0) {
    iVar1 = *(int *)param_2;
  }
  else {
    iVar1 = *(int *)param_2;
    if (*(uint *)(param_2 + 4) == 0) {
      trap(7);
    }
    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =
         in_stack_00000010;
  }
  *(uint *)(iVar1 + iVar2) = param_2 + 8;
  iVar2 = *(int *)(param_2 + 0xc);
  *(int **)param_1 = in_stack_00000010;
  *(int *)(param_2 + 0xc) = iVar2 + 1;
  return param_1;
}


lui gp,0x35
addiu gp,gp,-0x4530
addu gp,gp,t9
addiu sp,sp,-0x50
lw v0,0x14(a1)
lw t9,-0x7778(gp)
lw v1,0x64(sp)
sw s4,0x48(sp)
or s4,a3,zero
sw s1,0x3c(sp)
or s1,a2,zero
sw s3,0x44(sp)
or s3,a0,zero
sw s0,0x38(sp)
addiu a0,sp,0x20
sw gp,0x18(sp)
or s0,a1,zero
sw s2,0x40(sp)
addiu a1,a1,0x10
sw v0,0x28(sp)
sw ra,0x4c(sp)
lw a3,-0x4(a1)
lw a2,-0xc(a1)
lw s2,0x60(sp)
jalr t9
_sw v1,0x10(sp)
lbu v0,0x20(sp)
beq v0,zero,0x0017d808
_lw gp,0x18(sp)
lw a1,0x24(sp)
addiu a2,sp,0x28
lw t9,-0x59ec(gp)
bal 0x0017d608
_or a0,s0,zero
lw a2,0x4(s0)
teq a2,zero
divu s4,a2
mfhi s1
lw v0,0x0(s0)
sll a2,s1,0x2
addu v0,v0,a2
lw v0,0x0(v0)
beq v0,zero,0x0017d86c
_nop
lw v0,0x0(v0)
sw s2,0x0(s3)
sw v0,0x0(s2)
lw v0,0x0(s0)
lw ra,0x4c(sp)
lw s4,0x48(sp)
addu a2,v0,a2
lw s1,0x3c(sp)
lw v0,0x0(a2)
sw s2,0x0(v0)
lw v0,0xc(s0)
lw s2,0x40(sp)
addiu v0,v0,0x1
sw v0,0xc(s0)
or v0,s3,zero
lw s3,0x44(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x50
lw v0,0x8(s0)
sw v0,0x0(s2)
sw s2,0x8(s0)
lw v0,0x0(s2)
beq v0,zero,0x0017d8e8
_nop
lw a0,0xc(v0)
lw v0,0x4(s0)
lw v1,0x0(s0)
teq v0,zero
divu a0,v0
mfhi v0
sll v0,v0,0x2
addu v0,v1,v0
sw s2,0x0(v0)
addu a2,v1,a2
lw ra,0x4c(sp)
addiu v0,s0,0x8
lw s4,0x48(sp)
lw s1,0x3c(sp)
sw v0,0x0(a2)
lw v0,0xc(s0)
sw s2,0x0(s3)
lw s2,0x40(sp)
addiu v0,v0,0x1
sw v0,0xc(s0)
or v0,s3,zero
lw s3,0x44(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x50
b 0x0017d8a8
_lw v1,0x0(s0)
(translation_unit "/* std::_Hashtable<long long, std::pair<long long const,\n   gold::Gdb_index_info_reader::Declaration_pair>, std::allocator<std::pair<long long const,\n   gold::Gdb_index_info_reader::Declaration_pair> >, std::__detail::_Select1st, std::equal_to<long\n   long>, std::hash<long long>, std::__detail::_Mod_range_hashing,\n   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,\n   std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned int,\n   unsigned int, std::__detail::_Hash_node<std::pair<long long const,\n   gold::Gdb_index_info_reader::Declaration_pair>, false>*, unsigned int) */\n\nuint std::\n     _Hashtable<long_long,std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>,std::allocator<std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>>,std::__detail::_Select1st,std::equal_to<long_long>,std::hash<long_long>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  int in_t9;\n  int *in_stack_00000010;\n  char local_30 [4];\n  uint *local_2c;\n  undefined4 local_28;\n  \n  local_28 = *(undefined4 *)(param_2 + 0x14);\n  (**(code **)(in_t9 + 0x344358))\n            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc));\n  if (local_30[0] != '\0') {\n                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */\n    _M_rehash(param_2,local_2c);\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));\n  }\n  iVar2 = (int)param_3 * 4;\n  if (*(int **)(*(int *)param_2 + iVar2) != (int *)0x0) {\n    iVar1 = **(int **)(*(int *)param_2 + iVar2);\n    *(int **)param_1 = in_stack_00000010;\n    *in_stack_00000010 = iVar1;\n    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;\n    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;\n    return param_1;\n  }\n  *in_stack_00000010 = *(int *)(param_2 + 8);\n  *(int **)(param_2 + 8) = in_stack_00000010;\n  if (*in_stack_00000010 == 0) {\n    iVar1 = *(int *)param_2;\n  }\n  else {\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }\n  *(uint *)(iVar1 + iVar2) = param_2 + 8;\n  iVar2 = *(int *)(param_2 + 0xc);\n  *(int **)param_1 = in_stack_00000010;\n  *(int *)(param_2 + 0xc) = iVar2 + 1;\n  return param_1;\n}\n\n" comment (declaration "uint std::\n     _Hashtable<long_long,std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>,std::allocator<std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>>,std::__detail::_Select1st,std::equal_to<long_long>,std::hash<long_long>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)\n\n{\n  int iVar1;" type_identifier (ERROR "std::\n     _Hashtable<" identifier : : identifier <) identifier , (ERROR "std::pair<" identifier : : identifier <) identifier , (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) identifier (ERROR ">" >) , (ERROR "std::allocator<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) identifier (ERROR ">>" >>) , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::equal_to<" identifier : : identifier <) identifier (ERROR ">" >) , (ERROR "std::hash<" identifier : : identifier <) identifier (ERROR ">" >) , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::__detail::" identifier : : identifier : :) identifier (ERROR "<false" < false) , identifier , (ERROR "true>>\n     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)\n\n{\n  int" identifier >> : : (function_declarator "_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)" identifier (parameter_list "(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "_Hash_node *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "int *in_stack_00000010;" primitive_type (pointer_declarator "*in_stack_00000010" * identifier) ;) (declaration "char local_30 [4];" primitive_type (array_declarator "local_30 [4]" identifier [ number_literal ]) ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "local_28 = *(undefined4 *)(param_2 + 0x14);" (assignment_expression "local_28 = *(undefined4 *)(param_2 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(in_t9 + 0x344358))\n            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc));" (call_expression "(**(code **)(in_t9 + 0x344358))\n            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc))" (parenthesized_expression "(**(code **)(in_t9 + 0x344358))" ( (pointer_expression "**(code **)(in_t9 + 0x344358)" * (pointer_expression "*(code **)(in_t9 + 0x344358)" * (cast_expression "(code **)(in_t9 + 0x344358)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x344358)" ( (binary_expression "in_t9 + 0x344358" identifier + number_literal) ))))) )) (argument_list "(local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc))" ( identifier , (binary_expression "param_2 + 0x10" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) ))) ;) (if_statement "if (local_30[0] != '\0') {\n                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */\n    _M_rehash(param_2,local_2c);\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));\n  }" if (parenthesized_expression "(local_30[0] != '\0')" ( (binary_expression "local_30[0] != '\0'" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */\n    _M_rehash(param_2,local_2c);\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));\n  }" { comment (expression_statement "_M_rehash(param_2,local_2c);" (call_expression "_M_rehash(param_2,local_2c)" identifier (argument_list "(param_2,local_2c)" ( identifier , identifier ))) ;) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" ( (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));" (assignment_expression "param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4))" identifier = (cast_expression "(_Hash_node *)(param_4 % *(uint *)(param_2 + 4))" ( (type_descriptor "_Hash_node *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 % *(uint *)(param_2 + 4))" ( (binary_expression "param_4 % *(uint *)(param_2 + 4)" identifier % (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )))) ;) })) (expression_statement "iVar2 = (int)param_3 * 4;" (assignment_expression "iVar2 = (int)param_3 * 4" identifier = (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (*(int **)(*(int *)param_2 + iVar2) != (int *)0x0) {\n    iVar1 = **(int **)(*(int *)param_2 + iVar2);\n    *(int **)param_1 = in_stack_00000010;\n    *in_stack_00000010 = iVar1;\n    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;\n    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;\n    return param_1;\n  }" if (parenthesized_expression "(*(int **)(*(int *)param_2 + iVar2) != (int *)0x0)" ( (binary_expression "*(int **)(*(int *)param_2 + iVar2) != (int *)0x0" (pointer_expression "*(int **)(*(int *)param_2 + iVar2)" * (cast_expression "(int **)(*(int *)param_2 + iVar2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + iVar2)" ( (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar1 = **(int **)(*(int *)param_2 + iVar2);\n    *(int **)param_1 = in_stack_00000010;\n    *in_stack_00000010 = iVar1;\n    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;\n    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;\n    return param_1;\n  }" { (expression_statement "iVar1 = **(int **)(*(int *)param_2 + iVar2);" (assignment_expression "iVar1 = **(int **)(*(int *)param_2 + iVar2)" identifier = (pointer_expression "**(int **)(*(int *)param_2 + iVar2)" * (pointer_expression "*(int **)(*(int *)param_2 + iVar2)" * (cast_expression "(int **)(*(int *)param_2 + iVar2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + iVar2)" ( (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))))) ;) (expression_statement "*(int **)param_1 = in_stack_00000010;" (assignment_expression "*(int **)param_1 = in_stack_00000010" (pointer_expression "*(int **)param_1" * (cast_expression "(int **)param_1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "*in_stack_00000010 = iVar1;" (assignment_expression "*in_stack_00000010 = iVar1" (pointer_expression "*in_stack_00000010" * identifier) = identifier) ;) (expression_statement "**(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;" (assignment_expression "**(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010" (pointer_expression "**(undefined4 **)(*(int *)param_2 + iVar2)" * (pointer_expression "*(undefined4 **)(*(int *)param_2 + iVar2)" * (cast_expression "(undefined4 **)(*(int *)param_2 + iVar2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + iVar2)" ( (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) = identifier) ;) (expression_statement "*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;" (assignment_expression "*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 0xc) + 1" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "*in_stack_00000010 = *(int *)(param_2 + 8);" (assignment_expression "*in_stack_00000010 = *(int *)(param_2 + 8)" (pointer_expression "*in_stack_00000010" * identifier) = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_2 + 8) = in_stack_00000010;" (assignment_expression "*(int **)(param_2 + 8) = in_stack_00000010" (pointer_expression "*(int **)(param_2 + 8)" * (cast_expression "(int **)(param_2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*in_stack_00000010 == 0) {\n    iVar1 = *(int *)param_2;\n  }\n  else {\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" if (parenthesized_expression "(*in_stack_00000010 == 0)" ( (binary_expression "*in_stack_00000010 == 0" (pointer_expression "*in_stack_00000010" * identifier) == number_literal) )) (compound_statement "{\n    iVar1 = *(int *)param_2;\n  }" { (expression_statement "iVar1 = *(int *)param_2;" (assignment_expression "iVar1 = *(int *)param_2" identifier = (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" else (compound_statement "{\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" { (expression_statement "iVar1 = *(int *)param_2;" (assignment_expression "iVar1 = *(int *)param_2" identifier = (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" ( (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;" (assignment_expression "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010" (pointer_expression "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" * (cast_expression "(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" ( (binary_expression "iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4" identifier + (binary_expression "(*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4" (parenthesized_expression "(*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4))" ( (binary_expression "*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)" (pointer_expression "*(uint *)(*in_stack_00000010 + 0xc)" * (cast_expression "(uint *)(*in_stack_00000010 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*in_stack_00000010 + 0xc)" ( (binary_expression "*in_stack_00000010 + 0xc" (pointer_expression "*in_stack_00000010" * identifier) + number_literal) )))) % (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) * number_literal)) )))) = identifier) ;) }))) (expression_statement "*(uint *)(iVar1 + iVar2) = param_2 + 8;" (assignment_expression "*(uint *)(iVar1 + iVar2) = param_2 + 8" (pointer_expression "*(uint *)(iVar1 + iVar2)" * (cast_expression "(uint *)(iVar1 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + iVar2)" ( (binary_expression "iVar1 + iVar2" identifier + identifier) )))) = (binary_expression "param_2 + 8" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar2 = *(int *)(param_2 + 0xc)" identifier = (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int **)param_1 = in_stack_00000010;" (assignment_expression "*(int **)param_1 = in_stack_00000010" (pointer_expression "*(int **)param_1" * (cast_expression "(int **)param_1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "*(int *)(param_2 + 0xc) = iVar2 + 1;" (assignment_expression "*(int *)(param_2 + 0xc) = iVar2 + 1" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit "/* DWARF original prototype: iterator\n   _M_insert_unique_node(_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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, size_type __bkt, __hash_code __code, __node_type * __node, size_type __n_elt) */\n\niterator __thiscall\nstd::\n_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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::_M_insert_unique_node\n          (_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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,size_type __bkt,__hash_code __code,__node_type *__node,size_type __n_elt)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  int in_t9;\n  pair<bool,_unsigned_int> __do_rehash;\n  __rehash_state local_28 [4];\n  \n  local_28[0] = *(__rehash_state *)(__bkt + 0x14);\n  (**(code **)(in_t9 + 0x344358))\n            (&__do_rehash,__bkt + 0x10,*(undefined4 *)(__bkt + 4),*(undefined4 *)(__bkt + 0xc));\n  if (__do_rehash.first != false) {\n                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */\n    _M_rehash((_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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               *)__bkt,__do_rehash.second,local_28);\n    if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }\n    __code = (uint)__node % *(uint *)(__bkt + 4);\n  }\n  iVar3 = __code * 4;\n  if (*(undefined4 **)(*(int *)__bkt + iVar3) != (undefined4 *)0x0) {\n    uVar1 = **(undefined4 **)(*(int *)__bkt + iVar3);\n    this->_M_buckets = (__bucket_type *)__n_elt;\n    *(undefined4 *)__n_elt = uVar1;\n    **(size_type **)(*(int *)__bkt + iVar3) = __n_elt;\n    *(int *)(__bkt + 0xc) = *(int *)(__bkt + 0xc) + 1;\n    return (iterator)\n           (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>\n            )this;\n  }\n  *(undefined4 *)__n_elt = *(undefined4 *)(__bkt + 8);\n  *(size_type *)(__bkt + 8) = __n_elt;\n  if (*(int *)__n_elt == 0) {\n    iVar2 = *(int *)__bkt;\n  }\n  else {\n    iVar2 = *(int *)__bkt;\n    if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }\n    *(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4) = __n_elt;\n  }\n  *(size_type *)(iVar2 + iVar3) = __bkt + 8;\n  iVar3 = *(int *)(__bkt + 0xc);\n  this->_M_buckets = (__bucket_type *)__n_elt;\n  *(int *)(__bkt + 0xc) = iVar3 + 1;\n  return (iterator)\n         (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>\n          )this;\n}\n\n" comment (declaration "iterator __thiscall\nstd::\n_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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::_M_insert_unique_node\n          (_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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,size_type __bkt,__hash_code __code,__node_type *__node,size_type __n_elt)\n\n{\n  undefined4 uVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::\n_Hashtable<" identifier : : identifier <) identifier , (ERROR "_std::pair<" identifier : : identifier <) identifier , (ERROR "_gold::Gdb_index_info_reader::" identifier : : identifier : :) identifier (ERROR ">" >) , (ERROR "_std::allocator<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , (ERROR "_gold::Gdb_index_info_reader::Declaration_pair>" identifier : : identifier : : identifier >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::equal_to<" identifier : : identifier <) identifier (ERROR ">" >) , (ERROR "_std::hash<" identifier : : identifier <) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier (ERROR "<false" < false) , identifier , (ERROR "_true>_>\n::_M_insert_unique_node\n          (_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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,size_type __bkt,__hash_code __code,__node_type *__node,size_type __n_elt)\n\n{\n  undefined4" identifier > identifier > : : (function_declarator "_M_insert_unique_node\n          (_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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,size_type __bkt,__hash_code __code,__node_type *__node,size_type __n_elt)" identifier (parameter_list "(_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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,size_type __bkt,__hash_code __code,__node_type *__node,size_type __n_elt)" ( (parameter_declaration "_Hashtable<long_long_int" type_identifier (ERROR "<" <) identifier) , (parameter_declaration "_std::pair<long_long_int_const" type_identifier (ERROR "::pair<" : : identifier <) identifier) , (parameter_declaration "_gold::Gdb_index_info_reader::Declaration_pair" type_identifier (ERROR "::Gdb_index_info_reader::" : : identifier : :) identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::pair<long_long_int_const" type_identifier (ERROR "::allocator<std::pair<" : : identifier < identifier : : identifier <) identifier) , (parameter_declaration "_gold::Gdb_index_info_reader::Declaration_pair>_" type_identifier (ERROR "::Gdb_index_info_reader::Declaration_pair>" : : identifier : : identifier >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::equal_to<long_long_int" type_identifier (ERROR "::equal_to<" : : identifier <) identifier) (ERROR ">" >) , (parameter_declaration "_std::hash<long_long_int" type_identifier (ERROR "::hash<" : : identifier <) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Mod_range_hashing" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Default_ranged_hash" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Prime_rehash_policy" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Hashtable_traits" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) (ERROR "<false" < false) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_true>_>\n           *this" type_identifier (ERROR ">_>" > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "size_type __bkt" type_identifier identifier) , (parameter_declaration "__hash_code __code" type_identifier identifier) , (parameter_declaration "__node_type *__node" type_identifier (pointer_declarator "*__node" * identifier)) , (parameter_declaration "size_type __n_elt" type_identifier identifier) ))) { identifier) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (ERROR "pair<bool,_unsigned_int> __do_rehash" (binary_expression "pair<bool" identifier < identifier) , (binary_expression "_unsigned_int> __do_rehash" identifier > identifier)) (expression_statement ";" ;) (declaration "__rehash_state local_28 [4];" type_identifier (array_declarator "local_28 [4]" identifier [ number_literal ]) ;) (expression_statement "local_28[0] = *(__rehash_state *)(__bkt + 0x14);" (assignment_expression "local_28[0] = *(__rehash_state *)(__bkt + 0x14)" (subscript_expression "local_28[0]" identifier [ number_literal ]) = (pointer_expression "*(__rehash_state *)(__bkt + 0x14)" * (cast_expression "(__rehash_state *)(__bkt + 0x14)" ( (type_descriptor "__rehash_state *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 0x14)" ( (binary_expression "__bkt + 0x14" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(in_t9 + 0x344358))\n            (&__do_rehash,__bkt + 0x10,*(undefined4 *)(__bkt + 4),*(undefined4 *)(__bkt + 0xc));" (call_expression "(**(code **)(in_t9 + 0x344358))\n            (&__do_rehash,__bkt + 0x10,*(undefined4 *)(__bkt + 4),*(undefined4 *)(__bkt + 0xc))" (parenthesized_expression "(**(code **)(in_t9 + 0x344358))" ( (pointer_expression "**(code **)(in_t9 + 0x344358)" * (pointer_expression "*(code **)(in_t9 + 0x344358)" * (cast_expression "(code **)(in_t9 + 0x344358)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x344358)" ( (binary_expression "in_t9 + 0x344358" identifier + number_literal) ))))) )) (argument_list "(&__do_rehash,__bkt + 0x10,*(undefined4 *)(__bkt + 4),*(undefined4 *)(__bkt + 0xc))" ( (pointer_expression "&__do_rehash" & identifier) , (binary_expression "__bkt + 0x10" identifier + number_literal) , (pointer_expression "*(undefined4 *)(__bkt + 4)" * (cast_expression "(undefined4 *)(__bkt + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 4)" ( (binary_expression "__bkt + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(__bkt + 0xc)" * (cast_expression "(undefined4 *)(__bkt + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 0xc)" ( (binary_expression "__bkt + 0xc" identifier + number_literal) )))) ))) ;) (if_statement "if (__do_rehash.first != false) {\n                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */\n    _M_rehash((_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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               *)__bkt,__do_rehash.second,local_28);\n    if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }\n    __code = (uint)__node % *(uint *)(__bkt + 4);\n  }" if (parenthesized_expression "(__do_rehash.first != false)" ( (binary_expression "__do_rehash.first != false" (field_expression "__do_rehash.first" identifier . field_identifier) != false) )) (compound_statement "{\n                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */\n    _M_rehash((_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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               *)__bkt,__do_rehash.second,local_28);\n    if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }\n    __code = (uint)__node % *(uint *)(__bkt + 4);\n  }" { comment (expression_statement "_M_rehash((_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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               *)__bkt,__do_rehash.second,local_28);" (call_expression "_M_rehash((_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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               *)__bkt,__do_rehash.second,local_28)" identifier (argument_list "((_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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               *)__bkt,__do_rehash.second,local_28)" ( (parenthesized_expression "(_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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               *)__bkt,__do_rehash.second,local_28)" ( (ERROR "_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<long_long_int,_std" (binary_expression "_Hashtable<long_long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_long_int_const,_gold" (binary_expression "pair<long_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_long_int_const,_gold" (binary_expression "pair<long_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_long_int>,_std" (binary_expression "equal_to<long_long_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<long_long_int>,_std" (binary_expression "hash<long_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               *)__bkt,__do_rehash.second,local_28" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n               *)__bkt,__do_rehash.second,local_28" identifier , (comma_expression "_true>_>\n               *)__bkt,__do_rehash.second,local_28" (binary_expression "_true>_>\n               *)__bkt" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)__bkt" * (ERROR ")" )) identifier)) , (comma_expression "__do_rehash.second,local_28" (field_expression "__do_rehash.second" identifier . field_identifier) , identifier)))) )) ))) ;) (if_statement "if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(*(uint *)(__bkt + 4) == 0)" ( (binary_expression "*(uint *)(__bkt + 4) == 0" (pointer_expression "*(uint *)(__bkt + 4)" * (cast_expression "(uint *)(__bkt + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 4)" ( (binary_expression "__bkt + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "__code = (uint)__node % *(uint *)(__bkt + 4);" (assignment_expression "__code = (uint)__node % *(uint *)(__bkt + 4)" identifier = (binary_expression "(uint)__node % *(uint *)(__bkt + 4)" (cast_expression "(uint)__node" ( (type_descriptor "uint" type_identifier) ) identifier) % (pointer_expression "*(uint *)(__bkt + 4)" * (cast_expression "(uint *)(__bkt + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 4)" ( (binary_expression "__bkt + 4" identifier + number_literal) )))))) ;) })) (expression_statement "iVar3 = __code * 4;" (assignment_expression "iVar3 = __code * 4" identifier = (binary_expression "__code * 4" identifier * number_literal)) ;) (if_statement "if (*(undefined4 **)(*(int *)__bkt + iVar3) != (undefined4 *)0x0) {\n    uVar1 = **(undefined4 **)(*(int *)__bkt + iVar3);\n    this->_M_buckets = (__bucket_type *)__n_elt;\n    *(undefined4 *)__n_elt = uVar1;\n    **(size_type **)(*(int *)__bkt + iVar3) = __n_elt;\n    *(int *)(__bkt + 0xc) = *(int *)(__bkt + 0xc) + 1;\n    return (iterator)\n           (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>\n            )this;\n  }" if (parenthesized_expression "(*(undefined4 **)(*(int *)__bkt + iVar3) != (undefined4 *)0x0)" ( (binary_expression "*(undefined4 **)(*(int *)__bkt + iVar3) != (undefined4 *)0x0" (pointer_expression "*(undefined4 **)(*(int *)__bkt + iVar3)" * (cast_expression "(undefined4 **)(*(int *)__bkt + iVar3)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)__bkt + iVar3)" ( (binary_expression "*(int *)__bkt + iVar3" (pointer_expression "*(int *)__bkt" * (cast_expression "(int *)__bkt" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar1 = **(undefined4 **)(*(int *)__bkt + iVar3);\n    this->_M_buckets = (__bucket_type *)__n_elt;\n    *(undefined4 *)__n_elt = uVar1;\n    **(size_type **)(*(int *)__bkt + iVar3) = __n_elt;\n    *(int *)(__bkt + 0xc) = *(int *)(__bkt + 0xc) + 1;\n    return (iterator)\n           (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>\n            )this;\n  }" { (expression_statement "uVar1 = **(undefined4 **)(*(int *)__bkt + iVar3);" (assignment_expression "uVar1 = **(undefined4 **)(*(int *)__bkt + iVar3)" identifier = (pointer_expression "**(undefined4 **)(*(int *)__bkt + iVar3)" * (pointer_expression "*(undefined4 **)(*(int *)__bkt + iVar3)" * (cast_expression "(undefined4 **)(*(int *)__bkt + iVar3)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)__bkt + iVar3)" ( (binary_expression "*(int *)__bkt + iVar3" (pointer_expression "*(int *)__bkt" * (cast_expression "(int *)__bkt" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))))) ;) (expression_statement "this->_M_buckets = (__bucket_type *)__n_elt;" (assignment_expression "this->_M_buckets = (__bucket_type *)__n_elt" (field_expression "this->_M_buckets" identifier -> field_identifier) = (cast_expression "(__bucket_type *)__n_elt" ( (type_descriptor "__bucket_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined4 *)__n_elt = uVar1;" (assignment_expression "*(undefined4 *)__n_elt = uVar1" (pointer_expression "*(undefined4 *)__n_elt" * (cast_expression "(undefined4 *)__n_elt" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "**(size_type **)(*(int *)__bkt + iVar3) = __n_elt;" (assignment_expression "**(size_type **)(*(int *)__bkt + iVar3) = __n_elt" (pointer_expression "**(size_type **)(*(int *)__bkt + iVar3)" * (pointer_expression "*(size_type **)(*(int *)__bkt + iVar3)" * (cast_expression "(size_type **)(*(int *)__bkt + iVar3)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)__bkt + iVar3)" ( (binary_expression "*(int *)__bkt + iVar3" (pointer_expression "*(int *)__bkt" * (cast_expression "(int *)__bkt" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) = identifier) ;) (expression_statement "*(int *)(__bkt + 0xc) = *(int *)(__bkt + 0xc) + 1;" (assignment_expression "*(int *)(__bkt + 0xc) = *(int *)(__bkt + 0xc) + 1" (pointer_expression "*(int *)(__bkt + 0xc)" * (cast_expression "(int *)(__bkt + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 0xc)" ( (binary_expression "__bkt + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(__bkt + 0xc) + 1" (pointer_expression "*(int *)(__bkt + 0xc)" * (cast_expression "(int *)(__bkt + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 0xc)" ( (binary_expression "__bkt + 0xc" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return (iterator)\n           (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>\n            )this;" return (call_expression "(iterator)\n           (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>\n            )this" (parenthesized_expression "(iterator)" ( identifier )) (argument_list "(_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>\n            )this" ( (binary_expression "_Node_iterator_base<std::pair<long_long_int_const" (binary_expression "_Node_iterator_base<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) , (ERROR "_gold::Gdb_index_info_reader::" identifier : : identifier : :) (binary_expression "Declaration_pair>,_false>\n            )this" (binary_expression "Declaration_pair>,_false" identifier > (ERROR "," ,) identifier) > (ERROR ")" )) identifier) ))) ;) })) (expression_statement "*(undefined4 *)__n_elt = *(undefined4 *)(__bkt + 8);" (assignment_expression "*(undefined4 *)__n_elt = *(undefined4 *)(__bkt + 8)" (pointer_expression "*(undefined4 *)__n_elt" * (cast_expression "(undefined4 *)__n_elt" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)(__bkt + 8)" * (cast_expression "(undefined4 *)(__bkt + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 8)" ( (binary_expression "__bkt + 8" identifier + number_literal) ))))) ;) (expression_statement "*(size_type *)(__bkt + 8) = __n_elt;" (assignment_expression "*(size_type *)(__bkt + 8) = __n_elt" (pointer_expression "*(size_type *)(__bkt + 8)" * (cast_expression "(size_type *)(__bkt + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 8)" ( (binary_expression "__bkt + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)__n_elt == 0) {\n    iVar2 = *(int *)__bkt;\n  }\n  else {\n    iVar2 = *(int *)__bkt;\n    if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }\n    *(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4) = __n_elt;\n  }" if (parenthesized_expression "(*(int *)__n_elt == 0)" ( (binary_expression "*(int *)__n_elt == 0" (pointer_expression "*(int *)__n_elt" * (cast_expression "(int *)__n_elt" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == number_literal) )) (compound_statement "{\n    iVar2 = *(int *)__bkt;\n  }" { (expression_statement "iVar2 = *(int *)__bkt;" (assignment_expression "iVar2 = *(int *)__bkt" identifier = (pointer_expression "*(int *)__bkt" * (cast_expression "(int *)__bkt" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n    iVar2 = *(int *)__bkt;\n    if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }\n    *(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4) = __n_elt;\n  }" else (compound_statement "{\n    iVar2 = *(int *)__bkt;\n    if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }\n    *(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4) = __n_elt;\n  }" { (expression_statement "iVar2 = *(int *)__bkt;" (assignment_expression "iVar2 = *(int *)__bkt" identifier = (pointer_expression "*(int *)__bkt" * (cast_expression "(int *)__bkt" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(uint *)(__bkt + 4) == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(*(uint *)(__bkt + 4) == 0)" ( (binary_expression "*(uint *)(__bkt + 4) == 0" (pointer_expression "*(uint *)(__bkt + 4)" * (cast_expression "(uint *)(__bkt + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 4)" ( (binary_expression "__bkt + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "*(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4) = __n_elt;" (assignment_expression "*(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4) = __n_elt" (pointer_expression "*(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4)" * (cast_expression "(size_type *)(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4)" ( (binary_expression "iVar2 + (*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4" identifier + (binary_expression "(*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)) * 4" (parenthesized_expression "(*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4))" ( (binary_expression "*(uint *)(*(int *)__n_elt + 0xc) % *(uint *)(__bkt + 4)" (pointer_expression "*(uint *)(*(int *)__n_elt + 0xc)" * (cast_expression "(uint *)(*(int *)__n_elt + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)__n_elt + 0xc)" ( (binary_expression "*(int *)__n_elt + 0xc" (pointer_expression "*(int *)__n_elt" * (cast_expression "(int *)__n_elt" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) % (pointer_expression "*(uint *)(__bkt + 4)" * (cast_expression "(uint *)(__bkt + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 4)" ( (binary_expression "__bkt + 4" identifier + number_literal) ))))) )) * number_literal)) )))) = identifier) ;) }))) (expression_statement "*(size_type *)(iVar2 + iVar3) = __bkt + 8;" (assignment_expression "*(size_type *)(iVar2 + iVar3) = __bkt + 8" (pointer_expression "*(size_type *)(iVar2 + iVar3)" * (cast_expression "(size_type *)(iVar2 + iVar3)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + iVar3)" ( (binary_expression "iVar2 + iVar3" identifier + identifier) )))) = (binary_expression "__bkt + 8" identifier + number_literal)) ;) (expression_statement "iVar3 = *(int *)(__bkt + 0xc);" (assignment_expression "iVar3 = *(int *)(__bkt + 0xc)" identifier = (pointer_expression "*(int *)(__bkt + 0xc)" * (cast_expression "(int *)(__bkt + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 0xc)" ( (binary_expression "__bkt + 0xc" identifier + number_literal) ))))) ;) (expression_statement "this->_M_buckets = (__bucket_type *)__n_elt;" (assignment_expression "this->_M_buckets = (__bucket_type *)__n_elt" (field_expression "this->_M_buckets" identifier -> field_identifier) = (cast_expression "(__bucket_type *)__n_elt" ( (type_descriptor "__bucket_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(int *)(__bkt + 0xc) = iVar3 + 1;" (assignment_expression "*(int *)(__bkt + 0xc) = iVar3 + 1" (pointer_expression "*(int *)(__bkt + 0xc)" * (cast_expression "(int *)(__bkt + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__bkt + 0xc)" ( (binary_expression "__bkt + 0xc" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (ERROR "return (iterator)\n         (_Node_iterator_base<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_false>\n          )this;\n}" return (parenthesized_expression "(iterator)" ( identifier )) ( (binary_expression "_Node_iterator_base<std::pair<long_long_int_const" (binary_expression "_Node_iterator_base<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) , (ERROR "_gold::Gdb_index_info_reader::" identifier : : identifier : :) (binary_expression "Declaration_pair>,_false>\n          )this" (binary_expression "Declaration_pair>,_false" identifier > (ERROR "," ,) identifier) > (ERROR ")" )) identifier) ; }))
(translation_unit "uint std::\n     _Hashtable<long_long,std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>,std::allocator<std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>>,std::__detail::_Select1st,std::equal_to<long_long>,std::hash<long_long>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  int in_t9;\n  int *in_stack_00000010;\n  char local_30 [4];\n  uint *local_2c;\n  undefined4 local_28;\n  \n  local_28 = *(undefined4 *)(param_2 + 0x14);\n  (**(code **)(in_t9 + 0x344358))\n            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc));\n  if (local_30[0] != '\0') {\n                    \n    _M_rehash(param_2,local_2c);\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));\n  }\n  iVar2 = (int)param_3 * 4;\n  if (*(int **)(*(int *)param_2 + iVar2) != (int *)0x0) {\n    iVar1 = **(int **)(*(int *)param_2 + iVar2);\n    *(int **)param_1 = in_stack_00000010;\n    *in_stack_00000010 = iVar1;\n    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;\n    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;\n    return param_1;\n  }\n  *in_stack_00000010 = *(int *)(param_2 + 8);\n  *(int **)(param_2 + 8) = in_stack_00000010;\n  if (*in_stack_00000010 == 0) {\n    iVar1 = *(int *)param_2;\n  }\n  else {\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }\n  *(uint *)(iVar1 + iVar2) = param_2 + 8;\n  iVar2 = *(int *)(param_2 + 0xc);\n  *(int **)param_1 = in_stack_00000010;\n  *(int *)(param_2 + 0xc) = iVar2 + 1;\n  return param_1;\n}\n\n" (declaration "uint std::\n     _Hashtable<long_long,std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>,std::allocator<std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>>,std::__detail::_Select1st,std::equal_to<long_long>,std::hash<long_long>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)\n\n{\n  int iVar1;" type_identifier (ERROR "std::\n     _Hashtable<" identifier : : identifier <) identifier , (ERROR "std::pair<" identifier : : identifier <) identifier , (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) identifier (ERROR ">" >) , (ERROR "std::allocator<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) identifier (ERROR ">>" >>) , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::equal_to<" identifier : : identifier <) identifier (ERROR ">" >) , (ERROR "std::hash<" identifier : : identifier <) identifier (ERROR ">" >) , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::__detail::" identifier : : identifier : :) identifier (ERROR "<false" < false) , identifier , (ERROR "true>>\n     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)\n\n{\n  int" identifier >> : : (function_declarator "_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)" identifier (parameter_list "(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "_Hash_node *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "int *in_stack_00000010;" primitive_type (pointer_declarator "*in_stack_00000010" * identifier) ;) (declaration "char local_30 [4];" primitive_type (array_declarator "local_30 [4]" identifier [ number_literal ]) ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "local_28 = *(undefined4 *)(param_2 + 0x14);" (assignment_expression "local_28 = *(undefined4 *)(param_2 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(in_t9 + 0x344358))\n            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc));" (call_expression "(**(code **)(in_t9 + 0x344358))\n            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc))" (parenthesized_expression "(**(code **)(in_t9 + 0x344358))" ( (pointer_expression "**(code **)(in_t9 + 0x344358)" * (pointer_expression "*(code **)(in_t9 + 0x344358)" * (cast_expression "(code **)(in_t9 + 0x344358)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x344358)" ( (binary_expression "in_t9 + 0x344358" identifier + number_literal) ))))) )) (argument_list "(local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc))" ( identifier , (binary_expression "param_2 + 0x10" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) ))) ;) (if_statement "if (local_30[0] != '\0') {\n                    \n    _M_rehash(param_2,local_2c);\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));\n  }" if (parenthesized_expression "(local_30[0] != '\0')" ( (binary_expression "local_30[0] != '\0'" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n    _M_rehash(param_2,local_2c);\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));\n  }" { (expression_statement "_M_rehash(param_2,local_2c);" (call_expression "_M_rehash(param_2,local_2c)" identifier (argument_list "(param_2,local_2c)" ( identifier , identifier ))) ;) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" ( (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));" (assignment_expression "param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4))" identifier = (cast_expression "(_Hash_node *)(param_4 % *(uint *)(param_2 + 4))" ( (type_descriptor "_Hash_node *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 % *(uint *)(param_2 + 4))" ( (binary_expression "param_4 % *(uint *)(param_2 + 4)" identifier % (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )))) ;) })) (expression_statement "iVar2 = (int)param_3 * 4;" (assignment_expression "iVar2 = (int)param_3 * 4" identifier = (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (*(int **)(*(int *)param_2 + iVar2) != (int *)0x0) {\n    iVar1 = **(int **)(*(int *)param_2 + iVar2);\n    *(int **)param_1 = in_stack_00000010;\n    *in_stack_00000010 = iVar1;\n    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;\n    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;\n    return param_1;\n  }" if (parenthesized_expression "(*(int **)(*(int *)param_2 + iVar2) != (int *)0x0)" ( (binary_expression "*(int **)(*(int *)param_2 + iVar2) != (int *)0x0" (pointer_expression "*(int **)(*(int *)param_2 + iVar2)" * (cast_expression "(int **)(*(int *)param_2 + iVar2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + iVar2)" ( (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar1 = **(int **)(*(int *)param_2 + iVar2);\n    *(int **)param_1 = in_stack_00000010;\n    *in_stack_00000010 = iVar1;\n    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;\n    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;\n    return param_1;\n  }" { (expression_statement "iVar1 = **(int **)(*(int *)param_2 + iVar2);" (assignment_expression "iVar1 = **(int **)(*(int *)param_2 + iVar2)" identifier = (pointer_expression "**(int **)(*(int *)param_2 + iVar2)" * (pointer_expression "*(int **)(*(int *)param_2 + iVar2)" * (cast_expression "(int **)(*(int *)param_2 + iVar2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + iVar2)" ( (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) )))))) ;) (expression_statement "*(int **)param_1 = in_stack_00000010;" (assignment_expression "*(int **)param_1 = in_stack_00000010" (pointer_expression "*(int **)param_1" * (cast_expression "(int **)param_1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "*in_stack_00000010 = iVar1;" (assignment_expression "*in_stack_00000010 = iVar1" (pointer_expression "*in_stack_00000010" * identifier) = identifier) ;) (expression_statement "**(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;" (assignment_expression "**(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010" (pointer_expression "**(undefined4 **)(*(int *)param_2 + iVar2)" * (pointer_expression "*(undefined4 **)(*(int *)param_2 + iVar2)" * (cast_expression "(undefined4 **)(*(int *)param_2 + iVar2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + iVar2)" ( (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) = identifier) ;) (expression_statement "*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;" (assignment_expression "*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_2 + 0xc) + 1" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "*in_stack_00000010 = *(int *)(param_2 + 8);" (assignment_expression "*in_stack_00000010 = *(int *)(param_2 + 8)" (pointer_expression "*in_stack_00000010" * identifier) = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_2 + 8) = in_stack_00000010;" (assignment_expression "*(int **)(param_2 + 8) = in_stack_00000010" (pointer_expression "*(int **)(param_2 + 8)" * (cast_expression "(int **)(param_2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*in_stack_00000010 == 0) {\n    iVar1 = *(int *)param_2;\n  }\n  else {\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" if (parenthesized_expression "(*in_stack_00000010 == 0)" ( (binary_expression "*in_stack_00000010 == 0" (pointer_expression "*in_stack_00000010" * identifier) == number_literal) )) (compound_statement "{\n    iVar1 = *(int *)param_2;\n  }" { (expression_statement "iVar1 = *(int *)param_2;" (assignment_expression "iVar1 = *(int *)param_2" identifier = (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" else (compound_statement "{\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" { (expression_statement "iVar1 = *(int *)param_2;" (assignment_expression "iVar1 = *(int *)param_2" identifier = (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" ( (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;" (assignment_expression "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010" (pointer_expression "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" * (cast_expression "(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" ( (binary_expression "iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4" identifier + (binary_expression "(*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4" (parenthesized_expression "(*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4))" ( (binary_expression "*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)" (pointer_expression "*(uint *)(*in_stack_00000010 + 0xc)" * (cast_expression "(uint *)(*in_stack_00000010 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*in_stack_00000010 + 0xc)" ( (binary_expression "*in_stack_00000010 + 0xc" (pointer_expression "*in_stack_00000010" * identifier) + number_literal) )))) % (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) * number_literal)) )))) = identifier) ;) }))) (expression_statement "*(uint *)(iVar1 + iVar2) = param_2 + 8;" (assignment_expression "*(uint *)(iVar1 + iVar2) = param_2 + 8" (pointer_expression "*(uint *)(iVar1 + iVar2)" * (cast_expression "(uint *)(iVar1 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + iVar2)" ( (binary_expression "iVar1 + iVar2" identifier + identifier) )))) = (binary_expression "param_2 + 8" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar2 = *(int *)(param_2 + 0xc)" identifier = (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int **)param_1 = in_stack_00000010;" (assignment_expression "*(int **)param_1 = in_stack_00000010" (pointer_expression "*(int **)param_1" * (cast_expression "(int **)param_1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "*(int *)(param_2 + 0xc) = iVar2 + 1;" (assignment_expression "*(int *)(param_2 + 0xc) = iVar2 + 1" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ERROR IDENT : : IDENT <) IDENT , (ERROR IDENT : : IDENT <) IDENT , (ERROR IDENT : : IDENT : :) IDENT (ERROR >) , (ERROR IDENT : : IDENT < IDENT : : IDENT <) IDENT , (ERROR IDENT : : IDENT : :) IDENT (ERROR >>) , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT <) IDENT (ERROR >) , (ERROR IDENT : : IDENT <) IDENT (ERROR >) , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT (ERROR < BOOL) , IDENT , (ERROR IDENT >> : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) { TYPE) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + IDENT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + IDENT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + IDENT) ))))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) * LIT)) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (return_statement return IDENT ;) (ERROR }))
(declaration "uint std::\n     _Hashtable<long_long,std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>,std::allocator<std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>>,std::__detail::_Select1st,std::equal_to<long_long>,std::hash<long_long>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)\n\n{\n  int iVar1;" (type_identifier "uint") (ERROR "std::\n     _Hashtable<" (identifier "std") (: ":") (: ":") (identifier "_Hashtable") (< "<")) (identifier "long_long") (, ",") (ERROR "std::pair<" (identifier "std") (: ":") (: ":") (identifier "pair") (< "<")) (identifier "long_long_const") (, ",") (ERROR "gold::Gdb_index_info_reader::" (identifier "gold") (: ":") (: ":") (identifier "Gdb_index_info_reader") (: ":") (: ":")) (identifier "Declaration_pair") (ERROR ">" (> ">")) (, ",") (ERROR "std::allocator<std::pair<" (identifier "std") (: ":") (: ":") (identifier "allocator") (< "<") (identifier "std") (: ":") (: ":") (identifier "pair") (< "<")) (identifier "long_long_const") (, ",") (ERROR "gold::Gdb_index_info_reader::" (identifier "gold") (: ":") (: ":") (identifier "Gdb_index_info_reader") (: ":") (: ":")) (identifier "Declaration_pair") (ERROR ">>" (>> ">>")) (, ",") (ERROR "std::__detail::" (identifier "std") (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Select1st") (, ",") (ERROR "std::equal_to<" (identifier "std") (: ":") (: ":") (identifier "equal_to") (< "<")) (identifier "long_long") (ERROR ">" (> ">")) (, ",") (ERROR "std::hash<" (identifier "std") (: ":") (: ":") (identifier "hash") (< "<")) (identifier "long_long") (ERROR ">" (> ">")) (, ",") (ERROR "std::__detail::" (identifier "std") (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Mod_range_hashing") (, ",") (ERROR "std::__detail::" (identifier "std") (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Default_ranged_hash") (, ",") (ERROR "std::__detail::" (identifier "std") (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Prime_rehash_policy") (, ",") (ERROR "std::__detail::" (identifier "std") (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Hashtable_traits") (ERROR "<false" (< "<") (false "false")) (, ",") (identifier "false") (, ",") (ERROR "true>>\n     ::_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)\n\n{\n  int" (identifier "true") (>> ">>") (: ":") (: ":") (function_declarator "_M_insert_unique_node(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)" (identifier "_M_insert_unique_node") (parameter_list "(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "_Hash_node *param_3" (type_identifier "_Hash_node") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) ({ "{") (primitive_type "int")) (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int in_t9;" (primitive_type "int") (identifier "in_t9") (; ";")) (declaration "int *in_stack_00000010;" (primitive_type "int") (pointer_declarator "*in_stack_00000010" (* "*") (identifier "in_stack_00000010")) (; ";")) (declaration "char local_30 [4];" (primitive_type "char") (array_declarator "local_30 [4]" (identifier "local_30") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint *local_2c;" (type_identifier "uint") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (expression_statement "local_28 = *(undefined4 *)(param_2 + 0x14);" (assignment_expression "local_28 = *(undefined4 *)(param_2 + 0x14)" (identifier "local_28") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "(**(code **)(in_t9 + 0x344358))\n            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc));" (call_expression "(**(code **)(in_t9 + 0x344358))\n            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc))" (parenthesized_expression "(**(code **)(in_t9 + 0x344358))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x344358)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x344358)" (* "*") (cast_expression "(code **)(in_t9 + 0x344358)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x344358)" (( "(") (binary_expression "in_t9 + 0x344358" (identifier "in_t9") (+ "+") (number_literal "0x344358")) () ")"))))) () ")")) (argument_list "(local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc))" (( "(") (identifier "local_30") (, ",") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (if_statement "if (local_30[0] != '\0') {\n                    \n    _M_rehash(param_2,local_2c);\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));\n  }" (if "if") (parenthesized_expression "(local_30[0] != '\0')" (( "(") (binary_expression "local_30[0] != '\0'" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n    _M_rehash(param_2,local_2c);\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));\n  }" ({ "{") (expression_statement "_M_rehash(param_2,local_2c);" (call_expression "_M_rehash(param_2,local_2c)" (identifier "_M_rehash") (argument_list "(param_2,local_2c)" (( "(") (identifier "param_2") (, ",") (identifier "local_2c") () ")"))) (; ";")) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" (( "(") (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));" (assignment_expression "param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4))" (identifier "param_3") (= "=") (cast_expression "(_Hash_node *)(param_4 % *(uint *)(param_2 + 4))" (( "(") (type_descriptor "_Hash_node *" (type_identifier "_Hash_node") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 % *(uint *)(param_2 + 4))" (( "(") (binary_expression "param_4 % *(uint *)(param_2 + 4)" (identifier "param_4") (% "%") (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar2 = (int)param_3 * 4;" (assignment_expression "iVar2 = (int)param_3 * 4" (identifier "iVar2") (= "=") (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (*(int **)(*(int *)param_2 + iVar2) != (int *)0x0) {\n    iVar1 = **(int **)(*(int *)param_2 + iVar2);\n    *(int **)param_1 = in_stack_00000010;\n    *in_stack_00000010 = iVar1;\n    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;\n    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;\n    return param_1;\n  }" (if "if") (parenthesized_expression "(*(int **)(*(int *)param_2 + iVar2) != (int *)0x0)" (( "(") (binary_expression "*(int **)(*(int *)param_2 + iVar2) != (int *)0x0" (pointer_expression "*(int **)(*(int *)param_2 + iVar2)" (* "*") (cast_expression "(int **)(*(int *)param_2 + iVar2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_2 + iVar2)" (( "(") (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (identifier "iVar2")) () ")")))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar1 = **(int **)(*(int *)param_2 + iVar2);\n    *(int **)param_1 = in_stack_00000010;\n    *in_stack_00000010 = iVar1;\n    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;\n    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;\n    return param_1;\n  }" ({ "{") (expression_statement "iVar1 = **(int **)(*(int *)param_2 + iVar2);" (assignment_expression "iVar1 = **(int **)(*(int *)param_2 + iVar2)" (identifier "iVar1") (= "=") (pointer_expression "**(int **)(*(int *)param_2 + iVar2)" (* "*") (pointer_expression "*(int **)(*(int *)param_2 + iVar2)" (* "*") (cast_expression "(int **)(*(int *)param_2 + iVar2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_2 + iVar2)" (( "(") (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (identifier "iVar2")) () ")")))))) (; ";")) (expression_statement "*(int **)param_1 = in_stack_00000010;" (assignment_expression "*(int **)param_1 = in_stack_00000010" (pointer_expression "*(int **)param_1" (* "*") (cast_expression "(int **)param_1" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_1"))) (= "=") (identifier "in_stack_00000010")) (; ";")) (expression_statement "*in_stack_00000010 = iVar1;" (assignment_expression "*in_stack_00000010 = iVar1" (pointer_expression "*in_stack_00000010" (* "*") (identifier "in_stack_00000010")) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "**(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;" (assignment_expression "**(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010" (pointer_expression "**(undefined4 **)(*(int *)param_2 + iVar2)" (* "*") (pointer_expression "*(undefined4 **)(*(int *)param_2 + iVar2)" (* "*") (cast_expression "(undefined4 **)(*(int *)param_2 + iVar2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_2 + iVar2)" (( "(") (binary_expression "*(int *)param_2 + iVar2" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (identifier "iVar2")) () ")"))))) (= "=") (identifier "in_stack_00000010")) (; ";")) (expression_statement "*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;" (assignment_expression "*(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1" (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(int *)(param_2 + 0xc) + 1" (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "*in_stack_00000010 = *(int *)(param_2 + 8);" (assignment_expression "*in_stack_00000010 = *(int *)(param_2 + 8)" (pointer_expression "*in_stack_00000010" (* "*") (identifier "in_stack_00000010")) (= "=") (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(int **)(param_2 + 8) = in_stack_00000010;" (assignment_expression "*(int **)(param_2 + 8) = in_stack_00000010" (pointer_expression "*(int **)(param_2 + 8)" (* "*") (cast_expression "(int **)(param_2 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "in_stack_00000010")) (; ";")) (if_statement "if (*in_stack_00000010 == 0) {\n    iVar1 = *(int *)param_2;\n  }\n  else {\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" (if "if") (parenthesized_expression "(*in_stack_00000010 == 0)" (( "(") (binary_expression "*in_stack_00000010 == 0" (pointer_expression "*in_stack_00000010" (* "*") (identifier "in_stack_00000010")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = *(int *)param_2;\n  }" ({ "{") (expression_statement "iVar1 = *(int *)param_2;" (assignment_expression "iVar1 = *(int *)param_2" (identifier "iVar1") (= "=") (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")))) (; ";")) (} "}")) (else_clause "else {\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" (else "else") (compound_statement "{\n    iVar1 = *(int *)param_2;\n    if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }\n    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;\n  }" ({ "{") (expression_statement "iVar1 = *(int *)param_2;" (assignment_expression "iVar1 = *(int *)param_2" (identifier "iVar1") (= "=") (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")))) (; ";")) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" (( "(") (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010;" (assignment_expression "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =\n         in_stack_00000010" (pointer_expression "*(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" (* "*") (cast_expression "(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4)" (( "(") (binary_expression "iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4" (identifier "iVar1") (+ "+") (binary_expression "(*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4" (parenthesized_expression "(*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4))" (( "(") (binary_expression "*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)" (pointer_expression "*(uint *)(*in_stack_00000010 + 0xc)" (* "*") (cast_expression "(uint *)(*in_stack_00000010 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*in_stack_00000010 + 0xc)" (( "(") (binary_expression "*in_stack_00000010 + 0xc" (pointer_expression "*in_stack_00000010" (* "*") (identifier "in_stack_00000010")) (+ "+") (number_literal "0xc")) () ")")))) (% "%") (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "in_stack_00000010")) (; ";")) (} "}")))) (expression_statement "*(uint *)(iVar1 + iVar2) = param_2 + 8;" (assignment_expression "*(uint *)(iVar1 + iVar2) = param_2 + 8" (pointer_expression "*(uint *)(iVar1 + iVar2)" (* "*") (cast_expression "(uint *)(iVar1 + iVar2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + iVar2)" (( "(") (binary_expression "iVar1 + iVar2" (identifier "iVar1") (+ "+") (identifier "iVar2")) () ")")))) (= "=") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "iVar2 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar2 = *(int *)(param_2 + 0xc)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(int **)param_1 = in_stack_00000010;" (assignment_expression "*(int **)param_1 = in_stack_00000010" (pointer_expression "*(int **)param_1" (* "*") (cast_expression "(int **)param_1" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "param_1"))) (= "=") (identifier "in_stack_00000010")) (; ";")) (expression_statement "*(int *)(param_2 + 0xc) = iVar2 + 1;" (assignment_expression "*(int *)(param_2 + 0xc) = iVar2 + 1" (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (ERROR "}" (} "}"))

/* DWARF original prototype: iterator
   _M_insert_unique_node(_Hashtable<long_long_int,_std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_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, size_type __bkt, __hash_code __code, __node_type * __node, size_type __n_elt) */

type_1 __thiscall
var_11::
_Hashtable<long_long_int,_std::pair<var_12,_gold::Gdb_index_info_reader::var_13>,_std::allocator<var_11::pair<var_12,_gold::Gdb_index_info_reader::var_13>var_6>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_4<false,var_14,var_5>var_6>
::_M_insert_unique_node
          (_Hashtable<long_long_int,_std::pair<var_12,_gold::Gdb_index_info_reader::var_13>,_std::allocator<var_11::pair<var_12,_gold::Gdb_index_info_reader::var_13>var_6>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_4<false,var_14,var_5>var_6>
           *var_15,type_7 var_1,__hash_code var_8,__node_type *__node,type_7 __n_elt)

{
  type_4 uVar1;
  int var_16;
  int var_9;
  int var_2;
  pair<bool,_unsigned_int> __do_rehash;
  type_2 local_28 [4];
  
  local_28[0] = *(type_2 *)(var_1 + 0x14);
  (**(type_3 **)(var_2 + 0x344358))
            (&__do_rehash,var_1 + 0x10,*(type_4 *)(var_1 + 4),*(type_4 *)(var_1 + 0xc));
  if (__do_rehash.first != false) {
                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */
    var_3((_Hashtable<long_long_int,_std::pair<var_12,_gold::Gdb_index_info_reader::var_13>,_std::allocator<var_11::pair<var_12,_gold::Gdb_index_info_reader::var_13>var_6>,_std::__detail::_Select1st,_std::equal_to<long_long_int>,_std::hash<long_long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_4<false,var_14,var_5>var_6>
               *)var_1,__do_rehash.second,local_28);
    if (*(type_5 *)(var_1 + 4) == 0) {
      var_7(7);
    }
    var_8 = (type_5)__node % *(type_5 *)(var_1 + 4);
  }
  var_9 = var_8 * 4;
  if (*(type_4 **)(*(int *)var_1 + var_9) != (type_4 *)0x0) {
    uVar1 = **(type_4 **)(*(int *)var_1 + var_9);
    var_15->_M_buckets = (type_6 *)__n_elt;
    *(type_4 *)__n_elt = uVar1;
    **(type_7 **)(*(int *)var_1 + var_9) = __n_elt;
    *(int *)(var_1 + 0xc) = *(int *)(var_1 + 0xc) + 1;
    return (type_1)
           (var_10<var_11::pair<var_12,_gold::Gdb_index_info_reader::var_13>,var_14>
            )var_15;
  }
  *(type_4 *)__n_elt = *(type_4 *)(var_1 + 8);
  *(type_7 *)(var_1 + 8) = __n_elt;
  if (*(int *)__n_elt == 0) {
    var_16 = *(int *)var_1;
  }
  else {
    var_16 = *(int *)var_1;
    if (*(type_5 *)(var_1 + 4) == 0) {
      var_7(7);
    }
    *(type_7 *)(var_16 + (*(type_5 *)(*(int *)__n_elt + 0xc) % *(type_5 *)(var_1 + 4)) * 4) = __n_elt;
  }
  *(type_7 *)(var_16 + var_9) = var_1 + 8;
  var_9 = *(int *)(var_1 + 0xc);
  var_15->_M_buckets = (type_6 *)__n_elt;
  *(int *)(var_1 + 0xc) = var_9 + 1;
  return (type_1)
         (var_10<var_11::pair<var_12,_gold::Gdb_index_info_reader::var_13>,var_14>
          )var_15;
}


(translation_unit (declaration type: (type_identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR) (ERROR (identifier) (identifier) (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (false)) declarator: (identifier) (ERROR (identifier) (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) (primitive_type)) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier)))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (number_literal)))))) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (return_statement (identifier)) (ERROR))

/* std::_Hashtable<long long, std::pair<long long const,
   gold::Gdb_index_info_reader::Declaration_pair>, std::allocator<std::pair<long long const,
   gold::Gdb_index_info_reader::Declaration_pair> >, std::__detail::_Select1st, std::equal_to<long
   long>, std::hash<long long>, std::__detail::_Mod_range_hashing,
   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
   std::__detail::_Hashtable_traits<false, false, true> >::MASKED(unsigned int,
   unsigned int, std::__detail::_Hash_node<std::pair<long long const,
   gold::Gdb_index_info_reader::Declaration_pair>, false>*, unsigned int) */

uint std::
     _Hashtable<long_long,std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>,std::allocator<std::pair<long_long_const,gold::Gdb_index_info_reader::Declaration_pair>>,std::__detail::_Select1st,std::equal_to<long_long>,std::hash<long_long>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>
     ::MASKED(uint param_1,uint param_2,_Hash_node *param_3,uint param_4)

{
  int iVar1;
  int iVar2;
  int in_t9;
  int *in_stack_00000010;
  char local_30 [4];
  uint *local_2c;
  undefined4 local_28;
  
  local_28 = *(undefined4 *)(param_2 + 0x14);
  (**(code **)(in_t9 + 0x344358))
            (local_30,param_2 + 0x10,*(undefined4 *)(param_2 + 4),*(undefined4 *)(param_2 + 0xc));
  if (local_30[0] != '\0') {
                    /* try { // try from 0017d7f0 to 0017d7f7 has its CatchHandler @ 0017d8f0 */
    _M_rehash(param_2,local_2c);
    if (*(uint *)(param_2 + 4) == 0) {
      trap(7);
    }
    param_3 = (_Hash_node *)(param_4 % *(uint *)(param_2 + 4));
  }
  iVar2 = (int)param_3 * 4;
  if (*(int **)(*(int *)param_2 + iVar2) != (int *)0x0) {
    iVar1 = **(int **)(*(int *)param_2 + iVar2);
    *(int **)param_1 = in_stack_00000010;
    *in_stack_00000010 = iVar1;
    **(undefined4 **)(*(int *)param_2 + iVar2) = in_stack_00000010;
    *(int *)(param_2 + 0xc) = *(int *)(param_2 + 0xc) + 1;
    return param_1;
  }
  *in_stack_00000010 = *(int *)(param_2 + 8);
  *(int **)(param_2 + 8) = in_stack_00000010;
  if (*in_stack_00000010 == 0) {
    iVar1 = *(int *)param_2;
  }
  else {
    iVar1 = *(int *)param_2;
    if (*(uint *)(param_2 + 4) == 0) {
      trap(7);
    }
    *(int **)(iVar1 + (*(uint *)(*in_stack_00000010 + 0xc) % *(uint *)(param_2 + 4)) * 4) =
         in_stack_00000010;
  }
  *(uint *)(iVar1 + iVar2) = param_2 + 8;
  iVar2 = *(int *)(param_2 + 0xc);
  *(int **)param_1 = in_stack_00000010;
  *(int *)(param_2 + 0xc) = iVar2 + 1;
  return param_1;
}

