
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void ~Stringpool_template(Stringpool_template<char> * this, int
   __in_chrg) */

void __thiscall
gold::Stringpool_template<char>::~Stringpool_template(Stringpool_template<char> *this,int __in_chrg)

{
  _List_node_base *p_Var1;
  pointer pvVar2;
  pointer plVar3;
  __bucket_type *pp_Var4;
  _List_node_base *p_Var5;
  pointer pvVar6;
  
  clear(this);
  p_Var5 = (this->strings_).
           super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::Stringpool_template<char>::Stringdata*>_>
           ._M_impl._M_node.super__List_node_base._M_next;
  while (p_Var5 != (_List_node_base *)&this->strings_) {
    p_Var1 = p_Var5->_M_next;
    operator_delete(p_Var5);
    p_Var5 = p_Var1;
  }
  pvVar2 = (this->key_to_offset_).chunks_.
           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>
           ._M_impl._M_finish;
  pvVar6 = (this->key_to_offset_).chunks_.
           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>
           ._M_impl._M_start;
  if (pvVar2 != pvVar6) {
    do {
      plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;
      if (plVar3 != (pointer)0x0) {
        operator_delete(plVar3);
      }
      pvVar6 = pvVar6 + 1;
    } while (pvVar2 != pvVar6);
    pvVar6 = (this->key_to_offset_).chunks_.
             super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>
             ._M_impl._M_start;
  }
  if (pvVar6 != (pointer)0x0) {
    operator_delete(pvVar6);
  }
  std::
  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
           *)this);
  pp_Var4 = (this->string_set_)._M_h._M_buckets;
  if (pp_Var4 == &(this->string_set_)._M_h._M_single_bucket) {
    return;
  }
  operator_delete(pp_Var4);
  return;
}



void FUN_0021a020(long *param_1)

{
  long *plVar1;
  long *plVar2;
  
  FUN_00219f70();
  plVar1 = (long *)param_1[0xb];
  while (plVar1 != param_1 + 0xb) {
    plVar1 = (long *)*plVar1;
    FUN_00276d20();
  }
  plVar1 = (long *)param_1[8];
  plVar2 = (long *)param_1[7];
  if (plVar1 != plVar2) {
    do {
      if (*plVar2 != 0) {
        FUN_00276d20();
      }
      plVar2 = plVar2 + 3;
    } while (plVar1 != plVar2);
    plVar2 = (long *)param_1[7];
  }
  if (plVar2 != (long *)0x0) {
    FUN_00276d20(plVar2);
  }
  FUN_00219f10(param_1);
  if ((long *)*param_1 == param_1 + 6) {
    return;
  }
  FUN_00276d20();
  return;
}


PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
LEA R12,[RBP + 0x58]
CALL 0x00219f70
MOV RDI,qword ptr [RBP + 0x58]
CMP RDI,R12
JZ 0x0021a050
NOP dword ptr [RAX]
MOV RBX,qword ptr [RDI]
CALL 0x00276d20
MOV RDI,RBX
CMP RBX,R12
JNZ 0x0021a040
MOV R12,qword ptr [RBP + 0x40]
MOV RBX,qword ptr [RBP + 0x38]
CMP R12,RBX
JZ 0x0021a07a
NOP dword ptr [RAX]
MOV RDI,qword ptr [RBX]
TEST RDI,RDI
JZ 0x0021a06d
CALL 0x00276d20
ADD RBX,0x18
CMP R12,RBX
JNZ 0x0021a060
MOV RBX,qword ptr [RBP + 0x38]
TEST RBX,RBX
JZ 0x0021a087
MOV RDI,RBX
CALL 0x00276d20
MOV RDI,RBP
ADD RBP,0x30
CALL 0x00219f10
MOV RDI,qword ptr [RBP + -0x30]
CMP RDI,RBP
JZ 0x0021a0a8
POP RBX
POP RBP
POP R12
JMP 0x00276d20
POP RBX
POP RBP
POP R12
RET
(translation_unit "void FUN_0021a020(long *param_1)\n\n{\n  long *plVar1;\n  long *plVar2;\n  \n  FUN_00219f70();\n  plVar1 = (long *)param_1[0xb];\n  while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }\n  plVar1 = (long *)param_1[8];\n  plVar2 = (long *)param_1[7];\n  if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }\n  if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }\n  FUN_00219f10(param_1);\n  if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }\n  FUN_00276d20();\n  return;\n}\n\n" (function_definition "void FUN_0021a020(long *param_1)\n\n{\n  long *plVar1;\n  long *plVar2;\n  \n  FUN_00219f70();\n  plVar1 = (long *)param_1[0xb];\n  while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }\n  plVar1 = (long *)param_1[8];\n  plVar2 = (long *)param_1[7];\n  if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }\n  if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }\n  FUN_00219f10(param_1);\n  if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }\n  FUN_00276d20();\n  return;\n}" primitive_type (function_declarator "FUN_0021a020(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  \n  FUN_00219f70();\n  plVar1 = (long *)param_1[0xb];\n  while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }\n  plVar1 = (long *)param_1[8];\n  plVar2 = (long *)param_1[7];\n  if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }\n  if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }\n  FUN_00219f10(param_1);\n  if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }\n  FUN_00276d20();\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (expression_statement "FUN_00219f70();" (call_expression "FUN_00219f70()" identifier (argument_list "()" ( ))) ;) (expression_statement "plVar1 = (long *)param_1[0xb];" (assignment_expression "plVar1 = (long *)param_1[0xb]" identifier = (cast_expression "(long *)param_1[0xb]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (while_statement "while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }" while (parenthesized_expression "(plVar1 != param_1 + 0xb)" ( (binary_expression "plVar1 != param_1 + 0xb" identifier != (binary_expression "param_1 + 0xb" identifier + number_literal)) )) (compound_statement "{\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }" { (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ;) (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "plVar1 = (long *)param_1[8];" (assignment_expression "plVar1 = (long *)param_1[8]" identifier = (cast_expression "(long *)param_1[8]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[8]" identifier [ number_literal ]))) ;) (expression_statement "plVar2 = (long *)param_1[7];" (assignment_expression "plVar2 = (long *)param_1[7]" identifier = (cast_expression "(long *)param_1[7]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (if_statement "if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }" if (parenthesized_expression "(plVar1 != plVar2)" ( (binary_expression "plVar1 != plVar2" identifier != identifier) )) (compound_statement "{\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }" { (do_statement "do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);" do (compound_statement "{\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    }" { (if_statement "if (*plVar2 != 0) {\n        FUN_00276d20();\n      }" if (parenthesized_expression "(*plVar2 != 0)" ( (binary_expression "*plVar2 != 0" (pointer_expression "*plVar2" * identifier) != number_literal) )) (compound_statement "{\n        FUN_00276d20();\n      }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "plVar2 = plVar2 + 3;" (assignment_expression "plVar2 = plVar2 + 3" identifier = (binary_expression "plVar2 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar1 != plVar2)" ( (binary_expression "plVar1 != plVar2" identifier != identifier) )) ;) (expression_statement "plVar2 = (long *)param_1[7];" (assignment_expression "plVar2 = (long *)param_1[7]" identifier = (cast_expression "(long *)param_1[7]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) })) (if_statement "if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }" if (parenthesized_expression "(plVar2 != (long *)0x0)" ( (binary_expression "plVar2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_00276d20(plVar2);\n  }" { (expression_statement "FUN_00276d20(plVar2);" (call_expression "FUN_00276d20(plVar2)" identifier (argument_list "(plVar2)" ( identifier ))) ;) })) (expression_statement "FUN_00219f10(param_1);" (call_expression "FUN_00219f10(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }" if (parenthesized_expression "((long *)*param_1 == param_1 + 6)" ( (binary_expression "(long *)*param_1 == param_1 + 6" (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) == (binary_expression "param_1 + 6" identifier + number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void ~Stringpool_template(Stringpool_template<char> * this, int\n   __in_chrg) */\n\nvoid __thiscall\ngold::Stringpool_template<char>::~Stringpool_template(Stringpool_template<char> *this,int __in_chrg)\n\n{\n  _List_node_base *p_Var1;\n  pointer pvVar2;\n  pointer plVar3;\n  __bucket_type *pp_Var4;\n  _List_node_base *p_Var5;\n  pointer pvVar6;\n  \n  clear(this);\n  p_Var5 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::Stringpool_template<char>::Stringdata*>_>\n           ._M_impl._M_node.super__List_node_base._M_next;\n  while (p_Var5 != (_List_node_base *)&this->strings_) {\n    p_Var1 = p_Var5->_M_next;\n    operator_delete(p_Var5);\n    p_Var5 = p_Var1;\n  }\n  pvVar2 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n           ._M_impl._M_finish;\n  pvVar6 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n           ._M_impl._M_start;\n  if (pvVar2 != pvVar6) {\n    do {\n      plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;\n      if (plVar3 != (pointer)0x0) {\n        operator_delete(plVar3);\n      }\n      pvVar6 = pvVar6 + 1;\n    } while (pvVar2 != pvVar6);\n    pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n             ._M_impl._M_start;\n  }\n  if (pvVar6 != (pointer)0x0) {\n    operator_delete(pvVar6);\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);\n  pp_Var4 = (this->string_set_)._M_h._M_buckets;\n  if (pp_Var4 == &(this->string_set_)._M_h._M_single_bucket) {\n    return;\n  }\n  operator_delete(pp_Var4);\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Stringpool_template<char>::~Stringpool_template(Stringpool_template<char> *this,int __in_chrg)\n\n{\n  _List_node_base *p_Var1;\n  pointer pvVar2;\n  pointer plVar3;\n  __bucket_type *pp_Var4;\n  _List_node_base *p_Var5;\n  pointer pvVar6;\n  \n  clear(this);\n  p_Var5 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::Stringpool_template<char>::Stringdata*>_>\n           ._M_impl._M_node.super__List_node_base._M_next;\n  while (p_Var5 != (_List_node_base *)&this->strings_) {\n    p_Var1 = p_Var5->_M_next;\n    operator_delete(p_Var5);\n    p_Var5 = p_Var1;\n  }\n  pvVar2 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n           ._M_impl._M_finish;\n  pvVar6 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n           ._M_impl._M_start;\n  if (pvVar2 != pvVar6) {\n    do {\n      plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;\n      if (plVar3 != (pointer)0x0) {\n        operator_delete(plVar3);\n      }\n      pvVar6 = pvVar6 + 1;\n    } while (pvVar2 != pvVar6);\n    pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n             ._M_impl._M_start;\n  }\n  if (pvVar6 != (pointer)0x0) {\n    operator_delete(pvVar6);\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);\n  pp_Var4 = (this->string_set_)._M_h._M_buckets;\n  if (pp_Var4 == &(this->string_set_)._M_h._M_single_bucket) {\n    return;\n  }\n  operator_delete(pp_Var4);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Stringpool_template<char>::~" identifier : : identifier < primitive_type > : : ~) (function_declarator "Stringpool_template(Stringpool_template<char> *this,int __in_chrg)" identifier (parameter_list "(Stringpool_template<char> *this,int __in_chrg)" ( (parameter_declaration "Stringpool_template<char> *this" type_identifier (ERROR "<char>" < primitive_type >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "int __in_chrg" primitive_type identifier) ))) (compound_statement "{\n  _List_node_base *p_Var1;\n  pointer pvVar2;\n  pointer plVar3;\n  __bucket_type *pp_Var4;\n  _List_node_base *p_Var5;\n  pointer pvVar6;\n  \n  clear(this);\n  p_Var5 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::Stringpool_template<char>::Stringdata*>_>\n           ._M_impl._M_node.super__List_node_base._M_next;\n  while (p_Var5 != (_List_node_base *)&this->strings_) {\n    p_Var1 = p_Var5->_M_next;\n    operator_delete(p_Var5);\n    p_Var5 = p_Var1;\n  }\n  pvVar2 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n           ._M_impl._M_finish;\n  pvVar6 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n           ._M_impl._M_start;\n  if (pvVar2 != pvVar6) {\n    do {\n      plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;\n      if (plVar3 != (pointer)0x0) {\n        operator_delete(plVar3);\n      }\n      pvVar6 = pvVar6 + 1;\n    } while (pvVar2 != pvVar6);\n    pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n             ._M_impl._M_start;\n  }\n  if (pvVar6 != (pointer)0x0) {\n    operator_delete(pvVar6);\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);\n  pp_Var4 = (this->string_set_)._M_h._M_buckets;\n  if (pp_Var4 == &(this->string_set_)._M_h._M_single_bucket) {\n    return;\n  }\n  operator_delete(pp_Var4);\n  return;\n}" { (declaration "_List_node_base *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "pointer pvVar2;" type_identifier identifier ;) (declaration "pointer plVar3;" type_identifier identifier ;) (declaration "__bucket_type *pp_Var4;" type_identifier (pointer_declarator "*pp_Var4" * identifier) ;) (declaration "_List_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "pointer pvVar6;" type_identifier identifier ;) (expression_statement "clear(this);" (call_expression "clear(this)" identifier (argument_list "(this)" ( identifier ))) ;) (ERROR "p_Var5 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::" (comma_expression "p_Var5 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata*,_std" (binary_expression "p_Var5 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata" (binary_expression "p_Var5 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char" (assignment_expression "p_Var5 = (this->strings_).\n           super__List_base<gold" identifier = (binary_expression "(this->strings_).\n           super__List_base<gold" (field_expression "(this->strings_).\n           super__List_base" (parenthesized_expression "(this->strings_)" ( (field_expression "this->strings_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Stringpool_template" : : identifier) < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Stringpool_template<char>::Stringdata*>_>\n           ._M_impl._M_node.super__List_node_base._M_next;" (field_expression "Stringpool_template<char>::Stringdata*>_>\n           ._M_impl._M_node.super__List_node_base._M_next" (field_expression "Stringpool_template<char>::Stringdata*>_>\n           ._M_impl._M_node.super__List_node_base" (field_expression "Stringpool_template<char>::Stringdata*>_>\n           ._M_impl._M_node" (field_expression "Stringpool_template<char>::Stringdata*>_>\n           ._M_impl" (binary_expression "Stringpool_template<char>::Stringdata*>_" (binary_expression "Stringpool_template<char>::Stringdata" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) identifier) (ERROR "*" *) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (while_statement "while (p_Var5 != (_List_node_base *)&this->strings_) {\n    p_Var1 = p_Var5->_M_next;\n    operator_delete(p_Var5);\n    p_Var5 = p_Var1;\n  }" while (parenthesized_expression "(p_Var5 != (_List_node_base *)&this->strings_)" ( (binary_expression "p_Var5 != (_List_node_base *)&this->strings_" identifier != (cast_expression "(_List_node_base *)&this->strings_" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->strings_" & (field_expression "this->strings_" identifier -> field_identifier)))) )) (compound_statement "{\n    p_Var1 = p_Var5->_M_next;\n    operator_delete(p_Var5);\n    p_Var5 = p_Var1;\n  }" { (expression_statement "p_Var1 = p_Var5->_M_next;" (assignment_expression "p_Var1 = p_Var5->_M_next" identifier = (field_expression "p_Var5->_M_next" identifier -> field_identifier)) ;) (expression_statement "operator_delete(p_Var5);" (call_expression "operator_delete(p_Var5)" identifier (argument_list "(p_Var5)" ( identifier ))) ;) (expression_statement "p_Var5 = p_Var1;" (assignment_expression "p_Var5 = p_Var1" identifier = identifier) ;) })) (ERROR "pvVar2 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::" (comma_expression "pvVar2 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std" (binary_expression "pvVar2 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int" (assignment_expression "pvVar2 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std" identifier = (binary_expression "(this->key_to_offset_).chunks_.\n           super__Vector_base<std" (field_expression "(this->key_to_offset_).chunks_.\n           super__Vector_base" (field_expression "(this->key_to_offset_).chunks_" (parenthesized_expression "(this->key_to_offset_)" ( (field_expression "this->key_to_offset_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::vector" : : identifier) < identifier) , identifier) : : (binary_expression "allocator<long_int>_>,_std" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<long_int,_std" (binary_expression "vector<long_int" identifier < identifier) , identifier) : :) (expression_statement "allocator<long_int>_>_>_>\n           ._M_impl._M_finish;" (field_expression "allocator<long_int>_>_>_>\n           ._M_impl._M_finish" (field_expression "allocator<long_int>_>_>_>\n           ._M_impl" (binary_expression "allocator<long_int>_>_>_" (binary_expression "allocator<long_int>_>_" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "pvVar6 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::" (comma_expression "pvVar6 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int,_std" (binary_expression "pvVar6 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<long_int" (assignment_expression "pvVar6 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std" identifier = (binary_expression "(this->key_to_offset_).chunks_.\n           super__Vector_base<std" (field_expression "(this->key_to_offset_).chunks_.\n           super__Vector_base" (field_expression "(this->key_to_offset_).chunks_" (parenthesized_expression "(this->key_to_offset_)" ( (field_expression "this->key_to_offset_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::vector" : : identifier) < identifier) , identifier) : : (binary_expression "allocator<long_int>_>,_std" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<long_int,_std" (binary_expression "vector<long_int" identifier < identifier) , identifier) : :) (expression_statement "allocator<long_int>_>_>_>\n           ._M_impl._M_start;" (field_expression "allocator<long_int>_>_>_>\n           ._M_impl._M_start" (field_expression "allocator<long_int>_>_>_>\n           ._M_impl" (binary_expression "allocator<long_int>_>_>_" (binary_expression "allocator<long_int>_>_" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (pvVar2 != pvVar6) {\n    do {\n      plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;\n      if (plVar3 != (pointer)0x0) {\n        operator_delete(plVar3);\n      }\n      pvVar6 = pvVar6 + 1;\n    } while (pvVar2 != pvVar6);\n    pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n             ._M_impl._M_start;\n  }" if (parenthesized_expression "(pvVar2 != pvVar6)" ( (binary_expression "pvVar2 != pvVar6" identifier != identifier) )) (compound_statement "{\n    do {\n      plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;\n      if (plVar3 != (pointer)0x0) {\n        operator_delete(plVar3);\n      }\n      pvVar6 = pvVar6 + 1;\n    } while (pvVar2 != pvVar6);\n    pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::allocator<long_int>_>_>_>\n             ._M_impl._M_start;\n  }" { (do_statement "do {\n      plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;\n      if (plVar3 != (pointer)0x0) {\n        operator_delete(plVar3);\n      }\n      pvVar6 = pvVar6 + 1;\n    } while (pvVar2 != pvVar6);" do (compound_statement "{\n      plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;\n      if (plVar3 != (pointer)0x0) {\n        operator_delete(plVar3);\n      }\n      pvVar6 = pvVar6 + 1;\n    }" { (expression_statement "plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start;" (assignment_expression "plVar3 = (pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start" identifier = (field_expression "(pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl._M_start" (field_expression "(pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)._M_impl" (parenthesized_expression "(pvVar6->super__Vector_base<long_int,_std::allocator<long_int>_>)" ( (ERROR "pvVar6->super__Vector_base<long_int,_std::" (comma_expression "pvVar6->super__Vector_base<long_int,_std" (binary_expression "pvVar6->super__Vector_base<long_int" (field_expression "pvVar6->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<long_int>_>" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (plVar3 != (pointer)0x0) {\n        operator_delete(plVar3);\n      }" if (parenthesized_expression "(plVar3 != (pointer)0x0)" ( (binary_expression "plVar3 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n        operator_delete(plVar3);\n      }" { (expression_statement "operator_delete(plVar3);" (call_expression "operator_delete(plVar3)" identifier (argument_list "(plVar3)" ( identifier ))) ;) })) (expression_statement "pvVar6 = pvVar6 + 1;" (assignment_expression "pvVar6 = pvVar6 + 1" identifier = (binary_expression "pvVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pvVar2 != pvVar6)" ( (binary_expression "pvVar2 != pvVar6" identifier != identifier) )) ;) (ERROR "pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std::vector<long_int,_std::allocator<long_int>_>,_std::allocator<std::vector<long_int,_std::" (comma_expression "pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std::vector<long_int,_std" (binary_expression "pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std::vector<long_int" (assignment_expression "pvVar6 = (this->key_to_offset_).chunks_.\n             super__Vector_base<std" identifier = (binary_expression "(this->key_to_offset_).chunks_.\n             super__Vector_base<std" (field_expression "(this->key_to_offset_).chunks_.\n             super__Vector_base" (field_expression "(this->key_to_offset_).chunks_" (parenthesized_expression "(this->key_to_offset_)" ( (field_expression "this->key_to_offset_" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::vector" : : identifier) < identifier) , identifier) : : (binary_expression "allocator<long_int>_>,_std" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<long_int,_std" (binary_expression "vector<long_int" identifier < identifier) , identifier) : :) (expression_statement "allocator<long_int>_>_>_>\n             ._M_impl._M_start;" (field_expression "allocator<long_int>_>_>_>\n             ._M_impl._M_start" (field_expression "allocator<long_int>_>_>_>\n             ._M_impl" (binary_expression "allocator<long_int>_>_>_" (binary_expression "allocator<long_int>_>_" (binary_expression "allocator<long_int>_" (binary_expression "allocator<long_int" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) })) (if_statement "if (pvVar6 != (pointer)0x0) {\n    operator_delete(pvVar6);\n  }" if (parenthesized_expression "(pvVar6 != (pointer)0x0)" ( (binary_expression "pvVar6 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n    operator_delete(pvVar6);\n  }" { (expression_statement "operator_delete(pvVar6);" (call_expression "operator_delete(pvVar6)" identifier (argument_list "(pvVar6)" ( identifier ))) ;) })) (labeled_statement "std::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);" statement_identifier (ERROR "::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std:" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (binary_expression "Stringpool_template<char" identifier < identifier) > : : (comma_expression "Hashkey,_std" identifier , identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (binary_expression "Stringpool_template<char" identifier < identifier) > : : (comma_expression "Hashkey,_long_unsigned_int>,_std" identifier , (binary_expression "_long_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (binary_expression "Stringpool_template<char" identifier < identifier) > : : (comma_expression "Hashkey,_long_unsigned_int>_>,_std" identifier , (binary_expression "_long_unsigned_int>_>,_std" (binary_expression "_long_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) :) : (labeled_statement "__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);" statement_identifier (ERROR "::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std:" : : (comma_expression "_Select1st,_gold" identifier , identifier) : : (binary_expression "Stringpool_template<char" identifier < identifier) > : : (comma_expression "Stringpool_eq,_gold" identifier , identifier) : : (binary_expression "Stringpool_template<char" identifier < identifier) > : : (comma_expression "Stringpool_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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);" (comma_expression "_Hashtable_traits<true,_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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)" identifier , (binary_expression "_true>_>\n  ::clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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)" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "clear((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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)" identifier (argument_list "((_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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)" ( (parenthesized_expression "(_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_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)" ( (ERROR "_Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<char>::Stringpool_eq,_gold::Stringpool_template<char>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (binary_expression "_Hashtable<gold" identifier < identifier) : : (comma_expression "Stringpool_template<char>::Hashkey,_std" (binary_expression "Stringpool_template<char>::Hashkey" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (comma_expression "Stringpool_template<char>::Hashkey,_long_unsigned_int>,_std" (binary_expression "Stringpool_template<char>::Hashkey" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) identifier) , (binary_expression "_long_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (comma_expression "Stringpool_template<char>::Hashkey,_long_unsigned_int>_>,_std" (binary_expression "Stringpool_template<char>::Hashkey" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) identifier) , (binary_expression "_long_unsigned_int>_>,_std" (binary_expression "_long_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : identifier : : (comma_expression "_Select1st,_gold" identifier , identifier) : : (comma_expression "Stringpool_template<char>::Stringpool_eq,_gold" (binary_expression "Stringpool_template<char>::Stringpool_eq" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) identifier) , identifier) : : (comma_expression "Stringpool_template<char>::Stringpool_hash,_std" (binary_expression "Stringpool_template<char>::Stringpool_hash" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) identifier) , identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<true,_false,_true>_>\n           *)this" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n           *)this" identifier , (binary_expression "_true>_>\n           *)this" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)this" * (ERROR ")" )) identifier)))) )) )))))) ;))))))) (expression_statement "pp_Var4 = (this->string_set_)._M_h._M_buckets;" (assignment_expression "pp_Var4 = (this->string_set_)._M_h._M_buckets" identifier = (field_expression "(this->string_set_)._M_h._M_buckets" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (pp_Var4 == &(this->string_set_)._M_h._M_single_bucket) {\n    return;\n  }" if (parenthesized_expression "(pp_Var4 == &(this->string_set_)._M_h._M_single_bucket)" ( (binary_expression "pp_Var4 == &(this->string_set_)._M_h._M_single_bucket" identifier == (pointer_expression "&(this->string_set_)._M_h._M_single_bucket" & (field_expression "(this->string_set_)._M_h._M_single_bucket" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "operator_delete(pp_Var4);" (call_expression "operator_delete(pp_Var4)" identifier (argument_list "(pp_Var4)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0021a020(long *param_1)\n\n{\n  long *plVar1;\n  long *plVar2;\n  \n  FUN_00219f70();\n  plVar1 = (long *)param_1[0xb];\n  while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }\n  plVar1 = (long *)param_1[8];\n  plVar2 = (long *)param_1[7];\n  if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }\n  if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }\n  FUN_00219f10(param_1);\n  if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }\n  FUN_00276d20();\n  return;\n}\n\n" (function_definition "void FUN_0021a020(long *param_1)\n\n{\n  long *plVar1;\n  long *plVar2;\n  \n  FUN_00219f70();\n  plVar1 = (long *)param_1[0xb];\n  while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }\n  plVar1 = (long *)param_1[8];\n  plVar2 = (long *)param_1[7];\n  if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }\n  if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }\n  FUN_00219f10(param_1);\n  if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }\n  FUN_00276d20();\n  return;\n}" primitive_type (function_declarator "FUN_0021a020(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  \n  FUN_00219f70();\n  plVar1 = (long *)param_1[0xb];\n  while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }\n  plVar1 = (long *)param_1[8];\n  plVar2 = (long *)param_1[7];\n  if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }\n  if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }\n  FUN_00219f10(param_1);\n  if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }\n  FUN_00276d20();\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (expression_statement "FUN_00219f70();" (call_expression "FUN_00219f70()" identifier (argument_list "()" ( ))) ;) (expression_statement "plVar1 = (long *)param_1[0xb];" (assignment_expression "plVar1 = (long *)param_1[0xb]" identifier = (cast_expression "(long *)param_1[0xb]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (while_statement "while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }" while (parenthesized_expression "(plVar1 != param_1 + 0xb)" ( (binary_expression "plVar1 != param_1 + 0xb" identifier != (binary_expression "param_1 + 0xb" identifier + number_literal)) )) (compound_statement "{\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }" { (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" identifier = (cast_expression "(long *)*plVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar1" * identifier))) ;) (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "plVar1 = (long *)param_1[8];" (assignment_expression "plVar1 = (long *)param_1[8]" identifier = (cast_expression "(long *)param_1[8]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[8]" identifier [ number_literal ]))) ;) (expression_statement "plVar2 = (long *)param_1[7];" (assignment_expression "plVar2 = (long *)param_1[7]" identifier = (cast_expression "(long *)param_1[7]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (if_statement "if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }" if (parenthesized_expression "(plVar1 != plVar2)" ( (binary_expression "plVar1 != plVar2" identifier != identifier) )) (compound_statement "{\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }" { (do_statement "do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);" do (compound_statement "{\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    }" { (if_statement "if (*plVar2 != 0) {\n        FUN_00276d20();\n      }" if (parenthesized_expression "(*plVar2 != 0)" ( (binary_expression "*plVar2 != 0" (pointer_expression "*plVar2" * identifier) != number_literal) )) (compound_statement "{\n        FUN_00276d20();\n      }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "plVar2 = plVar2 + 3;" (assignment_expression "plVar2 = plVar2 + 3" identifier = (binary_expression "plVar2 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar1 != plVar2)" ( (binary_expression "plVar1 != plVar2" identifier != identifier) )) ;) (expression_statement "plVar2 = (long *)param_1[7];" (assignment_expression "plVar2 = (long *)param_1[7]" identifier = (cast_expression "(long *)param_1[7]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) })) (if_statement "if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }" if (parenthesized_expression "(plVar2 != (long *)0x0)" ( (binary_expression "plVar2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_00276d20(plVar2);\n  }" { (expression_statement "FUN_00276d20(plVar2);" (call_expression "FUN_00276d20(plVar2)" identifier (argument_list "(plVar2)" ( identifier ))) ;) })) (expression_statement "FUN_00219f10(param_1);" (call_expression "FUN_00219f10(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }" if (parenthesized_expression "((long *)*param_1 == param_1 + 6)" ( (binary_expression "(long *)*param_1 == param_1 + 6" (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) == (binary_expression "param_1 + 6" identifier + number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (binary_expression IDENT + LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0021a020(long *param_1)\n\n{\n  long *plVar1;\n  long *plVar2;\n  \n  FUN_00219f70();\n  plVar1 = (long *)param_1[0xb];\n  while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }\n  plVar1 = (long *)param_1[8];\n  plVar2 = (long *)param_1[7];\n  if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }\n  if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }\n  FUN_00219f10(param_1);\n  if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }\n  FUN_00276d20();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0021a020(long *param_1)" (identifier "FUN_0021a020") (parameter_list "(long *param_1)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  \n  FUN_00219f70();\n  plVar1 = (long *)param_1[0xb];\n  while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }\n  plVar1 = (long *)param_1[8];\n  plVar2 = (long *)param_1[7];\n  if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }\n  if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }\n  FUN_00219f10(param_1);\n  if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }\n  FUN_00276d20();\n  return;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (expression_statement "FUN_00219f70();" (call_expression "FUN_00219f70()" (identifier "FUN_00219f70") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "plVar1 = (long *)param_1[0xb];" (assignment_expression "plVar1 = (long *)param_1[0xb]" (identifier "plVar1") (= "=") (cast_expression "(long *)param_1[0xb]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (while_statement "while (plVar1 != param_1 + 0xb) {\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }" (while "while") (parenthesized_expression "(plVar1 != param_1 + 0xb)" (( "(") (binary_expression "plVar1 != param_1 + 0xb" (identifier "plVar1") (!= "!=") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb"))) () ")")) (compound_statement "{\n    plVar1 = (long *)*plVar1;\n    FUN_00276d20();\n  }" ({ "{") (expression_statement "plVar1 = (long *)*plVar1;" (assignment_expression "plVar1 = (long *)*plVar1" (identifier "plVar1") (= "=") (cast_expression "(long *)*plVar1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar1" (* "*") (identifier "plVar1")))) (; ";")) (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "plVar1 = (long *)param_1[8];" (assignment_expression "plVar1 = (long *)param_1[8]" (identifier "plVar1") (= "=") (cast_expression "(long *)param_1[8]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "plVar2 = (long *)param_1[7];" (assignment_expression "plVar2 = (long *)param_1[7]" (identifier "plVar2") (= "=") (cast_expression "(long *)param_1[7]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (; ";")) (if_statement "if (plVar1 != plVar2) {\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }" (if "if") (parenthesized_expression "(plVar1 != plVar2)" (( "(") (binary_expression "plVar1 != plVar2" (identifier "plVar1") (!= "!=") (identifier "plVar2")) () ")")) (compound_statement "{\n    do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);\n    plVar2 = (long *)param_1[7];\n  }" ({ "{") (do_statement "do {\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    } while (plVar1 != plVar2);" (do "do") (compound_statement "{\n      if (*plVar2 != 0) {\n        FUN_00276d20();\n      }\n      plVar2 = plVar2 + 3;\n    }" ({ "{") (if_statement "if (*plVar2 != 0) {\n        FUN_00276d20();\n      }" (if "if") (parenthesized_expression "(*plVar2 != 0)" (( "(") (binary_expression "*plVar2 != 0" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00276d20();\n      }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "plVar2 = plVar2 + 3;" (assignment_expression "plVar2 = plVar2 + 3" (identifier "plVar2") (= "=") (binary_expression "plVar2 + 3" (identifier "plVar2") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar1 != plVar2)" (( "(") (binary_expression "plVar1 != plVar2" (identifier "plVar1") (!= "!=") (identifier "plVar2")) () ")")) (; ";")) (expression_statement "plVar2 = (long *)param_1[7];" (assignment_expression "plVar2 = (long *)param_1[7]" (identifier "plVar2") (= "=") (cast_expression "(long *)param_1[7]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (; ";")) (} "}"))) (if_statement "if (plVar2 != (long *)0x0) {\n    FUN_00276d20(plVar2);\n  }" (if "if") (parenthesized_expression "(plVar2 != (long *)0x0)" (( "(") (binary_expression "plVar2 != (long *)0x0" (identifier "plVar2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_00276d20(plVar2);\n  }" ({ "{") (expression_statement "FUN_00276d20(plVar2);" (call_expression "FUN_00276d20(plVar2)" (identifier "FUN_00276d20") (argument_list "(plVar2)" (( "(") (identifier "plVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00219f10(param_1);" (call_expression "FUN_00219f10(param_1)" (identifier "FUN_00219f10") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if ((long *)*param_1 == param_1 + 6) {\n    return;\n  }" (if "if") (parenthesized_expression "((long *)*param_1 == param_1 + 6)" (( "(") (binary_expression "(long *)*param_1 == param_1 + 6" (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (== "==") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void ~Stringpool_template(Stringpool_template<char> * this, int
   __in_chrg) */

void __thiscall
gold::function_1<char>::~function_1(function_1<char> *this,int __in_chrg)

{
  type_1 *p_Var1;
  type_2 var_9;
  type_2 var_12;
  type_3 *var_15;
  type_1 *var_5;
  type_2 var_10;
  
  var_1(this);
  var_5 = (this->strings_).
           super__List_base<gold::function_1<var_2>::var_3*,_std::var_7<gold::function_1<var_2>::var_3*>var_4>
           ._M_impl._M_node.super__List_node_base._M_next;
  while (var_5 != (type_1 *)&this->strings_) {
    p_Var1 = var_5->_M_next;
    var_6(var_5);
    var_5 = p_Var1;
  }
  var_9 = (this->key_to_offset_).chunks_.
           super__Vector_base<std::vector<var_8,_std::var_7<var_8>var_4>,_std::var_7<std::vector<var_8,_std::var_7<var_8>var_4>var_4>var_4>
           ._M_impl._M_finish;
  var_10 = (this->key_to_offset_).chunks_.
           super__Vector_base<std::vector<var_8,_std::var_7<var_8>var_4>,_std::var_7<std::vector<var_8,_std::var_7<var_8>var_4>var_4>var_4>
           ._M_impl._M_start;
  if (var_9 != var_10) {
    do {
      var_12 = (var_10->super__Vector_base<var_8,_std::var_7<var_8>var_4>var_11)._M_impl._M_start;
      if (var_12 != (type_2)0x0) {
        var_6(var_12);
      }
      var_10 = var_10 + 1;
    } while (var_9 != var_10);
    var_10 = (this->key_to_offset_).chunks_.
             super__Vector_base<std::vector<var_8,_std::var_7<var_8>var_4>,_std::var_7<std::vector<var_8,_std::var_7<var_8>var_4>var_4>var_4>
             ._M_impl._M_start;
  }
  if (var_10 != (type_2)0x0) {
    var_6(var_10);
  }
  std::
  _Hashtable<gold::function_1<var_2>::Hashkey,_std::pair<const_gold::function_1<var_2>::Hashkey,_long_unsigned_int>,_std::var_7<std::pair<const_gold::function_1<var_2>::Hashkey,_long_unsigned_int>var_4>,_std::__detail::_Select1st,_gold::function_1<var_2>::Stringpool_eq,_gold::function_1<var_2>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_13<true,_false,var_14>var_4>
  ::var_1((_Hashtable<gold::function_1<var_2>::Hashkey,_std::pair<const_gold::function_1<var_2>::Hashkey,_long_unsigned_int>,_std::var_7<std::pair<const_gold::function_1<var_2>::Hashkey,_long_unsigned_int>var_4>,_std::__detail::_Select1st,_gold::function_1<var_2>::Stringpool_eq,_gold::function_1<var_2>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_13<true,_false,var_14>var_4>
           *)this);
  var_15 = (this->string_set_)._M_h._M_buckets;
  if (var_15 == &(this->string_set_)._M_h._M_single_bucket) {
    return;
  }
  var_6(var_15);
  return;
}


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

void MASKED(long *param_1)

{
  long *plVar1;
  long *plVar2;
  
  FUN_00219f70();
  plVar1 = (long *)param_1[0xb];
  while (plVar1 != param_1 + 0xb) {
    plVar1 = (long *)*plVar1;
    FUN_00276d20();
  }
  plVar1 = (long *)param_1[8];
  plVar2 = (long *)param_1[7];
  if (plVar1 != plVar2) {
    do {
      if (*plVar2 != 0) {
        FUN_00276d20();
      }
      plVar2 = plVar2 + 3;
    } while (plVar1 != plVar2);
    plVar2 = (long *)param_1[7];
  }
  if (plVar2 != (long *)0x0) {
    FUN_00276d20(plVar2);
  }
  FUN_00219f10(param_1);
  if ((long *)*param_1 == param_1 + 6) {
    return;
  }
  FUN_00276d20();
  return;
}

