
/* DWARF original prototype: iterator
   erase(_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
   * this, const_iterator __it) */

iterator __thiscall
std::
_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
::erase(_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
        *this,const_iterator __it)

{
  __node_type *p_Var1;
  __node_type *in_a2;
  __node_type *__n;
  __node_base *__prev_n;
  
  if (*(uint *)((int)__it.
                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>
                     ._M_cur + 4) == 0) {
    trap(7);
  }
  __prev_n = (__node_base *)
             (in_a2->_M_hash_code %
             *(uint *)((int)__it.
                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>
                            ._M_cur + 4));
  p_Var1 = *(__node_type **)
            (*(int *)__it.
                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>
                     ._M_cur + (int)__prev_n * 4);
  do {
    __n = p_Var1;
    p_Var1 = (__node_type *)
             (__n->
             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>
             ).super__Hash_node_base._M_nxt;
  } while (p_Var1 != in_a2);
  _M_erase(this,(size_type)
                __it.
                super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>
                ._M_cur,__prev_n,__n);
  return (iterator)
         (_Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>
          )this;
}



/* std::_Hashtable<std::pair<unsigned int, unsigned int>, std::pair<std::pair<unsigned int, unsigned
   int> const, gold::Symbol*>, std::allocator<std::pair<std::pair<unsigned int, unsigned int> const,
   gold::Symbol*> >, std::__detail::_Select1st, gold::Symbol_table::Symbol_table_eq,
   gold::Symbol_table::Symbol_table_hash, std::__detail::_Mod_range_hashing,
   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
   std::__detail::_Hashtable_traits<true, false, true>
   >::erase(std::__detail::_Node_const_iterator<std::pair<std::pair<unsigned int, unsigned int>
   const, gold::Symbol*>, false, true>) */

uint std::
     _Hashtable<std::pair<unsigned_int,unsigned_int>,std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>,std::allocator<std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>>,std::__detail::_Select1st,gold::Symbol_table::Symbol_table_eq,gold::Symbol_table::Symbol_table_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>
     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)

{
  int *piVar1;
  _Hash_node *p_Var2;
  
  if (*(uint *)(param_2 + 4) == 0) {
    trap(7);
  }
  p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4));
  piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4);
  do {
    piVar1 = (int *)*piVar1;
  } while (piVar1 != (int *)param_3);
  _M_erase(param_1,param_2,p_Var2);
  return param_1;
}


