
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void clear(Stringpool_template<char> * this) */

void __thiscall gold::Stringpool_template<char>::clear(Stringpool_template<char> *this)

{
  Stringdata_list *pSVar1;
  _List_node_base *p_Var2;
  pointer pvVar3;
  pointer pvVar4;
  pointer piVar5;
  _List_node_base *p_Var6;
  pointer pvVar7;
  
  p_Var6 = (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;
  pSVar1 = &this->strings_;
  if (p_Var6 != (_List_node_base *)pSVar1) {
    do {
      if (p_Var6[1]._M_next != (_List_node_base *)0x0) {
        operator_delete__(p_Var6[1]._M_next);
      }
      p_Var6 = p_Var6->_M_next;
    } while (p_Var6 != (_List_node_base *)pSVar1);
    p_Var6 = (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_Var6 != (_List_node_base *)pSVar1) {
      p_Var2 = p_Var6->_M_next;
      operator_delete(p_Var6);
      p_Var6 = p_Var2;
    }
  }
  pvVar3 = (this->key_to_offset_).chunks_.
           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>
           ._M_impl._M_start;
  pvVar4 = (this->key_to_offset_).chunks_.
           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>
           ._M_impl._M_finish;
  (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_prev = (_List_node_base *)pSVar1;
  (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 = (_List_node_base *)pSVar1;
  (this->strings_).
  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::Stringpool_template<char>::Stringdata*>_>
  ._M_impl._M_node._M_size = 0;
  pvVar7 = pvVar3;
  if (pvVar3 != pvVar4) {
    do {
      piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;
      if (piVar5 != (pointer)0x0) {
        operator_delete(piVar5);
      }
      pvVar7 = pvVar7 + 1;
    } while (pvVar4 != pvVar7);
    (this->key_to_offset_).chunks_.
    super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>
    ._M_impl._M_finish = pvVar3;
  }
  (this->key_to_offset_).size_ = 0;
  std::
  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_00172970(int param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  
  piVar2 = *(int **)(param_1 + 0x2c);
  piVar3 = (int *)(param_1 + 0x2c);
  if (piVar2 != piVar3) {
    do {
      if (piVar2[2] != 0) {
        FUN_001e6d50(piVar2[2]);
      }
      piVar2 = (int *)*piVar2;
    } while (piVar2 != piVar3);
    piVar2 = *(int **)(param_1 + 0x2c);
    while (piVar2 != piVar3) {
      piVar1 = (int *)*piVar2;
      FUN_001e6db0(piVar2);
      piVar2 = piVar1;
    }
  }
  piVar2 = *(int **)(param_1 + 0x1c);
  piVar1 = *(int **)(param_1 + 0x20);
  *(int **)(param_1 + 0x30) = piVar3;
  *(int **)(param_1 + 0x2c) = piVar3;
  *(undefined4 *)(param_1 + 0x34) = 0;
  piVar3 = piVar2;
  if (piVar2 != piVar1) {
    do {
      if (*piVar3 != 0) {
        FUN_001e6db0(*piVar3);
      }
      piVar3 = piVar3 + 3;
    } while (piVar1 != piVar3);
    *(int **)(param_1 + 0x20) = piVar2;
  }
  *(undefined4 *)(param_1 + 0x28) = 0;
  FUN_00172910();
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x21c687
SUB ESP,0x1c
MOV EBP,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [EBP + 0x2c]
LEA EDI,[EBP + 0x2c]
CMP ESI,EDI
JZ 0x001729c4
MOV EAX,dword ptr [ESI + 0x8]
TEST EAX,EAX
JZ 0x001729a3
SUB ESP,0xc
PUSH EAX
CALL 0x001e6d50
ADD ESP,0x10
MOV ESI,dword ptr [ESI]
CMP ESI,EDI
JNZ 0x00172990
MOV EAX,dword ptr [EBP + 0x2c]
CMP EAX,EDI
JZ 0x001729c4
SUB ESP,0xc
MOV ESI,dword ptr [EAX]
PUSH EAX
CALL 0x001e6db0
MOV EAX,ESI
ADD ESP,0x10
CMP ESI,EDI
JNZ 0x001729b0
MOV EAX,dword ptr [EBP + 0x1c]
MOV ESI,dword ptr [EBP + 0x20]
MOV dword ptr [EBP + 0x30],EDI
MOV dword ptr [EBP + 0x2c],EDI
MOV dword ptr [EBP + 0x34],0x0
MOV EDI,EAX
MOV dword ptr [ESP + 0xc],EAX
CMP EAX,ESI
JZ 0x00172a08
LEA ESI,[ESI]
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x001729fa
SUB ESP,0xc
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
ADD EDI,0xc
CMP ESI,EDI
JNZ 0x001729e8
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EBP + 0x20],EAX
MOV dword ptr [EBP + 0x28],0x0
MOV dword ptr [ESP + 0x30],EBP
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x00172910
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00172970(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  piVar2 = *(int **)(param_1 + 0x2c);\n  piVar3 = (int *)(param_1 + 0x2c);\n  if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }\n  piVar2 = *(int **)(param_1 + 0x1c);\n  piVar1 = *(int **)(param_1 + 0x20);\n  *(int **)(param_1 + 0x30) = piVar3;\n  *(int **)(param_1 + 0x2c) = piVar3;\n  *(undefined4 *)(param_1 + 0x34) = 0;\n  piVar3 = piVar2;\n  if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }\n  *(undefined4 *)(param_1 + 0x28) = 0;\n  FUN_00172910();\n  return;\n}\n\n" comment (function_definition "void FUN_00172970(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  piVar2 = *(int **)(param_1 + 0x2c);\n  piVar3 = (int *)(param_1 + 0x2c);\n  if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }\n  piVar2 = *(int **)(param_1 + 0x1c);\n  piVar1 = *(int **)(param_1 + 0x20);\n  *(int **)(param_1 + 0x30) = piVar3;\n  *(int **)(param_1 + 0x2c) = piVar3;\n  *(undefined4 *)(param_1 + 0x34) = 0;\n  piVar3 = piVar2;\n  if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }\n  *(undefined4 *)(param_1 + 0x28) = 0;\n  FUN_00172910();\n  return;\n}" primitive_type (function_declarator "FUN_00172970(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  piVar2 = *(int **)(param_1 + 0x2c);\n  piVar3 = (int *)(param_1 + 0x2c);\n  if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }\n  piVar2 = *(int **)(param_1 + 0x1c);\n  piVar1 = *(int **)(param_1 + 0x20);\n  *(int **)(param_1 + 0x30) = piVar3;\n  *(int **)(param_1 + 0x2c) = piVar3;\n  *(undefined4 *)(param_1 + 0x34) = 0;\n  piVar3 = piVar2;\n  if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }\n  *(undefined4 *)(param_1 + 0x28) = 0;\n  FUN_00172910();\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (expression_statement "piVar2 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x2c)" identifier = (pointer_expression "*(int **)(param_1 + 0x2c)" * (cast_expression "(int **)(param_1 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "piVar3 = (int *)(param_1 + 0x2c);" (assignment_expression "piVar3 = (int *)(param_1 + 0x2c)" identifier = (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) ;) (if_statement "if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }" if (parenthesized_expression "(piVar2 != piVar3)" ( (binary_expression "piVar2 != piVar3" identifier != identifier) )) (compound_statement "{\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }" { (do_statement "do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);" do (compound_statement "{\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    }" { (if_statement "if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }" if (parenthesized_expression "(piVar2[2] != 0)" ( (binary_expression "piVar2[2] != 0" (subscript_expression "piVar2[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        FUN_001e6d50(piVar2[2]);\n      }" { (expression_statement "FUN_001e6d50(piVar2[2]);" (call_expression "FUN_001e6d50(piVar2[2])" identifier (argument_list "(piVar2[2])" ( (subscript_expression "piVar2[2]" identifier [ number_literal ]) ))) ;) })) (expression_statement "piVar2 = (int *)*piVar2;" (assignment_expression "piVar2 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) }) while (parenthesized_expression "(piVar2 != piVar3)" ( (binary_expression "piVar2 != piVar3" identifier != identifier) )) ;) (expression_statement "piVar2 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x2c)" identifier = (pointer_expression "*(int **)(param_1 + 0x2c)" * (cast_expression "(int **)(param_1 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (while_statement "while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }" while (parenthesized_expression "(piVar2 != piVar3)" ( (binary_expression "piVar2 != piVar3" identifier != identifier) )) (compound_statement "{\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }" { (expression_statement "piVar1 = (int *)*piVar2;" (assignment_expression "piVar1 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (expression_statement "FUN_001e6db0(piVar2);" (call_expression "FUN_001e6db0(piVar2)" identifier (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" identifier = identifier) ;) })) })) (expression_statement "piVar2 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x1c)" identifier = (pointer_expression "*(int **)(param_1 + 0x1c)" * (cast_expression "(int **)(param_1 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x20)" identifier = (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_1 + 0x30) = piVar3;" (assignment_expression "*(int **)(param_1 + 0x30) = piVar3" (pointer_expression "*(int **)(param_1 + 0x30)" * (cast_expression "(int **)(param_1 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(param_1 + 0x2c) = piVar3;" (assignment_expression "*(int **)(param_1 + 0x2c) = piVar3" (pointer_expression "*(int **)(param_1 + 0x2c)" * (cast_expression "(int **)(param_1 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" * (cast_expression "(undefined4 *)(param_1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (if_statement "if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }" if (parenthesized_expression "(piVar2 != piVar1)" ( (binary_expression "piVar2 != piVar1" identifier != identifier) )) (compound_statement "{\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }" { (do_statement "do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);" do (compound_statement "{\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    }" { (if_statement "if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }" if (parenthesized_expression "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n        FUN_001e6db0(*piVar3);\n      }" { (expression_statement "FUN_001e6db0(*piVar3);" (call_expression "FUN_001e6db0(*piVar3)" identifier (argument_list "(*piVar3)" ( (pointer_expression "*piVar3" * identifier) ))) ;) })) (expression_statement "piVar3 = piVar3 + 3;" (assignment_expression "piVar3 = piVar3 + 3" identifier = (binary_expression "piVar3 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar1 != piVar3)" ( (binary_expression "piVar1 != piVar3" identifier != identifier) )) ;) (expression_statement "*(int **)(param_1 + 0x20) = piVar2;" (assignment_expression "*(int **)(param_1 + 0x20) = piVar2" (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x28) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00172910();" (call_expression "FUN_00172910()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void clear(Stringpool_template<char> * this) */\n\nvoid __thiscall gold::Stringpool_template<char>::clear(Stringpool_template<char> *this)\n\n{\n  Stringdata_list *pSVar1;\n  _List_node_base *p_Var2;\n  pointer pvVar3;\n  pointer pvVar4;\n  pointer piVar5;\n  _List_node_base *p_Var6;\n  pointer pvVar7;\n  \n  p_Var6 = (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  pSVar1 = &this->strings_;\n  if (p_Var6 != (_List_node_base *)pSVar1) {\n    do {\n      if (p_Var6[1]._M_next != (_List_node_base *)0x0) {\n        operator_delete__(p_Var6[1]._M_next);\n      }\n      p_Var6 = p_Var6->_M_next;\n    } while (p_Var6 != (_List_node_base *)pSVar1);\n    p_Var6 = (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_Var6 != (_List_node_base *)pSVar1) {\n      p_Var2 = p_Var6->_M_next;\n      operator_delete(p_Var6);\n      p_Var6 = p_Var2;\n    }\n  }\n  pvVar3 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n           ._M_impl._M_start;\n  pvVar4 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n           ._M_impl._M_finish;\n  (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_prev = (_List_node_base *)pSVar1;\n  (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 = (_List_node_base *)pSVar1;\n  (this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::Stringpool_template<char>::Stringdata*>_>\n  ._M_impl._M_node._M_size = 0;\n  pvVar7 = pvVar3;\n  if (pvVar3 != pvVar4) {\n    do {\n      piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;\n      if (piVar5 != (pointer)0x0) {\n        operator_delete(piVar5);\n      }\n      pvVar7 = pvVar7 + 1;\n    } while (pvVar4 != pvVar7);\n    (this->key_to_offset_).chunks_.\n    super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n    ._M_impl._M_finish = pvVar3;\n  }\n  (this->key_to_offset_).size_ = 0;\n  std::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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  return;\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Stringpool_template<char>::clear(Stringpool_template<char> *this)\n\n{\n  Stringdata_list *pSVar1;\n  _List_node_base *p_Var2;\n  pointer pvVar3;\n  pointer pvVar4;\n  pointer piVar5;\n  _List_node_base *p_Var6;\n  pointer pvVar7;\n  \n  p_Var6 = (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  pSVar1 = &this->strings_;\n  if (p_Var6 != (_List_node_base *)pSVar1) {\n    do {\n      if (p_Var6[1]._M_next != (_List_node_base *)0x0) {\n        operator_delete__(p_Var6[1]._M_next);\n      }\n      p_Var6 = p_Var6->_M_next;\n    } while (p_Var6 != (_List_node_base *)pSVar1);\n    p_Var6 = (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_Var6 != (_List_node_base *)pSVar1) {\n      p_Var2 = p_Var6->_M_next;\n      operator_delete(p_Var6);\n      p_Var6 = p_Var2;\n    }\n  }\n  pvVar3 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n           ._M_impl._M_start;\n  pvVar4 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n           ._M_impl._M_finish;\n  (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_prev = (_List_node_base *)pSVar1;\n  (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 = (_List_node_base *)pSVar1;\n  (this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::Stringpool_template<char>::Stringdata*>_>\n  ._M_impl._M_node._M_size = 0;\n  pvVar7 = pvVar3;\n  if (pvVar3 != pvVar4) {\n    do {\n      piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;\n      if (piVar5 != (pointer)0x0) {\n        operator_delete(piVar5);\n      }\n      pvVar7 = pvVar7 + 1;\n    } while (pvVar4 != pvVar7);\n    (this->key_to_offset_).chunks_.\n    super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n    ._M_impl._M_finish = pvVar3;\n  }\n  (this->key_to_offset_).size_ = 0;\n  std::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Stringpool_template<char>::" identifier : : identifier < primitive_type > : :) (function_declarator "clear(Stringpool_template<char> *this)" identifier (parameter_list "(Stringpool_template<char> *this)" ( (parameter_declaration "Stringpool_template<char> *this" type_identifier (ERROR "<char>" < primitive_type >) (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  Stringdata_list *pSVar1;\n  _List_node_base *p_Var2;\n  pointer pvVar3;\n  pointer pvVar4;\n  pointer piVar5;\n  _List_node_base *p_Var6;\n  pointer pvVar7;\n  \n  p_Var6 = (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  pSVar1 = &this->strings_;\n  if (p_Var6 != (_List_node_base *)pSVar1) {\n    do {\n      if (p_Var6[1]._M_next != (_List_node_base *)0x0) {\n        operator_delete__(p_Var6[1]._M_next);\n      }\n      p_Var6 = p_Var6->_M_next;\n    } while (p_Var6 != (_List_node_base *)pSVar1);\n    p_Var6 = (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_Var6 != (_List_node_base *)pSVar1) {\n      p_Var2 = p_Var6->_M_next;\n      operator_delete(p_Var6);\n      p_Var6 = p_Var2;\n    }\n  }\n  pvVar3 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n           ._M_impl._M_start;\n  pvVar4 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n           ._M_impl._M_finish;\n  (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_prev = (_List_node_base *)pSVar1;\n  (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 = (_List_node_base *)pSVar1;\n  (this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::Stringpool_template<char>::Stringdata*>_>\n  ._M_impl._M_node._M_size = 0;\n  pvVar7 = pvVar3;\n  if (pvVar3 != pvVar4) {\n    do {\n      piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;\n      if (piVar5 != (pointer)0x0) {\n        operator_delete(piVar5);\n      }\n      pvVar7 = pvVar7 + 1;\n    } while (pvVar4 != pvVar7);\n    (this->key_to_offset_).chunks_.\n    super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n    ._M_impl._M_finish = pvVar3;\n  }\n  (this->key_to_offset_).size_ = 0;\n  std::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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  return;\n}" { (declaration "Stringdata_list *pSVar1;" type_identifier (pointer_declarator "*pSVar1" * identifier) ;) (declaration "_List_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "pointer pvVar3;" type_identifier identifier ;) (declaration "pointer pvVar4;" type_identifier identifier ;) (declaration "pointer piVar5;" type_identifier identifier ;) (declaration "_List_node_base *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "pointer pvVar7;" type_identifier identifier ;) (ERROR "p_Var6 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::" (comma_expression "p_Var6 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata*,_std" (binary_expression "p_Var6 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char>::Stringdata" (binary_expression "p_Var6 = (this->strings_).\n           super__List_base<gold::Stringpool_template<char" (assignment_expression "p_Var6 = (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) ;) (expression_statement "pSVar1 = &this->strings_;" (assignment_expression "pSVar1 = &this->strings_" identifier = (pointer_expression "&this->strings_" & (field_expression "this->strings_" identifier -> field_identifier))) ;) (if_statement "if (p_Var6 != (_List_node_base *)pSVar1) {\n    do {\n      if (p_Var6[1]._M_next != (_List_node_base *)0x0) {\n        operator_delete__(p_Var6[1]._M_next);\n      }\n      p_Var6 = p_Var6->_M_next;\n    } while (p_Var6 != (_List_node_base *)pSVar1);\n    p_Var6 = (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_Var6 != (_List_node_base *)pSVar1) {\n      p_Var2 = p_Var6->_M_next;\n      operator_delete(p_Var6);\n      p_Var6 = p_Var2;\n    }\n  }" if (parenthesized_expression "(p_Var6 != (_List_node_base *)pSVar1)" ( (binary_expression "p_Var6 != (_List_node_base *)pSVar1" identifier != (cast_expression "(_List_node_base *)pSVar1" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    do {\n      if (p_Var6[1]._M_next != (_List_node_base *)0x0) {\n        operator_delete__(p_Var6[1]._M_next);\n      }\n      p_Var6 = p_Var6->_M_next;\n    } while (p_Var6 != (_List_node_base *)pSVar1);\n    p_Var6 = (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_Var6 != (_List_node_base *)pSVar1) {\n      p_Var2 = p_Var6->_M_next;\n      operator_delete(p_Var6);\n      p_Var6 = p_Var2;\n    }\n  }" { (do_statement "do {\n      if (p_Var6[1]._M_next != (_List_node_base *)0x0) {\n        operator_delete__(p_Var6[1]._M_next);\n      }\n      p_Var6 = p_Var6->_M_next;\n    } while (p_Var6 != (_List_node_base *)pSVar1);" do (compound_statement "{\n      if (p_Var6[1]._M_next != (_List_node_base *)0x0) {\n        operator_delete__(p_Var6[1]._M_next);\n      }\n      p_Var6 = p_Var6->_M_next;\n    }" { (if_statement "if (p_Var6[1]._M_next != (_List_node_base *)0x0) {\n        operator_delete__(p_Var6[1]._M_next);\n      }" if (parenthesized_expression "(p_Var6[1]._M_next != (_List_node_base *)0x0)" ( (binary_expression "p_Var6[1]._M_next != (_List_node_base *)0x0" (field_expression "p_Var6[1]._M_next" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier) != (cast_expression "(_List_node_base *)0x0" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        operator_delete__(p_Var6[1]._M_next);\n      }" { (expression_statement "operator_delete__(p_Var6[1]._M_next);" (call_expression "operator_delete__(p_Var6[1]._M_next)" identifier (argument_list "(p_Var6[1]._M_next)" ( (field_expression "p_Var6[1]._M_next" (subscript_expression "p_Var6[1]" identifier [ number_literal ]) . field_identifier) ))) ;) })) (expression_statement "p_Var6 = p_Var6->_M_next;" (assignment_expression "p_Var6 = p_Var6->_M_next" identifier = (field_expression "p_Var6->_M_next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(p_Var6 != (_List_node_base *)pSVar1)" ( (binary_expression "p_Var6 != (_List_node_base *)pSVar1" identifier != (cast_expression "(_List_node_base *)pSVar1" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) (ERROR "p_Var6 = (this->strings_).\n             super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::" (comma_expression "p_Var6 = (this->strings_).\n             super__List_base<gold::Stringpool_template<char>::Stringdata*,_std" (binary_expression "p_Var6 = (this->strings_).\n             super__List_base<gold::Stringpool_template<char>::Stringdata" (binary_expression "p_Var6 = (this->strings_).\n             super__List_base<gold::Stringpool_template<char" (assignment_expression "p_Var6 = (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_Var6 != (_List_node_base *)pSVar1) {\n      p_Var2 = p_Var6->_M_next;\n      operator_delete(p_Var6);\n      p_Var6 = p_Var2;\n    }" while (parenthesized_expression "(p_Var6 != (_List_node_base *)pSVar1)" ( (binary_expression "p_Var6 != (_List_node_base *)pSVar1" identifier != (cast_expression "(_List_node_base *)pSVar1" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      p_Var2 = p_Var6->_M_next;\n      operator_delete(p_Var6);\n      p_Var6 = p_Var2;\n    }" { (expression_statement "p_Var2 = p_Var6->_M_next;" (assignment_expression "p_Var2 = p_Var6->_M_next" identifier = (field_expression "p_Var6->_M_next" identifier -> field_identifier)) ;) (expression_statement "operator_delete(p_Var6);" (call_expression "operator_delete(p_Var6)" identifier (argument_list "(p_Var6)" ( identifier ))) ;) (expression_statement "p_Var6 = p_Var2;" (assignment_expression "p_Var6 = p_Var2" identifier = identifier) ;) })) })) (ERROR "pvVar3 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::" (comma_expression "pvVar3 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std" (binary_expression "pvVar3 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int" (assignment_expression "pvVar3 = (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<int>_>,_std" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<int,_std" (binary_expression "vector<int" identifier < identifier) , identifier) : :) (expression_statement "allocator<int>_>_>_>\n           ._M_impl._M_start;" (field_expression "allocator<int>_>_>_>\n           ._M_impl._M_start" (field_expression "allocator<int>_>_>_>\n           ._M_impl" (binary_expression "allocator<int>_>_>_" (binary_expression "allocator<int>_>_" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "pvVar4 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::" (comma_expression "pvVar4 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std" (binary_expression "pvVar4 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int" (assignment_expression "pvVar4 = (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<int>_>,_std" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<int,_std" (binary_expression "vector<int" identifier < identifier) , identifier) : :) (expression_statement "allocator<int>_>_>_>\n           ._M_impl._M_finish;" (field_expression "allocator<int>_>_>_>\n           ._M_impl._M_finish" (field_expression "allocator<int>_>_>_>\n           ._M_impl" (binary_expression "allocator<int>_>_>_" (binary_expression "allocator<int>_>_" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::" (comma_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std" (binary_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata" (binary_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char" (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_prev = (_List_node_base *)pSVar1;" (assignment_expression "Stringpool_template<char>::Stringdata*>_>\n  ._M_impl._M_node.super__List_node_base._M_prev = (_List_node_base *)pSVar1" (field_expression "Stringpool_template<char>::Stringdata*>_>\n  ._M_impl._M_node.super__List_node_base._M_prev" (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) = (cast_expression "(_List_node_base *)pSVar1" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (ERROR "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::" (comma_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std" (binary_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata" (binary_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char" (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 = (_List_node_base *)pSVar1;" (assignment_expression "Stringpool_template<char>::Stringdata*>_>\n  ._M_impl._M_node.super__List_node_base._M_next = (_List_node_base *)pSVar1" (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) = (cast_expression "(_List_node_base *)pSVar1" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (ERROR "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std::allocator<gold::" (comma_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata*,_std" (binary_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char>::Stringdata" (binary_expression "(this->strings_).\n  super__List_base<gold::Stringpool_template<char" (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._M_size = 0;" (assignment_expression "Stringpool_template<char>::Stringdata*>_>\n  ._M_impl._M_node._M_size = 0" (field_expression "Stringpool_template<char>::Stringdata*>_>\n  ._M_impl._M_node._M_size" (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) = number_literal) ;) (expression_statement "pvVar7 = pvVar3;" (assignment_expression "pvVar7 = pvVar3" identifier = identifier) ;) (if_statement "if (pvVar3 != pvVar4) {\n    do {\n      piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;\n      if (piVar5 != (pointer)0x0) {\n        operator_delete(piVar5);\n      }\n      pvVar7 = pvVar7 + 1;\n    } while (pvVar4 != pvVar7);\n    (this->key_to_offset_).chunks_.\n    super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n    ._M_impl._M_finish = pvVar3;\n  }" if (parenthesized_expression "(pvVar3 != pvVar4)" ( (binary_expression "pvVar3 != pvVar4" identifier != identifier) )) (compound_statement "{\n    do {\n      piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;\n      if (piVar5 != (pointer)0x0) {\n        operator_delete(piVar5);\n      }\n      pvVar7 = pvVar7 + 1;\n    } while (pvVar4 != pvVar7);\n    (this->key_to_offset_).chunks_.\n    super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n    ._M_impl._M_finish = pvVar3;\n  }" { (do_statement "do {\n      piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;\n      if (piVar5 != (pointer)0x0) {\n        operator_delete(piVar5);\n      }\n      pvVar7 = pvVar7 + 1;\n    } while (pvVar4 != pvVar7);" do (compound_statement "{\n      piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;\n      if (piVar5 != (pointer)0x0) {\n        operator_delete(piVar5);\n      }\n      pvVar7 = pvVar7 + 1;\n    }" { (expression_statement "piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start;" (assignment_expression "piVar5 = (pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start" identifier = (field_expression "(pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start" (field_expression "(pvVar7->super__Vector_base<int,_std::allocator<int>_>)._M_impl" (parenthesized_expression "(pvVar7->super__Vector_base<int,_std::allocator<int>_>)" ( (ERROR "pvVar7->super__Vector_base<int,_std::" (comma_expression "pvVar7->super__Vector_base<int,_std" (binary_expression "pvVar7->super__Vector_base<int" (field_expression "pvVar7->super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<int>_>" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (piVar5 != (pointer)0x0) {\n        operator_delete(piVar5);\n      }" if (parenthesized_expression "(piVar5 != (pointer)0x0)" ( (binary_expression "piVar5 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n        operator_delete(piVar5);\n      }" { (expression_statement "operator_delete(piVar5);" (call_expression "operator_delete(piVar5)" identifier (argument_list "(piVar5)" ( identifier ))) ;) })) (expression_statement "pvVar7 = pvVar7 + 1;" (assignment_expression "pvVar7 = pvVar7 + 1" identifier = (binary_expression "pvVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pvVar4 != pvVar7)" ( (binary_expression "pvVar4 != pvVar7" identifier != identifier) )) ;) (ERROR "(this->key_to_offset_).chunks_.\n    super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::" (comma_expression "(this->key_to_offset_).chunks_.\n    super__Vector_base<std::vector<int,_std" (binary_expression "(this->key_to_offset_).chunks_.\n    super__Vector_base<std::vector<int" (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<int>_>,_std" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<int,_std" (binary_expression "vector<int" identifier < identifier) , identifier) : :) (expression_statement "allocator<int>_>_>_>\n    ._M_impl._M_finish = pvVar3;" (assignment_expression "allocator<int>_>_>_>\n    ._M_impl._M_finish = pvVar3" (field_expression "allocator<int>_>_>_>\n    ._M_impl._M_finish" (field_expression "allocator<int>_>_>_>\n    ._M_impl" (binary_expression "allocator<int>_>_>_" (binary_expression "allocator<int>_>_" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) })) (expression_statement "(this->key_to_offset_).size_ = 0;" (assignment_expression "(this->key_to_offset_).size_ = 0" (field_expression "(this->key_to_offset_).size_" (parenthesized_expression "(this->key_to_offset_)" ( (field_expression "this->key_to_offset_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (labeled_statement "std::\n  _Hashtable<gold::Stringpool_template<char>::Hashkey,_std::pair<const_gold::Stringpool_template<char>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std" identifier , (binary_expression "_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,_unsigned_int>_>,_std" identifier , (binary_expression "_unsigned_int>_>,_std" (binary_expression "_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<char>::Hashkey,_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,_unsigned_int>,_std" (binary_expression "Stringpool_template<char>::Hashkey" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) identifier) , (binary_expression "_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,_unsigned_int>_>,_std" (binary_expression "Stringpool_template<char>::Hashkey" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) identifier) , (binary_expression "_unsigned_int>_>,_std" (binary_expression "_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)))) )) )))))) ;))))))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00172970(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  piVar2 = *(int **)(param_1 + 0x2c);\n  piVar3 = (int *)(param_1 + 0x2c);\n  if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }\n  piVar2 = *(int **)(param_1 + 0x1c);\n  piVar1 = *(int **)(param_1 + 0x20);\n  *(int **)(param_1 + 0x30) = piVar3;\n  *(int **)(param_1 + 0x2c) = piVar3;\n  *(undefined4 *)(param_1 + 0x34) = 0;\n  piVar3 = piVar2;\n  if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }\n  *(undefined4 *)(param_1 + 0x28) = 0;\n  FUN_00172910();\n  return;\n}\n\n" (function_definition "void FUN_00172970(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  piVar2 = *(int **)(param_1 + 0x2c);\n  piVar3 = (int *)(param_1 + 0x2c);\n  if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }\n  piVar2 = *(int **)(param_1 + 0x1c);\n  piVar1 = *(int **)(param_1 + 0x20);\n  *(int **)(param_1 + 0x30) = piVar3;\n  *(int **)(param_1 + 0x2c) = piVar3;\n  *(undefined4 *)(param_1 + 0x34) = 0;\n  piVar3 = piVar2;\n  if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }\n  *(undefined4 *)(param_1 + 0x28) = 0;\n  FUN_00172910();\n  return;\n}" primitive_type (function_declarator "FUN_00172970(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  piVar2 = *(int **)(param_1 + 0x2c);\n  piVar3 = (int *)(param_1 + 0x2c);\n  if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }\n  piVar2 = *(int **)(param_1 + 0x1c);\n  piVar1 = *(int **)(param_1 + 0x20);\n  *(int **)(param_1 + 0x30) = piVar3;\n  *(int **)(param_1 + 0x2c) = piVar3;\n  *(undefined4 *)(param_1 + 0x34) = 0;\n  piVar3 = piVar2;\n  if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }\n  *(undefined4 *)(param_1 + 0x28) = 0;\n  FUN_00172910();\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (expression_statement "piVar2 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x2c)" identifier = (pointer_expression "*(int **)(param_1 + 0x2c)" * (cast_expression "(int **)(param_1 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "piVar3 = (int *)(param_1 + 0x2c);" (assignment_expression "piVar3 = (int *)(param_1 + 0x2c)" identifier = (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) ;) (if_statement "if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }" if (parenthesized_expression "(piVar2 != piVar3)" ( (binary_expression "piVar2 != piVar3" identifier != identifier) )) (compound_statement "{\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }" { (do_statement "do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);" do (compound_statement "{\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    }" { (if_statement "if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }" if (parenthesized_expression "(piVar2[2] != 0)" ( (binary_expression "piVar2[2] != 0" (subscript_expression "piVar2[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        FUN_001e6d50(piVar2[2]);\n      }" { (expression_statement "FUN_001e6d50(piVar2[2]);" (call_expression "FUN_001e6d50(piVar2[2])" identifier (argument_list "(piVar2[2])" ( (subscript_expression "piVar2[2]" identifier [ number_literal ]) ))) ;) })) (expression_statement "piVar2 = (int *)*piVar2;" (assignment_expression "piVar2 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) }) while (parenthesized_expression "(piVar2 != piVar3)" ( (binary_expression "piVar2 != piVar3" identifier != identifier) )) ;) (expression_statement "piVar2 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x2c)" identifier = (pointer_expression "*(int **)(param_1 + 0x2c)" * (cast_expression "(int **)(param_1 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (while_statement "while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }" while (parenthesized_expression "(piVar2 != piVar3)" ( (binary_expression "piVar2 != piVar3" identifier != identifier) )) (compound_statement "{\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }" { (expression_statement "piVar1 = (int *)*piVar2;" (assignment_expression "piVar1 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (expression_statement "FUN_001e6db0(piVar2);" (call_expression "FUN_001e6db0(piVar2)" identifier (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" identifier = identifier) ;) })) })) (expression_statement "piVar2 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x1c)" identifier = (pointer_expression "*(int **)(param_1 + 0x1c)" * (cast_expression "(int **)(param_1 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "piVar1 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x20)" identifier = (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(param_1 + 0x30) = piVar3;" (assignment_expression "*(int **)(param_1 + 0x30) = piVar3" (pointer_expression "*(int **)(param_1 + 0x30)" * (cast_expression "(int **)(param_1 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(param_1 + 0x2c) = piVar3;" (assignment_expression "*(int **)(param_1 + 0x2c) = piVar3" (pointer_expression "*(int **)(param_1 + 0x2c)" * (cast_expression "(int **)(param_1 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" * (cast_expression "(undefined4 *)(param_1 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (if_statement "if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }" if (parenthesized_expression "(piVar2 != piVar1)" ( (binary_expression "piVar2 != piVar1" identifier != identifier) )) (compound_statement "{\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }" { (do_statement "do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);" do (compound_statement "{\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    }" { (if_statement "if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }" if (parenthesized_expression "(*piVar3 != 0)" ( (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" * identifier) != number_literal) )) (compound_statement "{\n        FUN_001e6db0(*piVar3);\n      }" { (expression_statement "FUN_001e6db0(*piVar3);" (call_expression "FUN_001e6db0(*piVar3)" identifier (argument_list "(*piVar3)" ( (pointer_expression "*piVar3" * identifier) ))) ;) })) (expression_statement "piVar3 = piVar3 + 3;" (assignment_expression "piVar3 = piVar3 + 3" identifier = (binary_expression "piVar3 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar1 != piVar3)" ( (binary_expression "piVar1 != piVar3" identifier != identifier) )) ;) (expression_statement "*(int **)(param_1 + 0x20) = piVar2;" (assignment_expression "*(int **)(param_1 + 0x20) = piVar2" (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x28) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00172910();" (call_expression "FUN_00172910()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 ( (pointer_expression * IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00172970(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  piVar2 = *(int **)(param_1 + 0x2c);\n  piVar3 = (int *)(param_1 + 0x2c);\n  if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }\n  piVar2 = *(int **)(param_1 + 0x1c);\n  piVar1 = *(int **)(param_1 + 0x20);\n  *(int **)(param_1 + 0x30) = piVar3;\n  *(int **)(param_1 + 0x2c) = piVar3;\n  *(undefined4 *)(param_1 + 0x34) = 0;\n  piVar3 = piVar2;\n  if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }\n  *(undefined4 *)(param_1 + 0x28) = 0;\n  FUN_00172910();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00172970(int param_1)" (identifier "FUN_00172970") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  piVar2 = *(int **)(param_1 + 0x2c);\n  piVar3 = (int *)(param_1 + 0x2c);\n  if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }\n  piVar2 = *(int **)(param_1 + 0x1c);\n  piVar1 = *(int **)(param_1 + 0x20);\n  *(int **)(param_1 + 0x30) = piVar3;\n  *(int **)(param_1 + 0x2c) = piVar3;\n  *(undefined4 *)(param_1 + 0x34) = 0;\n  piVar3 = piVar2;\n  if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }\n  *(undefined4 *)(param_1 + 0x28) = 0;\n  FUN_00172910();\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (expression_statement "piVar2 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x2c)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1 + 0x2c)" (* "*") (cast_expression "(int **)(param_1 + 0x2c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "piVar3 = (int *)(param_1 + 0x2c);" (assignment_expression "piVar3 = (int *)(param_1 + 0x2c)" (identifier "piVar3") (= "=") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (; ";")) (if_statement "if (piVar2 != piVar3) {\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }" (if "if") (parenthesized_expression "(piVar2 != piVar3)" (( "(") (binary_expression "piVar2 != piVar3" (identifier "piVar2") (!= "!=") (identifier "piVar3")) () ")")) (compound_statement "{\n    do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);\n    piVar2 = *(int **)(param_1 + 0x2c);\n    while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }\n  }" ({ "{") (do_statement "do {\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    } while (piVar2 != piVar3);" (do "do") (compound_statement "{\n      if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }\n      piVar2 = (int *)*piVar2;\n    }" ({ "{") (if_statement "if (piVar2[2] != 0) {\n        FUN_001e6d50(piVar2[2]);\n      }" (if "if") (parenthesized_expression "(piVar2[2] != 0)" (( "(") (binary_expression "piVar2[2] != 0" (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_001e6d50(piVar2[2]);\n      }" ({ "{") (expression_statement "FUN_001e6d50(piVar2[2]);" (call_expression "FUN_001e6d50(piVar2[2])" (identifier "FUN_001e6d50") (argument_list "(piVar2[2])" (( "(") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar2 = (int *)*piVar2;" (assignment_expression "piVar2 = (int *)*piVar2" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar2 != piVar3)" (( "(") (binary_expression "piVar2 != piVar3" (identifier "piVar2") (!= "!=") (identifier "piVar3")) () ")")) (; ";")) (expression_statement "piVar2 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x2c)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1 + 0x2c)" (* "*") (cast_expression "(int **)(param_1 + 0x2c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (while_statement "while (piVar2 != piVar3) {\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }" (while "while") (parenthesized_expression "(piVar2 != piVar3)" (( "(") (binary_expression "piVar2 != piVar3" (identifier "piVar2") (!= "!=") (identifier "piVar3")) () ")")) (compound_statement "{\n      piVar1 = (int *)*piVar2;\n      FUN_001e6db0(piVar2);\n      piVar2 = piVar1;\n    }" ({ "{") (expression_statement "piVar1 = (int *)*piVar2;" (assignment_expression "piVar1 = (int *)*piVar2" (identifier "piVar1") (= "=") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (expression_statement "FUN_001e6db0(piVar2);" (call_expression "FUN_001e6db0(piVar2)" (identifier "FUN_001e6db0") (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")"))) (; ";")) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" (identifier "piVar2") (= "=") (identifier "piVar1")) (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar2 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x1c)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1 + 0x1c)" (* "*") (cast_expression "(int **)(param_1 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "piVar1 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x20)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 0x20)" (* "*") (cast_expression "(int **)(param_1 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(int **)(param_1 + 0x30) = piVar3;" (assignment_expression "*(int **)(param_1 + 0x30) = piVar3" (pointer_expression "*(int **)(param_1 + 0x30)" (* "*") (cast_expression "(int **)(param_1 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "*(int **)(param_1 + 0x2c) = piVar3;" (assignment_expression "*(int **)(param_1 + 0x2c) = piVar3" (pointer_expression "*(int **)(param_1 + 0x2c)" (* "*") (cast_expression "(int **)(param_1 + 0x2c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x34) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" (identifier "piVar3") (= "=") (identifier "piVar2")) (; ";")) (if_statement "if (piVar2 != piVar1) {\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }" (if "if") (parenthesized_expression "(piVar2 != piVar1)" (( "(") (binary_expression "piVar2 != piVar1" (identifier "piVar2") (!= "!=") (identifier "piVar1")) () ")")) (compound_statement "{\n    do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);\n    *(int **)(param_1 + 0x20) = piVar2;\n  }" ({ "{") (do_statement "do {\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    } while (piVar1 != piVar3);" (do "do") (compound_statement "{\n      if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }\n      piVar3 = piVar3 + 3;\n    }" ({ "{") (if_statement "if (*piVar3 != 0) {\n        FUN_001e6db0(*piVar3);\n      }" (if "if") (parenthesized_expression "(*piVar3 != 0)" (( "(") (binary_expression "*piVar3 != 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_001e6db0(*piVar3);\n      }" ({ "{") (expression_statement "FUN_001e6db0(*piVar3);" (call_expression "FUN_001e6db0(*piVar3)" (identifier "FUN_001e6db0") (argument_list "(*piVar3)" (( "(") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar3 = piVar3 + 3;" (assignment_expression "piVar3 = piVar3 + 3" (identifier "piVar3") (= "=") (binary_expression "piVar3 + 3" (identifier "piVar3") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar1 != piVar3)" (( "(") (binary_expression "piVar1 != piVar3" (identifier "piVar1") (!= "!=") (identifier "piVar3")) () ")")) (; ";")) (expression_statement "*(int **)(param_1 + 0x20) = piVar2;" (assignment_expression "*(int **)(param_1 + 0x20) = piVar2" (pointer_expression "*(int **)(param_1 + 0x20)" (* "*") (cast_expression "(int **)(param_1 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "piVar2")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x28) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x28) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00172910();" (call_expression "FUN_00172910()" (identifier "FUN_00172910") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void clear(Stringpool_template<char> * this) */

void __thiscall gold::type_1<char>::function_1(type_1<char> *this)

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


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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 (pointer_expression argument: (identifier))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(int param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  
  piVar2 = *(int **)(param_1 + 0x2c);
  piVar3 = (int *)(param_1 + 0x2c);
  if (piVar2 != piVar3) {
    do {
      if (piVar2[2] != 0) {
        FUN_001e6d50(piVar2[2]);
      }
      piVar2 = (int *)*piVar2;
    } while (piVar2 != piVar3);
    piVar2 = *(int **)(param_1 + 0x2c);
    while (piVar2 != piVar3) {
      piVar1 = (int *)*piVar2;
      FUN_001e6db0(piVar2);
      piVar2 = piVar1;
    }
  }
  piVar2 = *(int **)(param_1 + 0x1c);
  piVar1 = *(int **)(param_1 + 0x20);
  *(int **)(param_1 + 0x30) = piVar3;
  *(int **)(param_1 + 0x2c) = piVar3;
  *(undefined4 *)(param_1 + 0x34) = 0;
  piVar3 = piVar2;
  if (piVar2 != piVar1) {
    do {
      if (*piVar3 != 0) {
        FUN_001e6db0(*piVar3);
      }
      piVar3 = piVar3 + 3;
    } while (piVar1 != piVar3);
    *(int **)(param_1 + 0x20) = piVar2;
  }
  *(undefined4 *)(param_1 + 0x28) = 0;
  FUN_00172910();
  return;
}

