
/* DWARF original prototype: mapped_type *
   operator[](_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
   * this, key_type * __k) */

mapped_type * __thiscall
std::__detail::
_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
::operator[](_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
             *this,key_type *__k)

{
  uint uVar1;
  undefined4 *__n_elt;
  key_type pSVar2;
  __hashtable *__h;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  key_type __node;
  uint __code;
  __bucket_type *local_20;
  
  uVar1 = *(uint *)(this + 4);
  __node = *__k;
  if (uVar1 == 0) {
    trap(7);
  }
  __code = (uint)__node % uVar1;
  piVar5 = *(int **)(*(int *)this + __code * 4);
  if (piVar5 != (int *)0x0) {
    pSVar2 = (key_type)((int *)*piVar5)[1];
    piVar3 = (int *)*piVar5;
    do {
      piVar4 = piVar3;
      if (__node == pSVar2) {
        if (*piVar5 != 0) {
          return (mapped_type *)(*piVar5 + 8);
        }
        break;
      }
      piVar3 = (int *)*piVar4;
      if (piVar3 == (int *)0x0) break;
      pSVar2 = (key_type)piVar3[1];
      if (uVar1 == 0) {
        trap(7);
      }
      piVar5 = piVar4;
    } while (__code == (uint)pSVar2 % uVar1);
  }
  __n_elt = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);
  __n_elt[1] = *__k;
  *__n_elt = 0;
  __n_elt[2] = 0;
  _Hashtable<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_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<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
              *)&local_20,(size_type)this,__code,(__node_type *)__node,(size_type)__n_elt);
  return (mapped_type *)(local_20 + 2);
}



/* std::__detail::_Map_base<gold::Symbol*, std::pair<gold::Symbol* const, gold::Symbol*>,
   std::allocator<std::pair<gold::Symbol* const, gold::Symbol*> >, std::__detail::_Select1st,
   std::equal_to<gold::Symbol*>, std::hash<gold::Symbol*>, std::__detail::_Mod_range_hashing,
   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
   std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](gold::Symbol* const&) */

int __thiscall
std::__detail::
_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>
::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>
             *this,Symbol **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  Symbol *pSVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  Symbol *pSVar7;
  _Hash_node *p_Var8;
  int local_20 [3];
  
  uVar1 = *(uint *)(this + 4);
  pSVar7 = *param_1;
  if (uVar1 == 0) {
    trap(7);
  }
  p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1);
  piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4);
  if (piVar6 != (int *)0x0) {
    pSVar3 = (Symbol *)((int *)*piVar6)[1];
    piVar4 = (int *)*piVar6;
    do {
      piVar5 = piVar4;
      if (pSVar7 == pSVar3) {
        if (*piVar6 != 0) {
          return *piVar6 + 8;
        }
        break;
      }
      piVar4 = (int *)*piVar5;
      if (piVar4 == (int *)0x0) break;
      pSVar3 = (Symbol *)piVar4[1];
      if (uVar1 == 0) {
        trap(7);
      }
      piVar6 = piVar5;
    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));
  }
  puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);
  puVar2[1] = *param_1;
  *puVar2 = 0;
  puVar2[2] = 0;
  _Hashtable<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);
  return local_20[0] + 8;
}