lui gp,0x20
addiu gp,gp,-0x778
addu gp,gp,t9
addiu sp,sp,-0x28
lw v1,0x0(a1)
or t0,a2,zero
lw a2,0x4(a1)
sw s0,0x20(sp)
or s0,a0,zero
sw gp,0x18(sp)
sw ra,0x24(sp)
lw a0,0x10(t0)
teq a2,zero
divu a0,a2
mfhi a2
sll v0,a2,0x2
addu v1,v1,v0
b 0x0023a998
_lw a3,0x0(v1)
or a3,v1,zero
lw v1,0x0(a3)
bne v1,t0,0x0023a994
_lw t9,-0x4f04(gp)
or a0,s0,zero
bal 0x0023a840
_sw t0,0x10(sp)
or v0,s0,zero
lw ra,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x28
(translation_unit "/* std::_Hashtable<std::pair<unsigned int, unsigned int>, std::pair<std::pair<unsigned int, unsigned\n   int> const, gold::Symbol*>, std::allocator<std::pair<std::pair<unsigned int, unsigned int> const,\n   gold::Symbol*> >, std::__detail::_Select1st, gold::Symbol_table::Symbol_table_eq,\n   gold::Symbol_table::Symbol_table_hash, std::__detail::_Mod_range_hashing,\n   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,\n   std::__detail::_Hashtable_traits<true, false, true>\n   >::erase(std::__detail::_Node_const_iterator<std::pair<std::pair<unsigned int, unsigned int>\n   const, gold::Symbol*>, false, true>) */\n\nuint std::\n     _Hashtable<std::pair<unsigned_int,unsigned_int>,std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>,std::allocator<std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>>,std::__detail::_Select1st,gold::Symbol_table::Symbol_table_eq,gold::Symbol_table::Symbol_table_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)\n\n{\n  int *piVar1;\n  _Hash_node *p_Var2;\n  \n  if (*(uint *)(param_2 + 4) == 0) {\n    trap(7);\n  }\n  p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4));\n  piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4);\n  do {\n    piVar1 = (int *)*piVar1;\n  } while (piVar1 != (int *)param_3);\n  _M_erase(param_1,param_2,p_Var2);\n  return param_1;\n}\n\n" comment (declaration "uint std::\n     _Hashtable<std::pair<unsigned_int,unsigned_int>,std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>,std::allocator<std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>>,std::__detail::_Select1st,gold::Symbol_table::Symbol_table_eq,gold::Symbol_table::Symbol_table_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)\n\n{\n  int *piVar1;" type_identifier (ERROR "std::\n     _Hashtable<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">" >) , (ERROR "std::pair<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">const" > const) , (ERROR "gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "std::allocator<std::pair<std::pair<" identifier : : identifier < identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">const" > const) , (ERROR "gold::" identifier : :) identifier (ERROR "*>>" * >>) , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "gold::Symbol_table::" identifier : : identifier : :) identifier , (ERROR "gold::Symbol_table::" identifier : : identifier : :) identifier , (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 "<true" < true) , identifier , (ERROR "true>>\n     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)\n\n{\n  int" identifier >> : : (function_declarator "erase(uint param_1,_Hash_node_base *param_2,int param_3)" identifier (parameter_list "(uint param_1,_Hash_node_base *param_2,int param_3)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "_Hash_node_base *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) { primitive_type) (pointer_declarator "*piVar1" * identifier) ;) (declaration "_Hash_node *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" ( (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4));" (assignment_expression "p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" identifier = (cast_expression "(_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" ( (type_descriptor "_Hash_node *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" ( (binary_expression "*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4)" (pointer_expression "*(uint *)(param_3 + 0x10)" * (cast_expression "(uint *)(param_3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) % (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4);" (assignment_expression "piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4)" identifier = (pointer_expression "*(int **)(*(int *)param_2 + (int)p_Var2 * 4)" * (cast_expression "(int **)(*(int *)param_2 + (int)p_Var2 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + (int)p_Var2 * 4)" ( (binary_expression "*(int *)param_2 + (int)p_Var2 * 4" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "(int)p_Var2 * 4" (cast_expression "(int)p_Var2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (do_statement "do {\n    piVar1 = (int *)*piVar1;\n  } while (piVar1 != (int *)param_3);" do (compound_statement "{\n    piVar1 = (int *)*piVar1;\n  }" { (expression_statement "piVar1 = (int *)*piVar1;" (assignment_expression "piVar1 = (int *)*piVar1" identifier = (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) ;) }) while (parenthesized_expression "(piVar1 != (int *)param_3)" ( (binary_expression "piVar1 != (int *)param_3" identifier != (cast_expression "(int *)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) (expression_statement "_M_erase(param_1,param_2,p_Var2);" (call_expression "_M_erase(param_1,param_2,p_Var2)" identifier (argument_list "(param_1,param_2,p_Var2)" ( identifier , identifier , identifier ))) ;) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit "/* DWARF original prototype: iterator\n   erase(_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n   * this, const_iterator __it) */\n\niterator __thiscall\nstd::\n_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n::erase(_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n        *this,const_iterator __it)\n\n{\n  __node_type *p_Var1;\n  __node_type *in_a2;\n  __node_type *__n;\n  __node_base *__prev_n;\n  \n  if (*(uint *)((int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + 4) == 0) {\n    trap(7);\n  }\n  __prev_n = (__node_base *)\n             (in_a2->_M_hash_code %\n             *(uint *)((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4));\n  p_Var1 = *(__node_type **)\n            (*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + (int)__prev_n * 4);\n  do {\n    __n = p_Var1;\n    p_Var1 = (__node_type *)\n             (__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             ).super__Hash_node_base._M_nxt;\n  } while (p_Var1 != in_a2);\n  _M_erase(this,(size_type)\n                __it.\n                super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                ._M_cur,__prev_n,__n);\n  return (iterator)\n         (_Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n          )this;\n}\n\n" comment (declaration "iterator __thiscall\nstd::\n_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n::erase(_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n        *this,const_iterator __it)\n\n{\n  __node_type *p_Var1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::\n_Hashtable<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">" >) , (ERROR "_std::pair<const_std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">" >) , (ERROR "_gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::allocator<std::pair<const_std::pair<" identifier : : identifier < identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">" >) , (ERROR "_gold::Symbol*>" identifier : : identifier * >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_gold::Symbol_table::" identifier : : identifier : :) identifier , (ERROR "_gold::Symbol_table::" identifier : : identifier : :) identifier , (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 "<true" < true) , identifier , (ERROR "_true>_>\n::erase(_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n        *this,const_iterator __it)\n\n{\n  __node_type" identifier > identifier > : : (function_declarator "erase(_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n        *this,const_iterator __it)" identifier (parameter_list "(_Hashtable<std::pair<unsigned_int,_unsigned_int>,_std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_std::allocator<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>,_std::__detail::_Select1st,_gold::Symbol_table::Symbol_table_eq,_gold::Symbol_table::Symbol_table_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n        *this,const_iterator __it)" ( (parameter_declaration "_Hashtable<std::pair<unsigned_int" type_identifier (ERROR "<std::pair<" < identifier : : identifier <) identifier) , (parameter_declaration "_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_std::pair<const_std::pair<unsigned_int" type_identifier (ERROR "::pair<const_std::pair<" : : identifier < identifier : : identifier <) identifier) , (parameter_declaration "_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_gold::Symbol" type_identifier (ERROR "::" : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::allocator<std::pair<const_std::pair<unsigned_int" type_identifier (ERROR "::allocator<std::pair<const_std::pair<" : : identifier < identifier : : identifier < identifier : : identifier <) identifier) , (parameter_declaration "_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_gold::Symbol*>_" type_identifier (ERROR "::Symbol*>" : : identifier * >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_gold::Symbol_table::Symbol_table_eq" type_identifier (ERROR "::Symbol_table::" : : identifier : :) identifier) , (parameter_declaration "_gold::Symbol_table::Symbol_table_hash" type_identifier (ERROR "::Symbol_table::" : : identifier : :) identifier) , (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 "<true" < true) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_true>_>\n        *this" type_identifier (ERROR ">_>" > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "const_iterator __it" type_identifier identifier) ))) { identifier) (pointer_declarator "*p_Var1" * identifier) ;) (declaration "__node_type *in_a2;" type_identifier (pointer_declarator "*in_a2" * identifier) ;) (declaration "__node_type *__n;" type_identifier (pointer_declarator "*__n" * identifier) ;) (declaration "__node_base *__prev_n;" type_identifier (pointer_declarator "*__prev_n" * identifier) ;) (if_statement "if (*(uint *)((int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + 4) == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(*(uint *)((int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + 4) == 0)" ( (binary_expression "*(uint *)((int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + 4) == 0" (pointer_expression "*(uint *)((int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + 4)" * (cast_expression "(uint *)((int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + 4)" ( (ERROR "(int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ." (comma_expression "(int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold" (binary_expression "(int)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int" (binary_expression "(int)__it.\n                     super__Node_iterator_base<std::pair<const_std" (binary_expression "(int)__it.\n                     super__Node_iterator_base<std" (cast_expression "(int)__it.\n                     super__Node_iterator_base" ( (type_descriptor "int" primitive_type) ) (field_expression "__it.\n                     super__Node_iterator_base" identifier . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : identifier * > , identifier > .) (binary_expression "_M_cur + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "__prev_n = (__node_base *)\n             (in_a2->_M_hash_code %\n             *(uint *)((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4));" (assignment_expression "__prev_n = (__node_base *)\n             (in_a2->_M_hash_code %\n             *(uint *)((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4))" identifier = (cast_expression "(__node_base *)\n             (in_a2->_M_hash_code %\n             *(uint *)((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4))" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_a2->_M_hash_code %\n             *(uint *)((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4))" ( (binary_expression "in_a2->_M_hash_code %\n             *(uint *)((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4)" (field_expression "in_a2->_M_hash_code" identifier -> field_identifier) % (pointer_expression "*(uint *)((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4)" * (cast_expression "(uint *)((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ._M_cur + 4)" ( (ERROR "(int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                            ." (comma_expression "(int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold" (binary_expression "(int)__it.\n                            super__Node_iterator_base<std::pair<const_std::pair<unsigned_int" (binary_expression "(int)__it.\n                            super__Node_iterator_base<std::pair<const_std" (binary_expression "(int)__it.\n                            super__Node_iterator_base<std" (cast_expression "(int)__it.\n                            super__Node_iterator_base" ( (type_descriptor "int" primitive_type) ) (field_expression "__it.\n                            super__Node_iterator_base" identifier . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : identifier * > , identifier > .) (binary_expression "_M_cur + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "p_Var1 = *(__node_type **)\n            (*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + (int)__prev_n * 4);" (assignment_expression "p_Var1 = *(__node_type **)\n            (*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + (int)__prev_n * 4)" identifier = (pointer_expression "*(__node_type **)\n            (*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + (int)__prev_n * 4)" * (cast_expression "(__node_type **)\n            (*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + (int)__prev_n * 4)" ( (type_descriptor "__node_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ._M_cur + (int)__prev_n * 4)" ( (ERROR "*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                     ." (comma_expression "*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold" (binary_expression "*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std::pair<unsigned_int" (binary_expression "*(int *)__it.\n                     super__Node_iterator_base<std::pair<const_std" (binary_expression "*(int *)__it.\n                     super__Node_iterator_base<std" (pointer_expression "*(int *)__it.\n                     super__Node_iterator_base" * (cast_expression "(int *)__it.\n                     super__Node_iterator_base" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "__it.\n                     super__Node_iterator_base" identifier . field_identifier))) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : identifier * > , identifier > .) (binary_expression "_M_cur + (int)__prev_n * 4" identifier + (binary_expression "(int)__prev_n * 4" (cast_expression "(int)__prev_n" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (do_statement "do {\n    __n = p_Var1;\n    p_Var1 = (__node_type *)\n             (__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             ).super__Hash_node_base._M_nxt;\n  } while (p_Var1 != in_a2);" do (compound_statement "{\n    __n = p_Var1;\n    p_Var1 = (__node_type *)\n             (__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             ).super__Hash_node_base._M_nxt;\n  }" { (expression_statement "__n = p_Var1;" (assignment_expression "__n = p_Var1" identifier = identifier) ;) (expression_statement "p_Var1 = (__node_type *)\n             (__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             ).super__Hash_node_base._M_nxt;" (assignment_expression "p_Var1 = (__node_type *)\n             (__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             ).super__Hash_node_base._M_nxt" identifier = (cast_expression "(__node_type *)\n             (__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             ).super__Hash_node_base._M_nxt" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             ).super__Hash_node_base._M_nxt" (field_expression "(__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             ).super__Hash_node_base" (parenthesized_expression "(__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>_>\n             )" ( (comma_expression "__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold" (binary_expression "__n->\n             super__Hash_node_value_base<std::pair<const_std::pair<unsigned_int" (binary_expression "__n->\n             super__Hash_node_value_base<std::pair<const_std" (binary_expression "__n->\n             super__Hash_node_value_base<std" (field_expression "__n->\n             super__Hash_node_value_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) (ERROR "::Symbol*>_>" : : identifier * > identifier >) )) . field_identifier) . field_identifier))) ;) }) while (parenthesized_expression "(p_Var1 != in_a2)" ( (binary_expression "p_Var1 != in_a2" identifier != identifier) )) ;) (expression_statement "_M_erase(this,(size_type)\n                __it.\n                super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                ._M_cur,__prev_n,__n);" (call_expression "_M_erase(this,(size_type)\n                __it.\n                super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                ._M_cur,__prev_n,__n)" identifier (argument_list "(this,(size_type)\n                __it.\n                super__Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n                ._M_cur,__prev_n,__n)" ( identifier , (binary_expression "(size_type)\n                __it.\n                super__Node_iterator_base<std::pair<const_std::pair<unsigned_int" (binary_expression "(size_type)\n                __it.\n                super__Node_iterator_base<std::pair<const_std" (binary_expression "(size_type)\n                __it.\n                super__Node_iterator_base<std" (cast_expression "(size_type)\n                __it.\n                super__Node_iterator_base" ( (type_descriptor "size_type" type_identifier) ) (field_expression "__it.\n                super__Node_iterator_base" identifier . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier (ERROR ">" >) , (ERROR "_gold::" identifier : :) (field_expression "Symbol*>,_true>\n                ._M_cur" (binary_expression "Symbol*>,_true" identifier * (ERROR ">," > ,) identifier) (ERROR ">" >) . field_identifier) , identifier , identifier ))) ;) (ERROR "return (iterator)\n         (_Node_iterator_base<std::pair<const_std::pair<unsigned_int,_unsigned_int>,_gold::Symbol*>,_true>\n          )this;\n}" return (parenthesized_expression "(iterator)" ( identifier )) ( (binary_expression "_Node_iterator_base<std::pair<const_std::pair<unsigned_int" (binary_expression "_Node_iterator_base<std::pair<const_std" (binary_expression "_Node_iterator_base<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier (ERROR ">" >) , (ERROR "_gold::" identifier : :) (binary_expression "Symbol*>,_true>\n          )this" (binary_expression "Symbol*>,_true" identifier * (ERROR ">," > ,) identifier) > (ERROR ")" )) identifier) ; }))
(translation_unit "uint std::\n     _Hashtable<std::pair<unsigned_int,unsigned_int>,std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>,std::allocator<std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>>,std::__detail::_Select1st,gold::Symbol_table::Symbol_table_eq,gold::Symbol_table::Symbol_table_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)\n\n{\n  int *piVar1;\n  _Hash_node *p_Var2;\n  \n  if (*(uint *)(param_2 + 4) == 0) {\n    trap(7);\n  }\n  p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4));\n  piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4);\n  do {\n    piVar1 = (int *)*piVar1;\n  } while (piVar1 != (int *)param_3);\n  _M_erase(param_1,param_2,p_Var2);\n  return param_1;\n}\n\n" (declaration "uint std::\n     _Hashtable<std::pair<unsigned_int,unsigned_int>,std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>,std::allocator<std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>>,std::__detail::_Select1st,gold::Symbol_table::Symbol_table_eq,gold::Symbol_table::Symbol_table_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)\n\n{\n  int *piVar1;" type_identifier (ERROR "std::\n     _Hashtable<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">" >) , (ERROR "std::pair<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">const" > const) , (ERROR "gold::" identifier : :) identifier (ERROR "*>" * >) , (ERROR "std::allocator<std::pair<std::pair<" identifier : : identifier < identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">const" > const) , (ERROR "gold::" identifier : :) identifier (ERROR "*>>" * >>) , (ERROR "std::__detail::" identifier : : identifier : :) identifier , (ERROR "gold::Symbol_table::" identifier : : identifier : :) identifier , (ERROR "gold::Symbol_table::" identifier : : identifier : :) identifier , (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 "<true" < true) , identifier , (ERROR "true>>\n     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)\n\n{\n  int" identifier >> : : (function_declarator "erase(uint param_1,_Hash_node_base *param_2,int param_3)" identifier (parameter_list "(uint param_1,_Hash_node_base *param_2,int param_3)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "_Hash_node_base *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) { primitive_type) (pointer_declarator "*piVar1" * identifier) ;) (declaration "_Hash_node *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" ( (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4));" (assignment_expression "p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" identifier = (cast_expression "(_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" ( (type_descriptor "_Hash_node *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" ( (binary_expression "*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4)" (pointer_expression "*(uint *)(param_3 + 0x10)" * (cast_expression "(uint *)(param_3 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) % (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4);" (assignment_expression "piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4)" identifier = (pointer_expression "*(int **)(*(int *)param_2 + (int)p_Var2 * 4)" * (cast_expression "(int **)(*(int *)param_2 + (int)p_Var2 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + (int)p_Var2 * 4)" ( (binary_expression "*(int *)param_2 + (int)p_Var2 * 4" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "(int)p_Var2 * 4" (cast_expression "(int)p_Var2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (do_statement "do {\n    piVar1 = (int *)*piVar1;\n  } while (piVar1 != (int *)param_3);" do (compound_statement "{\n    piVar1 = (int *)*piVar1;\n  }" { (expression_statement "piVar1 = (int *)*piVar1;" (assignment_expression "piVar1 = (int *)*piVar1" identifier = (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) ;) }) while (parenthesized_expression "(piVar1 != (int *)param_3)" ( (binary_expression "piVar1 != (int *)param_3" identifier != (cast_expression "(int *)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) (expression_statement "_M_erase(param_1,param_2,p_Var2);" (call_expression "_M_erase(param_1,param_2,p_Var2)" identifier (argument_list "(param_1,param_2,p_Var2)" ( identifier , identifier , identifier ))) ;) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ERROR IDENT : : IDENT < IDENT : : IDENT <) IDENT , IDENT (ERROR >) , (ERROR IDENT : : IDENT < IDENT : : IDENT <) IDENT , IDENT (ERROR > const) , (ERROR IDENT : :) IDENT (ERROR * >) , (ERROR IDENT : : IDENT < IDENT : : IDENT < IDENT : : IDENT <) IDENT , IDENT (ERROR > const) , (ERROR IDENT : :) IDENT (ERROR * >>) , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT , (ERROR IDENT : : IDENT : :) IDENT (ERROR < BOOL) , IDENT , (ERROR IDENT >> : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) { TYPE) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (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)) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) (ERROR }))
(declaration "uint std::\n     _Hashtable<std::pair<unsigned_int,unsigned_int>,std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>,std::allocator<std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>>,std::__detail::_Select1st,gold::Symbol_table::Symbol_table_eq,gold::Symbol_table::Symbol_table_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)\n\n{\n  int *piVar1;" (type_identifier "uint") (ERROR "std::\n     _Hashtable<std::pair<" (identifier "std") (: ":") (: ":") (identifier "_Hashtable") (< "<") (identifier "std") (: ":") (: ":") (identifier "pair") (< "<")) (identifier "unsigned_int") (, ",") (identifier "unsigned_int") (ERROR ">" (> ">")) (, ",") (ERROR "std::pair<std::pair<" (identifier "std") (: ":") (: ":") (identifier "pair") (< "<") (identifier "std") (: ":") (: ":") (identifier "pair") (< "<")) (identifier "unsigned_int") (, ",") (identifier "unsigned_int") (ERROR ">const" (> ">") (const "const")) (, ",") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Symbol") (ERROR "*>" (* "*") (> ">")) (, ",") (ERROR "std::allocator<std::pair<std::pair<" (identifier "std") (: ":") (: ":") (identifier "allocator") (< "<") (identifier "std") (: ":") (: ":") (identifier "pair") (< "<") (identifier "std") (: ":") (: ":") (identifier "pair") (< "<")) (identifier "unsigned_int") (, ",") (identifier "unsigned_int") (ERROR ">const" (> ">") (const "const")) (, ",") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Symbol") (ERROR "*>>" (* "*") (>> ">>")) (, ",") (ERROR "std::__detail::" (identifier "std") (: ":") (: ":") (identifier "__detail") (: ":") (: ":")) (identifier "_Select1st") (, ",") (ERROR "gold::Symbol_table::" (identifier "gold") (: ":") (: ":") (identifier "Symbol_table") (: ":") (: ":")) (identifier "Symbol_table_eq") (, ",") (ERROR "gold::Symbol_table::" (identifier "gold") (: ":") (: ":") (identifier "Symbol_table") (: ":") (: ":")) (identifier "Symbol_table_hash") (, ",") (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 "<true" (< "<") (true "true")) (, ",") (identifier "false") (, ",") (ERROR "true>>\n     ::erase(uint param_1,_Hash_node_base *param_2,int param_3)\n\n{\n  int" (identifier "true") (>> ">>") (: ":") (: ":") (function_declarator "erase(uint param_1,_Hash_node_base *param_2,int param_3)" (identifier "erase") (parameter_list "(uint param_1,_Hash_node_base *param_2,int param_3)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "_Hash_node_base *param_2" (type_identifier "_Hash_node_base") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) ({ "{") (primitive_type "int")) (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "_Hash_node *p_Var2;" (type_identifier "_Hash_node") (pointer_declarator "*p_Var2" (* "*") (identifier "p_Var2")) (; ";")) (if_statement "if (*(uint *)(param_2 + 4) == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 4) == 0)" (( "(") (binary_expression "*(uint *)(param_2 + 4) == 0" (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4));" (assignment_expression "p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" (identifier "p_Var2") (= "=") (cast_expression "(_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" (( "(") (type_descriptor "_Hash_node *" (type_identifier "_Hash_node") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4))" (( "(") (binary_expression "*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4)" (pointer_expression "*(uint *)(param_3 + 0x10)" (* "*") (cast_expression "(uint *)(param_3 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) (% "%") (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4);" (assignment_expression "piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(*(int *)param_2 + (int)p_Var2 * 4)" (* "*") (cast_expression "(int **)(*(int *)param_2 + (int)p_Var2 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_2 + (int)p_Var2 * 4)" (( "(") (binary_expression "*(int *)param_2 + (int)p_Var2 * 4" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (binary_expression "(int)p_Var2 * 4" (cast_expression "(int)p_Var2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "p_Var2")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (do_statement "do {\n    piVar1 = (int *)*piVar1;\n  } while (piVar1 != (int *)param_3);" (do "do") (compound_statement "{\n    piVar1 = (int *)*piVar1;\n  }" ({ "{") (expression_statement "piVar1 = (int *)*piVar1;" (assignment_expression "piVar1 = (int *)*piVar1" (identifier "piVar1") (= "=") (cast_expression "(int *)*piVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar1 != (int *)param_3)" (( "(") (binary_expression "piVar1 != (int *)param_3" (identifier "piVar1") (!= "!=") (cast_expression "(int *)param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3"))) () ")")) (; ";")) (expression_statement "_M_erase(param_1,param_2,p_Var2);" (call_expression "_M_erase(param_1,param_2,p_Var2)" (identifier "_M_erase") (argument_list "(param_1,param_2,p_Var2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "p_Var2") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (ERROR "}" (} "}"))
(translation_unit (declaration type: (type_identifier) (ERROR (identifier) (identifier) (identifier) (identifier)) declarator: (identifier) declarator: (identifier) (ERROR) (ERROR (identifier) (identifier) (identifier) (identifier)) declarator: (identifier) declarator: (identifier) (ERROR) (ERROR (identifier)) declarator: (identifier) (ERROR) (ERROR (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)) declarator: (identifier) declarator: (identifier) (ERROR) (ERROR (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 (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (identifier) (identifier)) declarator: (identifier) (ERROR (true)) declarator: (identifier) (ERROR (identifier) (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) (primitive_type)) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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)))))))) (do_statement body: (compound_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)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (return_statement (identifier)) (ERROR))

/* std::_Hashtable<std::pair<unsigned int, unsigned int>, std::pair<std::pair<unsigned int, unsigned
   int> const, gold::Symbol*>, std::allocator<std::pair<std::pair<unsigned int, unsigned int> const,
   gold::Symbol*> >, std::__detail::_Select1st, gold::Symbol_table::Symbol_table_eq,
   gold::Symbol_table::Symbol_table_hash, std::__detail::_Mod_range_hashing,
   std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy,
   std::__detail::_Hashtable_traits<true, false, true>
   >::MASKED(std::__detail::_Node_const_iterator<std::pair<std::pair<unsigned int, unsigned int>
   const, gold::Symbol*>, false, true>) */

uint std::
     _Hashtable<std::pair<unsigned_int,unsigned_int>,std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>,std::allocator<std::pair<std::pair<unsigned_int,unsigned_int>const,gold::Symbol*>>,std::__detail::_Select1st,gold::Symbol_table::Symbol_table_eq,gold::Symbol_table::Symbol_table_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>
     ::MASKED(uint param_1,_Hash_node_base *param_2,int param_3)

{
  int *piVar1;
  _Hash_node *p_Var2;
  
  if (*(uint *)(param_2 + 4) == 0) {
    trap(7);
  }
  p_Var2 = (_Hash_node *)(*(uint *)(param_3 + 0x10) % *(uint *)(param_2 + 4));
  piVar1 = *(int **)(*(int *)param_2 + (int)p_Var2 * 4);
  do {
    piVar1 = (int *)*piVar1;
  } while (piVar1 != (int *)param_3);
  _M_MASKED(param_1,param_2,p_Var2);
  return param_1;
}