lui gp,0x20
addiu gp,gp,0x641c
addu gp,gp,t9
addiu sp,sp,-0x40
lw v0,0x4(a0)
lw v1,0x0(a0)
sw s0,0x2c(sp)
lw s0,0x0(a1)
sw s2,0x34(sp)
sw gp,0x18(sp)
teq v0,zero
divu s0,v0
sw ra,0x3c(sp)
sw s3,0x38(sp)
sw s1,0x30(sp)
mfhi s2
sll a2,s2,0x2
addu v1,v1,a2
lw t1,0x0(v1)
beq t1,zero,0x002c2edc
_lw t9,-0x7e98(gp)
lw t0,0x0(t1)
b 0x002c2ea8
_lw v1,0x4(t0)
lw a3,0x0(t0)
beq a3,zero,0x002c2ed8
_or t1,t0,zero
lw v1,0x4(a3)
teq v0,zero
divu v1,v0
mfhi a2
bne s2,a2,0x002c2ed8
_or t0,a3,zero
bne s0,v1,0x002c2e84
_nop
lw v0,0x0(t1)
beq v0,zero,0x002c2ed8
_lw ra,0x3c(sp)
addiu v0,v0,0x8
lw s3,0x38(sp)
lw s2,0x34(sp)
lw s1,0x30(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x7e98(gp)
or s1,a0,zero
li a0,0xc
jalr t9
_or s3,a1,zero
li a1,0x1
lw gp,0x18(sp)
addiu a0,sp,0x20
lw v1,0x0(s3)
or a3,s0,zero
sw a1,0x14(sp)
or a2,s2,zero
sw v0,0x10(sp)
or a1,s1,zero
sw v1,0x4(v0)
sw zero,0x0(v0)
lw t9,-0x4834(gp)
bal 0x002c2b30
_sw zero,0x8(v0)
lw v0,0x20(sp)
lw ra,0x3c(sp)
lw s3,0x38(sp)
lw s2,0x34(sp)
addiu v0,v0,0x8
lw s1,0x30(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x40
(translation_unit "/* std::__detail::_Map_base<gold::Symbol*, std::pair<gold::Symbol* const, gold::Symbol*>,\n   std::allocator<std::pair<gold::Symbol* const, gold::Symbol*> >, std::__detail::_Select1st,\n   std::equal_to<gold::Symbol*>, std::hash<gold::Symbol*>, std::__detail::_Mod_range_hashing,\n   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,\n   std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](gold::Symbol* const&) */\n\nint __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  Symbol *pSVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  Symbol *pSVar7;\n  _Hash_node *p_Var8;\n  int local_20 [3];\n  \n  uVar1 = *(uint *)(this + 4);\n  pSVar7 = *param_1;\n  if (uVar1 == 0) {\n    trap(7);\n  }\n  p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1);\n  piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4);\n  if (piVar6 != (int *)0x0) {\n    pSVar3 = (Symbol *)((int *)*piVar6)[1];\n    piVar4 = (int *)*piVar6;\n    do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));\n  }\n  puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);\n  puVar2[1] = *param_1;\n  *puVar2 = 0;\n  puVar2[2] = 0;\n  _Hashtable<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);\n  return local_20[0] + 8;\n}\n\n" comment (declaration "int __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::__detail::\n_Map_base<gold::" identifier : : identifier : : identifier < identifier : :) identifier (ERROR "*,std::pair<gold::Symbol*const" * , (ERROR "std::pair<gold::Symbol" identifier : : identifier < identifier : : identifier) * (type_qualifier "const" const)) , (ERROR "gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "std::allocator<std::pair<gold::Symbol" identifier : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*const,gold::Symbol" * (type_qualifier "const" const) (ERROR ",gold::" , identifier : :) identifier) (ERROR "*>>" * >>) , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::equal_to<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "std::hash<gold::" identifier : : 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 , identifier (ERROR ">" >) , (ERROR "true>\n::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)\n\n{\n  uint" identifier > : : (function_declarator "operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)" (array_declarator "operator[]" identifier [ ]) (parameter_list "(_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)" ( (parameter_declaration "_Map_base<gold::Symbol*" type_identifier (ERROR "<gold::Symbol" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "std::pair<gold::Symbol*const" type_identifier (ERROR "::pair<gold::Symbol" : : identifier < identifier : : identifier) (abstract_pointer_declarator "*const" * (type_qualifier "const" const))) , (parameter_declaration "gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>" * >) , (parameter_declaration "std::allocator<std::pair<gold::Symbol*const" type_identifier (ERROR "::allocator<std::pair<gold::Symbol" : : identifier < identifier : : identifier < identifier : : identifier) (abstract_pointer_declarator "*const" * (type_qualifier "const" const))) , (parameter_declaration "gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>>" * >>) , (parameter_declaration "std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "std::equal_to<gold::Symbol" type_identifier (ERROR "::equal_to<gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "std::hash<gold::Symbol" type_identifier (ERROR "::hash<gold::" : : identifier < 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" type_identifier) (ERROR ">" >) , (parameter_declaration "true>\n             *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol **param_1" type_identifier (pointer_declarator "**param_1" * (pointer_declarator "*param_1" * identifier))) ))) { identifier) identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Symbol *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "Symbol *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "_Hash_node *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = *(uint *)(this + 4);" (assignment_expression "uVar1 = *(uint *)(this + 4)" identifier = (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "pSVar7 = *param_1;" (assignment_expression "pSVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1);" (assignment_expression "p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1)" identifier = (cast_expression "(_Hash_node *)((uint)pSVar7 % uVar1)" ( (type_descriptor "_Hash_node *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)pSVar7 % uVar1)" ( (binary_expression "(uint)pSVar7 % uVar1" (cast_expression "(uint)pSVar7" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) )))) ;) (expression_statement "piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4);" (assignment_expression "piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4)" identifier = (pointer_expression "*(int **)(*(int *)this + (int)p_Var8 * 4)" * (cast_expression "(int **)(*(int *)this + (int)p_Var8 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + (int)p_Var8 * 4)" ( (binary_expression "*(int *)this + (int)p_Var8 * 4" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "(int)p_Var8 * 4" (cast_expression "(int)p_Var8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (if_statement "if (piVar6 != (int *)0x0) {\n    pSVar3 = (Symbol *)((int *)*piVar6)[1];\n    piVar4 = (int *)*piVar6;\n    do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));\n  }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pSVar3 = (Symbol *)((int *)*piVar6)[1];\n    piVar4 = (int *)*piVar6;\n    do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));\n  }" { (expression_statement "pSVar3 = (Symbol *)((int *)*piVar6)[1];" (assignment_expression "pSVar3 = (Symbol *)((int *)*piVar6)[1]" identifier = (cast_expression "(Symbol *)((int *)*piVar6)[1]" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "((int *)*piVar6)[1]" (parenthesized_expression "((int *)*piVar6)" ( (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier)) )) [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)*piVar6;" (assignment_expression "piVar4 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (do_statement "do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));" do (compound_statement "{\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    }" { (expression_statement "piVar5 = piVar4;" (assignment_expression "piVar5 = piVar4" identifier = identifier) ;) (if_statement "if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }" if (parenthesized_expression "(pSVar7 == pSVar3)" ( (binary_expression "pSVar7 == pSVar3" identifier == identifier) )) (compound_statement "{\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }" { (if_statement "if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }" if (parenthesized_expression "(*piVar6 != 0)" ( (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" * identifier) != number_literal) )) (compound_statement "{\n          return *piVar6 + 8;\n        }" { (return_statement "return *piVar6 + 8;" return (binary_expression "*piVar6 + 8" (pointer_expression "*piVar6" * identifier) + number_literal) ;) })) (break_statement "break;" break ;) })) (expression_statement "piVar4 = (int *)*piVar5;" (assignment_expression "piVar4 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (if_statement "if (piVar4 == (int *)0x0) break;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pSVar3 = (Symbol *)piVar4[1];" (assignment_expression "pSVar3 = (Symbol *)piVar4[1]" identifier = (cast_expression "(Symbol *)piVar4[1]" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar1 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1))" ( (binary_expression "p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1)" identifier == (cast_expression "(_Hash_node *)((uint)pSVar3 % uVar1)" ( (type_descriptor "_Hash_node *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)pSVar3 % uVar1)" ( (binary_expression "(uint)pSVar3 % uVar1" (cast_expression "(uint)pSVar3" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) )))) )) ;) })) (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new_004c13a8)(0xc)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" ( (pointer_expression "*(code *)PTR_operator_new_004c13a8" * (cast_expression "(code *)PTR_operator_new_004c13a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = *param_1;" (assignment_expression "puVar2[1] = *param_1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (ERROR "_Hashtable<gold::Symbol*,std::pair<gold::Symbol*const," (binary_expression "_Hashtable<gold::Symbol*,std::pair<gold::Symbol*const" (binary_expression "_Hashtable<gold::Symbol*,std::pair<gold" (binary_expression "_Hashtable<gold::Symbol*,std" (binary_expression "_Hashtable<gold" identifier < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * identifier) ,) (labeled_statement "gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std:" : : (comma_expression "Symbol*>,std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (comma_expression "Symbol*const,gold" (binary_expression "Symbol*const" identifier * identifier) , identifier) : : (comma_expression "Symbol*>>,std" identifier (ERROR "*>>" * >>) , identifier) :) : (labeled_statement "__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std:" : : (comma_expression "_Select1st,std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (comma_expression "Symbol*>,std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "hash<gold" identifier < identifier) : : (comma_expression "Symbol*>,std" identifier (ERROR "*>" * >) , identifier) :) : (labeled_statement "__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)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::_Mod_range_hashing,std:" : : (comma_expression "_Mod_range_hashing,std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::_Default_ranged_hash,std:" : : (comma_expression "_Default_ranged_hash,std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::_Prime_rehash_policy,std:" : : (comma_expression "_Prime_rehash_policy,std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" (comma_expression "_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" false , (binary_expression "true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" true >> (ERROR "::" : :) (call_expression "_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" identifier (argument_list "((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" ( (cast_expression "(uint)local_20" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(uint)this" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , (cast_expression "(uint)pSVar7" ( (type_descriptor "uint" type_identifier) ) identifier) )))))) ;))))))) (return_statement "return local_20[0] + 8;" return (binary_expression "local_20[0] + 8" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) ;) (ERROR "}" }))
(translation_unit "/* DWARF original prototype: mapped_type *\n   operator[](_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n   * this, key_type * __k) */\n\nmapped_type * __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n::operator[](_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n             *this,key_type *__k)\n\n{\n  uint uVar1;\n  undefined4 *__n_elt;\n  key_type pSVar2;\n  __hashtable *__h;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  key_type __node;\n  uint __code;\n  __bucket_type *local_20;\n  \n  uVar1 = *(uint *)(this + 4);\n  __node = *__k;\n  if (uVar1 == 0) {\n    trap(7);\n  }\n  __code = (uint)__node % uVar1;\n  piVar5 = *(int **)(*(int *)this + __code * 4);\n  if (piVar5 != (int *)0x0) {\n    pSVar2 = (key_type)((int *)*piVar5)[1];\n    piVar3 = (int *)*piVar5;\n    do {\n      piVar4 = piVar3;\n      if (__node == pSVar2) {\n        if (*piVar5 != 0) {\n          return (mapped_type *)(*piVar5 + 8);\n        }\n        break;\n      }\n      piVar3 = (int *)*piVar4;\n      if (piVar3 == (int *)0x0) break;\n      pSVar2 = (key_type)piVar3[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar5 = piVar4;\n    } while (__code == (uint)pSVar2 % uVar1);\n  }\n  __n_elt = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);\n  __n_elt[1] = *__k;\n  *__n_elt = 0;\n  __n_elt[2] = 0;\n  _Hashtable<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_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<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&local_20,(size_type)this,__code,(__node_type *)__node,(size_type)__n_elt);\n  return (mapped_type *)(local_20 + 2);\n}\n\n" comment (ERROR "mapped_type * __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,_std::pair<gold::" (binary_expression "mapped_type * __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,_std::pair<gold" (binary_expression "mapped_type * __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,_std" (binary_expression "mapped_type * __thiscall\nstd::__detail::\n_Map_base<gold" (binary_expression "mapped_type * __thiscall" identifier * identifier) (ERROR "std::__detail::\n_Map_base" identifier : : identifier : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::pair" : : identifier) < identifier) : :) (declaration "Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n::operator[](_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n             *this,key_type *__k)\n\n{\n  uint uVar1;" type_identifier (pointer_declarator "*_const" * identifier) , (ERROR "_gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::allocator<std::pair<gold::Symbol" identifier : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier) , (ERROR "_gold::Symbol*>" identifier : : identifier * >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::equal_to<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::hash<gold::" identifier : : 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 , identifier (ERROR ">" >) , (ERROR "_true>\n::operator[](_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n             *this,key_type *__k)\n\n{\n  uint" identifier > : : (function_declarator "operator[](_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n             *this,key_type *__k)" (array_declarator "operator[]" identifier [ ]) (parameter_list "(_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n             *this,key_type *__k)" ( (parameter_declaration "_Map_base<gold::Symbol*" type_identifier (ERROR "<gold::Symbol" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::pair<gold::Symbol*_const" type_identifier (ERROR "::pair<gold::Symbol" : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::allocator<std::pair<gold::Symbol*_const" type_identifier (ERROR "::allocator<std::pair<gold::Symbol" : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_gold::Symbol*>_" type_identifier (ERROR "::Symbol*>" : : identifier * >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::equal_to<gold::Symbol" type_identifier (ERROR "::equal_to<gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::hash<gold::Symbol" type_identifier (ERROR "::hash<gold::" : : identifier < 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" type_identifier) (ERROR ">" >) , (parameter_declaration "_true>\n             *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "key_type *__k" type_identifier (pointer_declarator "*__k" * identifier)) ))) { identifier) identifier ;) (declaration "undefined4 *__n_elt;" type_identifier (pointer_declarator "*__n_elt" * identifier) ;) (declaration "key_type pSVar2;" type_identifier identifier ;) (declaration "__hashtable *__h;" type_identifier (pointer_declarator "*__h" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "key_type __node;" type_identifier identifier ;) (declaration "uint __code;" type_identifier identifier ;) (declaration "__bucket_type *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "uVar1 = *(uint *)(this + 4);" (assignment_expression "uVar1 = *(uint *)(this + 4)" identifier = (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "__node = *__k;" (assignment_expression "__node = *__k" identifier = (pointer_expression "*__k" * identifier)) ;) (if_statement "if (uVar1 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == 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 % uVar1;" (assignment_expression "__code = (uint)__node % uVar1" identifier = (binary_expression "(uint)__node % uVar1" (cast_expression "(uint)__node" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier)) ;) (expression_statement "piVar5 = *(int **)(*(int *)this + __code * 4);" (assignment_expression "piVar5 = *(int **)(*(int *)this + __code * 4)" identifier = (pointer_expression "*(int **)(*(int *)this + __code * 4)" * (cast_expression "(int **)(*(int *)this + __code * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + __code * 4)" ( (binary_expression "*(int *)this + __code * 4" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "__code * 4" identifier * number_literal)) ))))) ;) (if_statement "if (piVar5 != (int *)0x0) {\n    pSVar2 = (key_type)((int *)*piVar5)[1];\n    piVar3 = (int *)*piVar5;\n    do {\n      piVar4 = piVar3;\n      if (__node == pSVar2) {\n        if (*piVar5 != 0) {\n          return (mapped_type *)(*piVar5 + 8);\n        }\n        break;\n      }\n      piVar3 = (int *)*piVar4;\n      if (piVar3 == (int *)0x0) break;\n      pSVar2 = (key_type)piVar3[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar5 = piVar4;\n    } while (__code == (uint)pSVar2 % uVar1);\n  }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pSVar2 = (key_type)((int *)*piVar5)[1];\n    piVar3 = (int *)*piVar5;\n    do {\n      piVar4 = piVar3;\n      if (__node == pSVar2) {\n        if (*piVar5 != 0) {\n          return (mapped_type *)(*piVar5 + 8);\n        }\n        break;\n      }\n      piVar3 = (int *)*piVar4;\n      if (piVar3 == (int *)0x0) break;\n      pSVar2 = (key_type)piVar3[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar5 = piVar4;\n    } while (__code == (uint)pSVar2 % uVar1);\n  }" { (expression_statement "pSVar2 = (key_type)((int *)*piVar5)[1];" (assignment_expression "pSVar2 = (key_type)((int *)*piVar5)[1]" identifier = (subscript_expression "(key_type)((int *)*piVar5)[1]" (call_expression "(key_type)((int *)*piVar5)" (parenthesized_expression "(key_type)" ( identifier )) (argument_list "((int *)*piVar5)" ( (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) ))) [ number_literal ])) ;) (expression_statement "piVar3 = (int *)*piVar5;" (assignment_expression "piVar3 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (do_statement "do {\n      piVar4 = piVar3;\n      if (__node == pSVar2) {\n        if (*piVar5 != 0) {\n          return (mapped_type *)(*piVar5 + 8);\n        }\n        break;\n      }\n      piVar3 = (int *)*piVar4;\n      if (piVar3 == (int *)0x0) break;\n      pSVar2 = (key_type)piVar3[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar5 = piVar4;\n    } while (__code == (uint)pSVar2 % uVar1);" do (compound_statement "{\n      piVar4 = piVar3;\n      if (__node == pSVar2) {\n        if (*piVar5 != 0) {\n          return (mapped_type *)(*piVar5 + 8);\n        }\n        break;\n      }\n      piVar3 = (int *)*piVar4;\n      if (piVar3 == (int *)0x0) break;\n      pSVar2 = (key_type)piVar3[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar5 = piVar4;\n    }" { (expression_statement "piVar4 = piVar3;" (assignment_expression "piVar4 = piVar3" identifier = identifier) ;) (if_statement "if (__node == pSVar2) {\n        if (*piVar5 != 0) {\n          return (mapped_type *)(*piVar5 + 8);\n        }\n        break;\n      }" if (parenthesized_expression "(__node == pSVar2)" ( (binary_expression "__node == pSVar2" identifier == identifier) )) (compound_statement "{\n        if (*piVar5 != 0) {\n          return (mapped_type *)(*piVar5 + 8);\n        }\n        break;\n      }" { (if_statement "if (*piVar5 != 0) {\n          return (mapped_type *)(*piVar5 + 8);\n        }" if (parenthesized_expression "(*piVar5 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) )) (compound_statement "{\n          return (mapped_type *)(*piVar5 + 8);\n        }" { (return_statement "return (mapped_type *)(*piVar5 + 8);" return (cast_expression "(mapped_type *)(*piVar5 + 8)" ( (type_descriptor "mapped_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar5 + 8)" ( (binary_expression "*piVar5 + 8" (pointer_expression "*piVar5" * identifier) + number_literal) ))) ;) })) (break_statement "break;" break ;) })) (expression_statement "piVar3 = (int *)*piVar4;" (assignment_expression "piVar3 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (if_statement "if (piVar3 == (int *)0x0) break;" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pSVar2 = (key_type)piVar3[1];" (assignment_expression "pSVar2 = (key_type)piVar3[1]" identifier = (cast_expression "(key_type)piVar3[1]" ( (type_descriptor "key_type" type_identifier) ) (subscript_expression "piVar3[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar1 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "piVar5 = piVar4;" (assignment_expression "piVar5 = piVar4" identifier = identifier) ;) }) while (parenthesized_expression "(__code == (uint)pSVar2 % uVar1)" ( (binary_expression "__code == (uint)pSVar2 % uVar1" identifier == (binary_expression "(uint)pSVar2 % uVar1" (cast_expression "(uint)pSVar2" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier)) )) ;) })) (expression_statement "__n_elt = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);" (assignment_expression "__n_elt = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new_004c13a8)(0xc)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" ( (pointer_expression "*(code *)PTR_operator_new_004c13a8" * (cast_expression "(code *)PTR_operator_new_004c13a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "__n_elt[1] = *__k;" (assignment_expression "__n_elt[1] = *__k" (subscript_expression "__n_elt[1]" identifier [ number_literal ]) = (pointer_expression "*__k" * identifier)) ;) (expression_statement "*__n_elt = 0;" (assignment_expression "*__n_elt = 0" (pointer_expression "*__n_elt" * identifier) = number_literal) ;) (expression_statement "__n_elt[2] = 0;" (assignment_expression "__n_elt[2] = 0" (subscript_expression "__n_elt[2]" identifier [ number_literal ]) = number_literal) ;) (ERROR "_Hashtable<gold::Symbol*,_std::pair<gold::" (binary_expression "_Hashtable<gold::Symbol*,_std::pair<gold" (binary_expression "_Hashtable<gold::Symbol*,_std" (binary_expression "_Hashtable<gold" identifier < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::pair" : : identifier) < identifier) : :) (declaration "Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_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<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&local_20,(size_type)this,__code,(__node_type *)__node,(size_type)__n_elt);" type_identifier (pointer_declarator "*_const" * identifier) , (ERROR "_gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::allocator<std::pair<gold::Symbol" identifier : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier) , (ERROR "_gold::Symbol*>" identifier : : identifier * >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::equal_to<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::hash<gold::" identifier : : 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<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&local_20,(size_type)" identifier > identifier > : : (function_declarator "_M_insert_unique_node\n            ((_Hashtable<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&local_20" identifier (ERROR "(" () (parameter_list "(_Hashtable<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)" ( (parameter_declaration "_Hashtable<gold::Symbol*" type_identifier (ERROR "<gold::Symbol" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::pair<gold::Symbol*_const" type_identifier (ERROR "::pair<gold::Symbol" : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::allocator<std::pair<gold::Symbol*_const" type_identifier (ERROR "::allocator<std::pair<gold::Symbol" : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_gold::Symbol*>_" type_identifier (ERROR "::Symbol*>" : : identifier * >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::equal_to<gold::Symbol" type_identifier (ERROR "::equal_to<gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::hash<gold::Symbol" type_identifier (ERROR "::hash<gold::" : : identifier < 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              *" type_identifier (ERROR ">_>" > identifier >) (abstract_pointer_declarator "*" *)) )) (ERROR "&" &) identifier) , ( identifier )) identifier , identifier , (parenthesized_declarator "(__node_type *)" ( identifier (ERROR "*" *) )) (ERROR "__node" identifier) , (parenthesized_declarator "(size_type)" ( identifier )) (ERROR "__n_elt)" identifier )) ;) (return_statement "return (mapped_type *)(local_20 + 2);" return (cast_expression "(mapped_type *)(local_20 + 2)" ( (type_descriptor "mapped_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 2)" ( (binary_expression "local_20 + 2" identifier + number_literal) ))) ;) (ERROR "}" }))
(translation_unit "int __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)\n\n{\n  uint uVar1;\n  undefined4 *puVar2;\n  Symbol *pSVar3;\n  int *piVar4;\n  int *piVar5;\n  int *piVar6;\n  Symbol *pSVar7;\n  _Hash_node *p_Var8;\n  int local_20 [3];\n  \n  uVar1 = *(uint *)(this + 4);\n  pSVar7 = *param_1;\n  if (uVar1 == 0) {\n    trap(7);\n  }\n  p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1);\n  piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4);\n  if (piVar6 != (int *)0x0) {\n    pSVar3 = (Symbol *)((int *)*piVar6)[1];\n    piVar4 = (int *)*piVar6;\n    do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));\n  }\n  puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);\n  puVar2[1] = *param_1;\n  *puVar2 = 0;\n  puVar2[2] = 0;\n  _Hashtable<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);\n  return local_20[0] + 8;\n}\n\n" (declaration "int __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::__detail::\n_Map_base<gold::" identifier : : identifier : : identifier < identifier : :) identifier (ERROR "*,std::pair<gold::Symbol*const" * , (ERROR "std::pair<gold::Symbol" identifier : : identifier < identifier : : identifier) * (type_qualifier "const" const)) , (ERROR "gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "std::allocator<std::pair<gold::Symbol" identifier : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*const,gold::Symbol" * (type_qualifier "const" const) (ERROR ",gold::" , identifier : :) identifier) (ERROR "*>>" * >>) , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "std::equal_to<gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "std::hash<gold::" identifier : : 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 , identifier (ERROR ">" >) , (ERROR "true>\n::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)\n\n{\n  uint" identifier > : : (function_declarator "operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)" (array_declarator "operator[]" identifier [ ]) (parameter_list "(_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)" ( (parameter_declaration "_Map_base<gold::Symbol*" type_identifier (ERROR "<gold::Symbol" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "std::pair<gold::Symbol*const" type_identifier (ERROR "::pair<gold::Symbol" : : identifier < identifier : : identifier) (abstract_pointer_declarator "*const" * (type_qualifier "const" const))) , (parameter_declaration "gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>" * >) , (parameter_declaration "std::allocator<std::pair<gold::Symbol*const" type_identifier (ERROR "::allocator<std::pair<gold::Symbol" : : identifier < identifier : : identifier < identifier : : identifier) (abstract_pointer_declarator "*const" * (type_qualifier "const" const))) , (parameter_declaration "gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>>" * >>) , (parameter_declaration "std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "std::equal_to<gold::Symbol" type_identifier (ERROR "::equal_to<gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "std::hash<gold::Symbol" type_identifier (ERROR "::hash<gold::" : : identifier < 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" type_identifier) (ERROR ">" >) , (parameter_declaration "true>\n             *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol **param_1" type_identifier (pointer_declarator "**param_1" * (pointer_declarator "*param_1" * identifier))) ))) { identifier) identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Symbol *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "Symbol *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "_Hash_node *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = *(uint *)(this + 4);" (assignment_expression "uVar1 = *(uint *)(this + 4)" identifier = (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "pSVar7 = *param_1;" (assignment_expression "pSVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (uVar1 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1);" (assignment_expression "p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1)" identifier = (cast_expression "(_Hash_node *)((uint)pSVar7 % uVar1)" ( (type_descriptor "_Hash_node *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)pSVar7 % uVar1)" ( (binary_expression "(uint)pSVar7 % uVar1" (cast_expression "(uint)pSVar7" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) )))) ;) (expression_statement "piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4);" (assignment_expression "piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4)" identifier = (pointer_expression "*(int **)(*(int *)this + (int)p_Var8 * 4)" * (cast_expression "(int **)(*(int *)this + (int)p_Var8 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + (int)p_Var8 * 4)" ( (binary_expression "*(int *)this + (int)p_Var8 * 4" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "(int)p_Var8 * 4" (cast_expression "(int)p_Var8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (if_statement "if (piVar6 != (int *)0x0) {\n    pSVar3 = (Symbol *)((int *)*piVar6)[1];\n    piVar4 = (int *)*piVar6;\n    do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));\n  }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pSVar3 = (Symbol *)((int *)*piVar6)[1];\n    piVar4 = (int *)*piVar6;\n    do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));\n  }" { (expression_statement "pSVar3 = (Symbol *)((int *)*piVar6)[1];" (assignment_expression "pSVar3 = (Symbol *)((int *)*piVar6)[1]" identifier = (cast_expression "(Symbol *)((int *)*piVar6)[1]" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "((int *)*piVar6)[1]" (parenthesized_expression "((int *)*piVar6)" ( (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier)) )) [ number_literal ]))) ;) (expression_statement "piVar4 = (int *)*piVar6;" (assignment_expression "piVar4 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (do_statement "do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));" do (compound_statement "{\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    }" { (expression_statement "piVar5 = piVar4;" (assignment_expression "piVar5 = piVar4" identifier = identifier) ;) (if_statement "if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }" if (parenthesized_expression "(pSVar7 == pSVar3)" ( (binary_expression "pSVar7 == pSVar3" identifier == identifier) )) (compound_statement "{\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }" { (if_statement "if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }" if (parenthesized_expression "(*piVar6 != 0)" ( (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" * identifier) != number_literal) )) (compound_statement "{\n          return *piVar6 + 8;\n        }" { (return_statement "return *piVar6 + 8;" return (binary_expression "*piVar6 + 8" (pointer_expression "*piVar6" * identifier) + number_literal) ;) })) (break_statement "break;" break ;) })) (expression_statement "piVar4 = (int *)*piVar5;" (assignment_expression "piVar4 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (if_statement "if (piVar4 == (int *)0x0) break;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pSVar3 = (Symbol *)piVar4[1];" (assignment_expression "pSVar3 = (Symbol *)piVar4[1]" identifier = (cast_expression "(Symbol *)piVar4[1]" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar1 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1))" ( (binary_expression "p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1)" identifier == (cast_expression "(_Hash_node *)((uint)pSVar3 % uVar1)" ( (type_descriptor "_Hash_node *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)pSVar3 % uVar1)" ( (binary_expression "(uint)pSVar3 % uVar1" (cast_expression "(uint)pSVar3" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) )))) )) ;) })) (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new_004c13a8)(0xc)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" ( (pointer_expression "*(code *)PTR_operator_new_004c13a8" * (cast_expression "(code *)PTR_operator_new_004c13a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar2[1] = *param_1;" (assignment_expression "puVar2[1] = *param_1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (ERROR "_Hashtable<gold::Symbol*,std::pair<gold::Symbol*const," (binary_expression "_Hashtable<gold::Symbol*,std::pair<gold::Symbol*const" (binary_expression "_Hashtable<gold::Symbol*,std::pair<gold" (binary_expression "_Hashtable<gold::Symbol*,std" (binary_expression "_Hashtable<gold" identifier < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * identifier) ,) (labeled_statement "gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std:" : : (comma_expression "Symbol*>,std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (comma_expression "Symbol*const,gold" (binary_expression "Symbol*const" identifier * identifier) , identifier) : : (comma_expression "Symbol*>>,std" identifier (ERROR "*>>" * >>) , identifier) :) : (labeled_statement "__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std:" : : (comma_expression "_Select1st,std" identifier , identifier) : : (binary_expression "equal_to<gold" identifier < identifier) : : (comma_expression "Symbol*>,std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "hash<gold" identifier < identifier) : : (comma_expression "Symbol*>,std" identifier (ERROR "*>" * >) , identifier) :) : (labeled_statement "__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)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::_Mod_range_hashing,std:" : : (comma_expression "_Mod_range_hashing,std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::_Default_ranged_hash,std:" : : (comma_expression "_Default_ranged_hash,std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier (ERROR "::_Prime_rehash_policy,std:" : : (comma_expression "_Prime_rehash_policy,std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" (comma_expression "_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" false , (binary_expression "true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" true >> (ERROR "::" : :) (call_expression "_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" identifier (argument_list "((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" ( (cast_expression "(uint)local_20" ( (type_descriptor "uint" type_identifier) ) identifier) , (cast_expression "(uint)this" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier , (cast_expression "(uint)pSVar7" ( (type_descriptor "uint" type_identifier) ) identifier) )))))) ;))))))) (return_statement "return local_20[0] + 8;" return (binary_expression "local_20[0] + 8" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : : IDENT < IDENT : :) IDENT (ERROR * , (ERROR IDENT : : IDENT < IDENT : : IDENT) * (type_qualifier const)) , (ERROR IDENT : :) IDENT (ERROR * >) , (ERROR IDENT : : IDENT < IDENT : : IDENT < IDENT : : IDENT) (pointer_declarator * (type_qualifier const) (ERROR , IDENT : :) IDENT) (ERROR * >>) , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT < IDENT : :) IDENT (ERROR * >) , (ERROR IDENT : : IDENT < IDENT : :) IDENT (ERROR * >) , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT (ERROR < BOOL) , IDENT , IDENT (ERROR >) , (ERROR IDENT > : : (function_declarator (array_declarator IDENT [ ]) (parameter_list ( (parameter_declaration TYPE (ERROR < IDENT : : IDENT) (abstract_pointer_declarator *)) , (parameter_declaration TYPE (ERROR : : IDENT < IDENT : : IDENT) (abstract_pointer_declarator * (type_qualifier const))) , (parameter_declaration TYPE (ERROR : :) IDENT) (ERROR * >) , (parameter_declaration TYPE (ERROR : : IDENT < IDENT : : IDENT < IDENT : : IDENT) (abstract_pointer_declarator * (type_qualifier const))) , (parameter_declaration TYPE (ERROR : :) IDENT) (ERROR * >>) , (parameter_declaration TYPE (ERROR : : IDENT : :) IDENT) , (parameter_declaration TYPE (ERROR : : IDENT < IDENT : :) IDENT) (ERROR * >) , (parameter_declaration TYPE (ERROR : : IDENT < IDENT : :) IDENT) (ERROR * >) , (parameter_declaration TYPE (ERROR : : IDENT : :) IDENT) , (parameter_declaration TYPE (ERROR : : IDENT : :) IDENT) , (parameter_declaration TYPE (ERROR : : IDENT : :) IDENT) , (parameter_declaration TYPE (ERROR : : IDENT : :) IDENT) (ERROR < BOOL) , (parameter_declaration TYPE) , (parameter_declaration TYPE) (ERROR >) , (parameter_declaration TYPE (ERROR >) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * IDENT))) ))) { IDENT) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator 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 IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) % IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (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)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * IDENT) + LIT) ;) })) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % IDENT) )))) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (ERROR (binary_expression (binary_expression (binary_expression (binary_expression IDENT < IDENT) (ERROR : : IDENT) * (ERROR ,) IDENT) (ERROR : : IDENT) < IDENT) (ERROR : : IDENT) * IDENT) ,) (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT (ERROR * >) , IDENT) : : (binary_expression IDENT < IDENT) : : (binary_expression IDENT < IDENT) : : (comma_expression (binary_expression IDENT * IDENT) , IDENT) : : (comma_expression IDENT (ERROR * >>) , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) : : (comma_expression IDENT (ERROR * >) , IDENT) : : (binary_expression IDENT < IDENT) : : (comma_expression IDENT (ERROR * >) , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier : (ERROR :) (expression_statement (comma_expression (binary_expression IDENT < BOOL) , (comma_expression BOOL , (binary_expression BOOL >> (ERROR : :) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))))) ;))))))) (return_statement return (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ;) (ERROR }))
(declaration "int __thiscall\nstd::__detail::\n_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)\n\n{\n  uint uVar1;" (primitive_type "int") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "std::__detail::\n_Map_base<gold::" (identifier "std") (: ":") (: ":") (identifier "__detail") (: ":") (: ":") (identifier "_Map_base") (< "<") (identifier "gold") (: ":") (: ":")) (identifier "Symbol") (ERROR "*,std::pair<gold::Symbol*const" (* "*") (, ",") (ERROR "std::pair<gold::Symbol" (identifier "std") (: ":") (: ":") (identifier "pair") (< "<") (identifier "gold") (: ":") (: ":") (identifier "Symbol")) (* "*") (type_qualifier "const" (const "const"))) (, ",") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Symbol") (ERROR "*>" (* "*") (> ">")) (, ",") (ERROR "std::allocator<std::pair<gold::Symbol" (identifier "std") (: ":") (: ":") (identifier "allocator") (< "<") (identifier "std") (: ":") (: ":") (identifier "pair") (< "<") (identifier "gold") (: ":") (: ":") (identifier "Symbol")) (pointer_declarator "*const,gold::Symbol" (* "*") (type_qualifier "const" (const "const")) (ERROR ",gold::" (, ",") (identifier "gold") (: ":") (: ":")) (identifier "Symbol")) (ERROR "*>>" (* "*") (>> ">>")) (, ",") (ERROR "std::__detail::" (identifier "std") (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Select1st") (, ",") (ERROR "std::equal_to<gold::" (identifier "std") (: ":") (: ":") (identifier "equal_to") (< "<") (identifier "gold") (: ":") (: ":")) (identifier "Symbol") (ERROR "*>" (* "*") (> ">")) (, ",") (ERROR "std::hash<gold::" (identifier "std") (: ":") (: ":") (identifier "hash") (< "<") (identifier "gold") (: ":") (: ":")) (identifier "Symbol") (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") (, ",") (identifier "true") (ERROR ">" (> ">")) (, ",") (ERROR "true>\n::operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)\n\n{\n  uint" (identifier "true") (> ">") (: ":") (: ":") (function_declarator "operator[](_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)" (array_declarator "operator[]" (identifier "operator") ([ "[") (] "]")) (parameter_list "(_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>\n             *this,Symbol **param_1)" (( "(") (parameter_declaration "_Map_base<gold::Symbol*" (type_identifier "_Map_base") (ERROR "<gold::Symbol" (< "<") (identifier "gold") (: ":") (: ":") (identifier "Symbol")) (abstract_pointer_declarator "*" (* "*"))) (, ",") (parameter_declaration "std::pair<gold::Symbol*const" (type_identifier "std") (ERROR "::pair<gold::Symbol" (: ":") (: ":") (identifier "pair") (< "<") (identifier "gold") (: ":") (: ":") (identifier "Symbol")) (abstract_pointer_declarator "*const" (* "*") (type_qualifier "const" (const "const")))) (, ",") (parameter_declaration "gold::Symbol" (type_identifier "gold") (ERROR "::" (: ":") (: ":")) (identifier "Symbol")) (ERROR "*>" (* "*") (> ">")) (, ",") (parameter_declaration "std::allocator<std::pair<gold::Symbol*const" (type_identifier "std") (ERROR "::allocator<std::pair<gold::Symbol" (: ":") (: ":") (identifier "allocator") (< "<") (identifier "std") (: ":") (: ":") (identifier "pair") (< "<") (identifier "gold") (: ":") (: ":") (identifier "Symbol")) (abstract_pointer_declarator "*const" (* "*") (type_qualifier "const" (const "const")))) (, ",") (parameter_declaration "gold::Symbol" (type_identifier "gold") (ERROR "::" (: ":") (: ":")) (identifier "Symbol")) (ERROR "*>>" (* "*") (>> ">>")) (, ",") (parameter_declaration "std::__detail::_Select1st" (type_identifier "std") (ERROR "::__detail::" (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Select1st")) (, ",") (parameter_declaration "std::equal_to<gold::Symbol" (type_identifier "std") (ERROR "::equal_to<gold::" (: ":") (: ":") (identifier "equal_to") (< "<") (identifier "gold") (: ":") (: ":")) (identifier "Symbol")) (ERROR "*>" (* "*") (> ">")) (, ",") (parameter_declaration "std::hash<gold::Symbol" (type_identifier "std") (ERROR "::hash<gold::" (: ":") (: ":") (identifier "hash") (< "<") (identifier "gold") (: ":") (: ":")) (identifier "Symbol")) (ERROR "*>" (* "*") (> ">")) (, ",") (parameter_declaration "std::__detail::_Mod_range_hashing" (type_identifier "std") (ERROR "::__detail::" (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Mod_range_hashing")) (, ",") (parameter_declaration "std::__detail::_Default_ranged_hash" (type_identifier "std") (ERROR "::__detail::" (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Default_ranged_hash")) (, ",") (parameter_declaration "std::__detail::_Prime_rehash_policy" (type_identifier "std") (ERROR "::__detail::" (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Prime_rehash_policy")) (, ",") (parameter_declaration "std::__detail::_Hashtable_traits" (type_identifier "std") (ERROR "::__detail::" (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Hashtable_traits")) (ERROR "<false" (< "<") (false "false")) (, ",") (parameter_declaration "false" (type_identifier "false")) (, ",") (parameter_declaration "true" (type_identifier "true")) (ERROR ">" (> ">")) (, ",") (parameter_declaration "true>\n             *this" (type_identifier "true") (ERROR ">" (> ">")) (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Symbol **param_1" (type_identifier "Symbol") (pointer_declarator "**param_1" (* "*") (pointer_declarator "*param_1" (* "*") (identifier "param_1")))) () ")"))) ({ "{") (identifier "uint")) (identifier "uVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "Symbol *pSVar3;" (type_identifier "Symbol") (pointer_declarator "*pSVar3" (* "*") (identifier "pSVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "Symbol *pSVar7;" (type_identifier "Symbol") (pointer_declarator "*pSVar7" (* "*") (identifier "pSVar7")) (; ";")) (declaration "_Hash_node *p_Var8;" (type_identifier "_Hash_node") (pointer_declarator "*p_Var8" (* "*") (identifier "p_Var8")) (; ";")) (declaration "int local_20 [3];" (primitive_type "int") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "uVar1 = *(uint *)(this + 4);" (assignment_expression "uVar1 = *(uint *)(this + 4)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(this + 4)" (* "*") (cast_expression "(uint *)(this + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 4)" (( "(") (binary_expression "this + 4" (identifier "this") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pSVar7 = *param_1;" (assignment_expression "pSVar7 = *param_1" (identifier "pSVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (uVar1 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (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 "p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1);" (assignment_expression "p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1)" (identifier "p_Var8") (= "=") (cast_expression "(_Hash_node *)((uint)pSVar7 % uVar1)" (( "(") (type_descriptor "_Hash_node *" (type_identifier "_Hash_node") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)pSVar7 % uVar1)" (( "(") (binary_expression "(uint)pSVar7 % uVar1" (cast_expression "(uint)pSVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pSVar7")) (% "%") (identifier "uVar1")) () ")")))) (; ";")) (expression_statement "piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4);" (assignment_expression "piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(*(int *)this + (int)p_Var8 * 4)" (* "*") (cast_expression "(int **)(*(int *)this + (int)p_Var8 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)this + (int)p_Var8 * 4)" (( "(") (binary_expression "*(int *)this + (int)p_Var8 * 4" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (+ "+") (binary_expression "(int)p_Var8 * 4" (cast_expression "(int)p_Var8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "p_Var8")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (piVar6 != (int *)0x0) {\n    pSVar3 = (Symbol *)((int *)*piVar6)[1];\n    piVar4 = (int *)*piVar6;\n    do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));\n  }" (if "if") (parenthesized_expression "(piVar6 != (int *)0x0)" (( "(") (binary_expression "piVar6 != (int *)0x0" (identifier "piVar6") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pSVar3 = (Symbol *)((int *)*piVar6)[1];\n    piVar4 = (int *)*piVar6;\n    do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));\n  }" ({ "{") (expression_statement "pSVar3 = (Symbol *)((int *)*piVar6)[1];" (assignment_expression "pSVar3 = (Symbol *)((int *)*piVar6)[1]" (identifier "pSVar3") (= "=") (cast_expression "(Symbol *)((int *)*piVar6)[1]" (( "(") (type_descriptor "Symbol *" (type_identifier "Symbol") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "((int *)*piVar6)[1]" (parenthesized_expression "((int *)*piVar6)" (( "(") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) () ")")) ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar4 = (int *)*piVar6;" (assignment_expression "piVar4 = (int *)*piVar6" (identifier "piVar4") (= "=") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (do_statement "do {\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));" (do "do") (compound_statement "{\n      piVar5 = piVar4;\n      if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }\n      piVar4 = (int *)*piVar5;\n      if (piVar4 == (int *)0x0) break;\n      pSVar3 = (Symbol *)piVar4[1];\n      if (uVar1 == 0) {\n        trap(7);\n      }\n      piVar6 = piVar5;\n    }" ({ "{") (expression_statement "piVar5 = piVar4;" (assignment_expression "piVar5 = piVar4" (identifier "piVar5") (= "=") (identifier "piVar4")) (; ";")) (if_statement "if (pSVar7 == pSVar3) {\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }" (if "if") (parenthesized_expression "(pSVar7 == pSVar3)" (( "(") (binary_expression "pSVar7 == pSVar3" (identifier "pSVar7") (== "==") (identifier "pSVar3")) () ")")) (compound_statement "{\n        if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }\n        break;\n      }" ({ "{") (if_statement "if (*piVar6 != 0) {\n          return *piVar6 + 8;\n        }" (if "if") (parenthesized_expression "(*piVar6 != 0)" (( "(") (binary_expression "*piVar6 != 0" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return *piVar6 + 8;\n        }" ({ "{") (return_statement "return *piVar6 + 8;" (return "return") (binary_expression "*piVar6 + 8" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (number_literal "8")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "piVar4 = (int *)*piVar5;" (assignment_expression "piVar4 = (int *)*piVar5" (identifier "piVar4") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";")) (if_statement "if (piVar4 == (int *)0x0) break;" (if "if") (parenthesized_expression "(piVar4 == (int *)0x0)" (( "(") (binary_expression "piVar4 == (int *)0x0" (identifier "piVar4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pSVar3 = (Symbol *)piVar4[1];" (assignment_expression "pSVar3 = (Symbol *)piVar4[1]" (identifier "pSVar3") (= "=") (cast_expression "(Symbol *)piVar4[1]" (( "(") (type_descriptor "Symbol *" (type_identifier "Symbol") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (uVar1 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (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 "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" (identifier "piVar6") (= "=") (identifier "piVar5")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1))" (( "(") (binary_expression "p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1)" (identifier "p_Var8") (== "==") (cast_expression "(_Hash_node *)((uint)pSVar3 % uVar1)" (( "(") (type_descriptor "_Hash_node *" (type_identifier "_Hash_node") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)pSVar3 % uVar1)" (( "(") (binary_expression "(uint)pSVar3 % uVar1" (cast_expression "(uint)pSVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pSVar3")) (% "%") (identifier "uVar1")) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_operator_new_004c13a8)(0xc)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" (( "(") (pointer_expression "*(code *)PTR_operator_new_004c13a8" (* "*") (cast_expression "(code *)PTR_operator_new_004c13a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_new_004c13a8"))) () ")")) (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar2[1] = *param_1;" (assignment_expression "puVar2[1] = *param_1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (ERROR "_Hashtable<gold::Symbol*,std::pair<gold::Symbol*const," (binary_expression "_Hashtable<gold::Symbol*,std::pair<gold::Symbol*const" (binary_expression "_Hashtable<gold::Symbol*,std::pair<gold" (binary_expression "_Hashtable<gold::Symbol*,std" (binary_expression "_Hashtable<gold" (identifier "_Hashtable") (< "<") (identifier "gold")) (ERROR "::Symbol" (: ":") (: ":") (identifier "Symbol")) (* "*") (ERROR "," (, ",")) (identifier "std")) (ERROR "::pair" (: ":") (: ":") (identifier "pair")) (< "<") (identifier "gold")) (ERROR "::Symbol" (: ":") (: ":") (identifier "Symbol")) (* "*") (identifier "const")) (, ",")) (labeled_statement "gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);" (statement_identifier "gold") (ERROR "::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std:" (: ":") (: ":") (comma_expression "Symbol*>,std" (identifier "Symbol") (ERROR "*>" (* "*") (> ">")) (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<std" (identifier "allocator") (< "<") (identifier "std")) (: ":") (: ":") (binary_expression "pair<gold" (identifier "pair") (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Symbol*const,gold" (binary_expression "Symbol*const" (identifier "Symbol") (* "*") (identifier "const")) (, ",") (identifier "gold")) (: ":") (: ":") (comma_expression "Symbol*>>,std" (identifier "Symbol") (ERROR "*>>" (* "*") (>> ">>")) (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);" (statement_identifier "__detail") (ERROR "::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std:" (: ":") (: ":") (comma_expression "_Select1st,std" (identifier "_Select1st") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "equal_to<gold" (identifier "equal_to") (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Symbol*>,std" (identifier "Symbol") (ERROR "*>" (* "*") (> ">")) (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "hash<gold" (identifier "hash") (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Symbol*>,std" (identifier "Symbol") (ERROR "*>" (* "*") (> ">")) (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__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)local_20,(uint)this,p_Var8,(uint)pSVar7);" (statement_identifier "__detail") (ERROR "::_Mod_range_hashing,std:" (: ":") (: ":") (comma_expression "_Mod_range_hashing,std" (identifier "_Mod_range_hashing") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" (statement_identifier "__detail") (ERROR "::_Default_ranged_hash,std:" (: ":") (: ":") (comma_expression "_Default_ranged_hash,std" (identifier "_Default_ranged_hash") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" (statement_identifier "__detail") (ERROR "::_Prime_rehash_policy,std:" (: ":") (: ":") (comma_expression "_Prime_rehash_policy,std" (identifier "_Prime_rehash_policy") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" (statement_identifier "__detail") (: ":") (ERROR ":" (: ":")) (expression_statement "_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7);" (comma_expression "_Hashtable_traits<false,false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" (binary_expression "_Hashtable_traits<false" (identifier "_Hashtable_traits") (< "<") (false "false")) (, ",") (comma_expression "false,true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" (false "false") (, ",") (binary_expression "true>>\n  ::_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" (true "true") (>> ">>") (ERROR "::" (: ":") (: ":")) (call_expression "_M_insert_unique_node((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" (identifier "_M_insert_unique_node") (argument_list "((uint)local_20,(uint)this,p_Var8,(uint)pSVar7)" (( "(") (cast_expression "(uint)local_20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_20")) (, ",") (cast_expression "(uint)this" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "this")) (, ",") (identifier "p_Var8") (, ",") (cast_expression "(uint)pSVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pSVar7")) () ")")))))) (; ";")))))))) (return_statement "return local_20[0] + 8;" (return "return") (binary_expression "local_20[0] + 8" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "8")) (; ";")) (ERROR "}" (} "}"))

/* DWARF original prototype: mapped_type *
   operator[](_Map_base<gold::Symbol*,_std::pair<gold::Symbol*_const,_gold::Symbol*>,_std::allocator<std::pair<gold::Symbol*_const,_gold::Symbol*>_>,_std::__detail::_Select1st,_std::equal_to<gold::Symbol*>,_std::hash<gold::Symbol*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
   * this, key_type * __k) */

type_7 * __thiscall
std::__detail::
_Map_base<gold::type_1*,_std::pair<gold::type_1*_const,_gold::type_1*>,_std::allocator<std::pair<gold::type_1*_const,_gold::type_1*>_>,_std::__detail::_Select1st,_std::equal_to<gold::type_1*>,_std::hash<gold::type_1*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
::operator[](_Map_base<gold::type_1*,_std::pair<gold::type_1*_const,_gold::type_1*>,_std::allocator<std::pair<gold::type_1*_const,_gold::type_1*>_>,_std::__detail::_Select1st,_std::equal_to<gold::type_1*>,_std::hash<gold::type_1*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
             *var_1,type_3 *__k)

{
  type_5 var_2;
  type_2 *__n_elt;
  type_3 var_7;
  type_4 *__h;
  int *var_8;
  int *piVar4;
  int *var_5;
  type_3 var_6;
  type_5 var_4;
  type_6 *var_9;
  
  var_2 = *(type_5 *)(var_1 + 4);
  var_6 = *__k;
  if (var_2 == 0) {
    var_3(7);
  }
  var_4 = (type_5)var_6 % var_2;
  var_5 = *(int **)(*(int *)var_1 + var_4 * 4);
  if (var_5 != (int *)0x0) {
    var_7 = (type_3)((int *)*var_5)[1];
    var_8 = (int *)*var_5;
    do {
      piVar4 = var_8;
      if (var_6 == var_7) {
        if (*var_5 != 0) {
          return (type_7 *)(*var_5 + 8);
        }
        break;
      }
      var_8 = (int *)*piVar4;
      if (var_8 == (int *)0x0) break;
      var_7 = (type_3)var_8[1];
      if (var_2 == 0) {
        var_3(7);
      }
      var_5 = piVar4;
    } while (var_4 == (type_5)var_7 % var_2);
  }
  __n_elt = (type_2 *)(*(type_8 *)PTR_operator_new_004c13a8)(0xc);
  __n_elt[1] = *__k;
  *__n_elt = 0;
  __n_elt[2] = 0;
  _Hashtable<gold::type_1*,_std::pair<gold::type_1*_const,_gold::type_1*>,_std::allocator<std::pair<gold::type_1*_const,_gold::type_1*>_>,_std::__detail::_Select1st,_std::equal_to<gold::type_1*>,_std::hash<gold::type_1*>,_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<gold::type_1*,_std::pair<gold::type_1*_const,_gold::type_1*>,_std::allocator<std::pair<gold::type_1*_const,_gold::type_1*>_>,_std::__detail::_Select1st,_std::equal_to<gold::type_1*>,_std::hash<gold::type_1*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
              *)&var_9,(function_2)var_1,var_4,(function_1 *)var_6,(function_2)__n_elt);
  return (type_7 *)(var_9 + 2);
}


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

/* std::__detail::_Map_base<gold::Symbol*, std::pair<gold::Symbol* const, gold::Symbol*>,
   std::allocator<std::pair<gold::Symbol* const, gold::Symbol*> >, std::__detail::_Select1st,
   std::equal_to<gold::Symbol*>, std::hash<gold::Symbol*>, std::__detail::_Mod_range_hashing,
   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
   std::__detail::_Hashtable_traits<false, false, true>, true>::MASKED(gold::Symbol* const&) */

int __thiscall
std::__detail::
_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>
::MASKED(_Map_base<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<false,false,true>,true>
             *this,Symbol **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  Symbol *pSVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  Symbol *pSVar7;
  _Hash_node *p_Var8;
  int local_20 [3];
  
  uVar1 = *(uint *)(this + 4);
  pSVar7 = *param_1;
  if (uVar1 == 0) {
    trap(7);
  }
  p_Var8 = (_Hash_node *)((uint)pSVar7 % uVar1);
  piVar6 = *(int **)(*(int *)this + (int)p_Var8 * 4);
  if (piVar6 != (int *)0x0) {
    pSVar3 = (Symbol *)((int *)*piVar6)[1];
    piVar4 = (int *)*piVar6;
    do {
      piVar5 = piVar4;
      if (pSVar7 == pSVar3) {
        if (*piVar6 != 0) {
          return *piVar6 + 8;
        }
        break;
      }
      piVar4 = (int *)*piVar5;
      if (piVar4 == (int *)0x0) break;
      pSVar3 = (Symbol *)piVar4[1];
      if (uVar1 == 0) {
        trap(7);
      }
      piVar6 = piVar5;
    } while (p_Var8 == (_Hash_node *)((uint)pSVar3 % uVar1));
  }
  puVar2 = (undefined4 *)(*(code *)PTR_operator_new_004c13a8)(0xc);
  puVar2[1] = *param_1;
  *puVar2 = 0;
  puVar2[2] = 0;
  _Hashtable<gold::Symbol*,std::pair<gold::Symbol*const,gold::Symbol*>,std::allocator<std::pair<gold::Symbol*const,gold::Symbol*>>,std::__detail::_Select1st,std::equal_to<gold::Symbol*>,std::hash<gold::Symbol*>,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)local_20,(uint)this,p_Var8,(uint)pSVar7);
  return local_20[0] + 8;
}

