
/* DWARF original prototype: void reserve(Stringpool_template<unsigned_int> * this, uint n) */

void __thiscall
gold::Stringpool_template<unsigned_int>::reserve(Stringpool_template<unsigned_int> *this,uint n)

{
  _Vector_base<int,_std::allocator<int>_> *p_Var1;
  int iVar2;
  size_type __n;
  uint uVar3;
  pointer pvVar4;
  pointer pvVar5;
  size_type sVar6;
  pointer pvVar7;
  pointer pvVar8;
  int in_t9;
  double dVar9;
  double dVar10;
  size_t local_28 [3];
  
  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_start;
  pvVar5 = (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;
  iVar2 = (int)pvVar5 - (int)pvVar4 >> 2;
  if ((uint)(iVar2 * 0x55556000) < n) {
    uVar3 = n + 0x1fff >> 0xd;
    if ((uint)(iVar2 * -0x55555555) < uVar3) {
      std::
      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>
      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);
      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_start;
      pvVar5 = (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;
    }
    else if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&
            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {
      do {
        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;
        pvVar7 = pvVar7 + 1;
        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {
          (**(code **)(in_t9 + 0x2098f8))();
        }
      } while (pvVar5 != pvVar7);
      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_start;
      (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 = pvVar8;
      pvVar5 = pvVar8;
    }
    if (pvVar4 != pvVar5) {
      iVar2 = 0;
      uVar3 = 0;
      do {
        std::vector<int,_std::allocator<int>_>::reserve
                  ((vector<int,_std::allocator<int>_> *)
                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +
                   iVar2),0x2000);
        uVar3 = uVar3 + 1;
        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_start;
        iVar2 = iVar2 + 0xc;
      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));
      sVar6 = (this->string_set_)._M_h._M_element_count;
      goto LAB_002289f8;
    }
  }
  sVar6 = (this->string_set_)._M_h._M_element_count;
LAB_002289f8:
  local_28[0] = (this->string_set_)._M_h._M_rehash_policy._M_next_resize;
  dVar10 = (double)(int)(sVar6 + 1);
  if ((int)(sVar6 + 1) < 0) {
    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);
  }
  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))
                             (dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.
                                               _M_max_load_factor);
  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);
  if (dVar10 < dVar9) {
    uVar3 = (uint)dVar10;
  }
  else {
    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;
  }
  if (uVar3 <= n + sVar6) {
    uVar3 = n + sVar6;
  }
  __n = (**(code **)(in_t9 + 0x20a664))(&(this->string_set_)._M_h._M_rehash_policy,uVar3);
  if (__n == (this->string_set_)._M_h._M_bucket_count) {
    (this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0];
    return;
  }
  std::
  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,__n,local_28);
  return;
}



void FUN_00228994(uint param_1,uint param_2)

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  undefined4 uVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int in_t9;
  double dVar9;
  double dVar10;
  
  piVar5 = *(int **)(param_1 + 0x1c);
  piVar6 = *(int **)(param_1 + 0x20);
  iVar1 = (int)piVar6 - (int)piVar5 >> 2;
  if ((uint)(iVar1 * 0x55556000) < param_2) {
    uVar3 = param_2 + 0x1fff >> 0xd;
    if ((uint)(iVar1 * -0x55555555) < uVar3) {
      std::
      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>
      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>
                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);
      piVar5 = *(int **)(param_1 + 0x1c);
      piVar6 = *(int **)(param_1 + 0x20);
    }
    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&
            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {
      do {
        iVar1 = *piVar7;
        piVar7 = piVar7 + 3;
        if (iVar1 != 0) {
          (**(code **)(in_t9 + 0x2098f8))();
        }
      } while (piVar6 != piVar7);
      piVar5 = *(int **)(param_1 + 0x1c);
      *(int **)(param_1 + 0x20) = piVar8;
      piVar6 = piVar8;
    }
    if (piVar5 != piVar6) {
      iVar1 = 0;
      uVar3 = 0;
      do {
        std::vector<int,std::allocator<int>>::reserve
                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);
        uVar3 = uVar3 + 1;
        piVar5 = *(int **)(param_1 + 0x1c);
        iVar1 = iVar1 + 0xc;
      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));
      iVar1 = *(int *)(param_1 + 0xc);
      goto LAB_002289f8;
    }
  }
  iVar1 = *(int *)(param_1 + 0xc);
LAB_002289f8:
  uVar4 = *(undefined4 *)(param_1 + 0x14);
  dVar10 = (double)(iVar1 + 1);
  if (iVar1 + 1 < 0) {
    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);
  }
  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));
  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);
  if (dVar10 < dVar9) {
    uVar3 = (uint)dVar10;
  }
  else {
    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;
  }
  if (uVar3 <= param_2 + iVar1) {
    uVar3 = param_2 + iVar1;
  }
  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);
  if (puVar2 == *(uint **)(param_1 + 4)) {
    *(undefined4 *)(param_1 + 0x14) = uVar4;
    return;
  }
  std::
  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::Stringpool_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>
  ::_M_rehash(param_1,puVar2);
  return;
}


lui gp,0x21
addiu gp,gp,0x183c
addu gp,gp,t9
addiu sp,sp,-0x40
sw s0,0x24(sp)
or s0,a0,zero
sw s2,0x2c(sp)
sw s1,0x28(sp)
or s1,a1,zero
lw a0,0x1c(a0)
lui a1,0xaaaa
lw s2,0x20(s0)
ori a1,a1,0xaaab
sw gp,0x10(sp)
sw ra,0x3c(sp)
subu v0,s2,a0
sw s5,0x38(sp)
sw s4,0x34(sp)
sra v0,v0,0x2
mul v0,v0,a1
sll v1,v0,0xd
sltu v1,v1,s1
bne v1,zero,0x00228af0
_sw s3,0x30(sp)
lw s2,0xc(s0)
lw v1,0x14(s0)
addiu v0,s2,0x1
sw v1,0x18(sp)
mtc1 v0,f0
bgez v0,0x00228a1c
_cvt.d.W f12,f0
lw v0,-0x7e1c(gp)
ldc1 f0,-0x12c0(v0)
add.D f12,f12,f0
lwc1 f0,0x10(s0)
addu s1,s1,s2
lw t9,-0x3ba4(gp)
cvt.d.S f0,f0
jalr t9
_div.D f12,f12,f0
lw gp,0x10(sp)
lw v0,-0x7e1c(gp)
ldc1 f2,-0x12b8(v0)
c.le.D f2,f0
bc1t 0x00228aa4
_lui v1,0x8000
trunc.w.D f0,f0
mfc1 v0,f0
sltu a1,s1,v0
lw t9,-0x71d8(gp)
movz v0,s1,a1
addiu a0,s0,0x10
jalr t9
_or a1,v0,zero
lw v1,0x4(s0)
bne v0,v1,0x00228ab8
_lw gp,0x10(sp)
lw v0,0x18(sp)
lw ra,0x3c(sp)
lw s5,0x38(sp)
lw s4,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
sw v0,0x14(s0)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x40
sub.D D f0,f0,f2
trunc.w.D f0,f0
mfc1 v0,f0
b 0x00228a54
_or v0,v0,v1
lw t9,-0x5020(gp)
addiu a2,sp,0x18
or a0,s0,zero
bal 0x0022882c
_or a1,v0,zero
lw ra,0x3c(sp)
lw s5,0x38(sp)
lw s4,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x40
addiu a1,s1,0x1fff
srl a1,a1,0xd
sltu v1,v0,a1
bne v1,zero,0x00228bb0
_lw t9,-0x502c(gp)
sltu v0,a1,v0
bne v0,zero,0x00228b68
_sll s4,a1,0x1
beq a0,s2,0x002289f4
_lui s2,0xaaaa
lw s3,-0x5028(gp)
or s5,zero,zero
or s4,zero,zero
ori s2,s2,0xaaab
addu a0,a0,s5
or t9,s3,zero
bal 0x002275a4
_li a1,0x2000
addiu s4,s4,0x1
lw a0,0x1c(s0)
addiu s5,s5,0xc
lw v0,0x20(s0)
subu v0,v0,a0
sra v0,v0,0x2
mul v0,v0,s2
sltu v0,s4,v0
bne v0,zero,0x00228b28
_lw gp,0x10(sp)
b 0x002289f8
_lw s2,0xc(s0)
addu s4,s4,a1
sll s4,s4,0x2
addu s4,a0,s4
beq s2,s4,0x00228b10
_or s3,s4,zero
lw a0,0x0(s3)
addiu s3,s3,0xc
beq a0,zero,0x00228b98
_lw t9,-0x7f44(gp)
jalr t9
_nop
lw gp,0x10(sp)
bne s2,s3,0x00228b7c
_nop
lw a0,0x1c(s0)
or s2,s4,zero
b 0x00228b10
_sw s4,0x20(s0)
addiu a0,s0,0x1c
bal 0x00227b9c
_subu a1,a1,v0
lw gp,0x10(sp)
lw a0,0x1c(s0)
b 0x00228b10
_lw s2,0x20(s0)
(translation_unit "void FUN_00228994(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  \n  piVar5 = *(int **)(param_1 + 0x1c);\n  piVar6 = *(int **)(param_1 + 0x20);\n  iVar1 = (int)piVar6 - (int)piVar5 >> 2;\n  if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0xc);\nLAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);\n  dVar10 = (double)(iVar1 + 1);\n  if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }\n  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);\n  if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);\n  return;\n}\n\n" (function_definition "void FUN_00228994(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  \n  piVar5 = *(int **)(param_1 + 0x1c);\n  piVar6 = *(int **)(param_1 + 0x20);\n  iVar1 = (int)piVar6 - (int)piVar5 >> 2;\n  if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0xc);\nLAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);\n  dVar10 = (double)(iVar1 + 1);\n  if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }\n  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);\n  if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);\n  return;\n}" primitive_type (function_declarator "FUN_00228994(uint param_1,uint param_2)" identifier (parameter_list "(uint param_1,uint param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  \n  piVar5 = *(int **)(param_1 + 0x1c);\n  piVar6 = *(int **)(param_1 + 0x20);\n  iVar1 = (int)piVar6 - (int)piVar5 >> 2;\n  if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0xc);\nLAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);\n  dVar10 = (double)(iVar1 + 1);\n  if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }\n  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);\n  if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(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 "piVar6 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar6 = *(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 "iVar1 = (int)piVar6 - (int)piVar5 >> 2;" (assignment_expression "iVar1 = (int)piVar6 - (int)piVar5 >> 2" identifier = (binary_expression "(int)piVar6 - (int)piVar5 >> 2" (binary_expression "(int)piVar6 - (int)piVar5" (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }" if (parenthesized_expression "((uint)(iVar1 * 0x55556000) < param_2)" ( (binary_expression "(uint)(iVar1 * 0x55556000) < param_2" (call_expression "(uint)(iVar1 * 0x55556000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 * 0x55556000)" ( (binary_expression "iVar1 * 0x55556000" identifier * number_literal) ))) < identifier) )) (compound_statement "{\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }" { (expression_statement "uVar3 = param_2 + 0x1fff >> 0xd;" (assignment_expression "uVar3 = param_2 + 0x1fff >> 0xd" identifier = (binary_expression "param_2 + 0x1fff >> 0xd" (binary_expression "param_2 + 0x1fff" identifier + number_literal) >> number_literal)) ;) (if_statement "if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" if (parenthesized_expression "((uint)(iVar1 * -0x55555555) < uVar3)" ( (binary_expression "(uint)(iVar1 * -0x55555555) < uVar3" (call_expression "(uint)(iVar1 * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 * -0x55555555)" ( (binary_expression "iVar1 * -0x55555555" identifier * number_literal) ))) < identifier) )) (compound_statement "{\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }" { (labeled_statement "std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);" statement_identifier (ERROR "::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std:" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "vector<int,std" (binary_expression "vector<int" identifier < identifier) , identifier) : : (binary_expression "allocator<int>>,std" identifier < (binary_expression "int>>,std" 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_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);" (binary_expression "allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" identifier < (binary_expression "int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" identifier >> (ERROR ">>\n      ::" >> : :) (call_expression "_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" identifier (argument_list "((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" ( (call_expression "(vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c)" (parenthesized_expression "(vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)" ( (ERROR "vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::" (comma_expression "vector<std::vector<int,std" (binary_expression "vector<std::vector<int" (binary_expression "vector<std" identifier < identifier) (ERROR "::vector" : : identifier) < identifier) , identifier) : : (binary_expression "allocator<int>>,std" identifier < (binary_expression "int>>,std" identifier >> (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<int,std" (binary_expression "vector<int" identifier < identifier) , identifier) : :) (binary_expression "allocator<int>>>>\n                           *" identifier < (binary_expression "int>>>>\n                           *" identifier >> (ERROR ">>" >>) (pointer_expression "*" * identifier))) )) (argument_list "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))) , (binary_expression "uVar3 + iVar1 * 0x55555555" identifier + (binary_expression "iVar1 * 0x55555555" identifier * number_literal)) ))))) ;)) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(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 "piVar6 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar6 = *(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) ))))) ;) }) (else_clause "else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" else (if_statement "if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" if (parenthesized_expression "((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8))" ( (binary_expression "(uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)" (parenthesized_expression "(uVar3 < (uint)(iVar1 * -0x55555555))" ( (binary_expression "uVar3 < (uint)(iVar1 * -0x55555555)" identifier < (call_expression "(uint)(iVar1 * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 * -0x55555555)" ( (binary_expression "iVar1 * -0x55555555" identifier * number_literal) )))) )) && (parenthesized_expression "(piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)" ( (comma_expression "piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8" (assignment_expression "piVar8 = piVar5 + uVar3 * 3" identifier = (binary_expression "piVar5 + uVar3 * 3" identifier + (binary_expression "uVar3 * 3" identifier * number_literal))) , (comma_expression "piVar7 = piVar8, piVar6 != piVar8" (assignment_expression "piVar7 = piVar8" identifier = identifier) , (binary_expression "piVar6 != piVar8" identifier != identifier))) ))) )) (compound_statement "{\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" { (do_statement "do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);" do (compound_statement "{\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      }" { (expression_statement "iVar1 = *piVar7;" (assignment_expression "iVar1 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "piVar7 = piVar7 + 3;" (assignment_expression "piVar7 = piVar7 + 3" identifier = (binary_expression "piVar7 + 3" identifier + number_literal)) ;) (if_statement "if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          (**(code **)(in_t9 + 0x2098f8))();\n        }" { (expression_statement "(**(code **)(in_t9 + 0x2098f8))();" (call_expression "(**(code **)(in_t9 + 0x2098f8))()" (parenthesized_expression "(**(code **)(in_t9 + 0x2098f8))" ( (pointer_expression "**(code **)(in_t9 + 0x2098f8)" * (pointer_expression "*(code **)(in_t9 + 0x2098f8)" * (cast_expression "(code **)(in_t9 + 0x2098f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2098f8)" ( (binary_expression "in_t9 + 0x2098f8" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }) while (parenthesized_expression "(piVar6 != piVar7)" ( (binary_expression "piVar6 != piVar7" identifier != identifier) )) ;) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(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 "*(int **)(param_1 + 0x20) = piVar8;" (assignment_expression "*(int **)(param_1 + 0x20) = piVar8" (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 "piVar6 = piVar8;" (assignment_expression "piVar6 = piVar8" identifier = identifier) ;) })))) (if_statement "if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }" if (parenthesized_expression "(piVar5 != piVar6)" ( (binary_expression "piVar5 != piVar6" identifier != identifier) )) (compound_statement "{\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }" { (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));" do (compound_statement "{\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      }" { (labeled_statement "std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);" statement_identifier (ERROR "::vector<int,std:" : : (comma_expression "vector<int,std" (binary_expression "vector<int" identifier < identifier) , identifier) :) : (expression_statement "allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);" (binary_expression "allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" identifier < (binary_expression "int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" identifier >> (ERROR "::" : :) (call_expression "reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" identifier (argument_list "((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" ( (call_expression "(vector<int,std::allocator<int>> *)((int)piVar5 + iVar1)" (parenthesized_expression "(vector<int,std::allocator<int>> *)" ( (ERROR "vector<int,std::" (comma_expression "vector<int,std" (binary_expression "vector<int" identifier < identifier) , identifier) : :) (binary_expression "allocator<int>> *" identifier < (binary_expression "int>> *" identifier >> (pointer_expression "*" * identifier))) )) (argument_list "((int)piVar5 + iVar1)" ( (binary_expression "(int)piVar5 + iVar1" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , number_literal ))))) ;)) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(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 "iVar1 = iVar1 + 0xc;" (assignment_expression "iVar1 = iVar1 + 0xc" identifier = (binary_expression "iVar1 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555))" ( (binary_expression "uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" identifier < (call_expression "(uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" ( (binary_expression "(*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(param_1 + 0x20) - (int)piVar5 >> 2)" ( (binary_expression "*(int *)(param_1 + 0x20) - (int)piVar5 >> 2" (binary_expression "*(int *)(param_1 + 0x20) - (int)piVar5" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_002289f8;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (labeled_statement "LAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);" statement_identifier : (expression_statement "uVar4 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar4 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;)) (expression_statement "dVar10 = (double)(iVar1 + 1);" (assignment_expression "dVar10 = (double)(iVar1 + 1)" identifier = (cast_expression "(double)(iVar1 + 1)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }" if (parenthesized_expression "(iVar1 + 1 < 0)" ( (binary_expression "iVar1 + 1 < 0" (binary_expression "iVar1 + 1" identifier + number_literal) < number_literal) )) (compound_statement "{\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }" { (expression_statement "dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);" (assignment_expression "dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" identifier = (binary_expression "dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" identifier + (pointer_expression "*(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" * (cast_expression "(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x209a20) + -0x12c0)" ( (binary_expression "*(int *)(in_t9 + 0x209a20) + -0x12c0" (pointer_expression "*(int *)(in_t9 + 0x209a20)" * (cast_expression "(int *)(in_t9 + 0x209a20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x209a20)" ( (binary_expression "in_t9 + 0x209a20" identifier + number_literal) )))) + number_literal) )))))) ;) })) (expression_statement "dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));" (assignment_expression "dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" identifier = (cast_expression "(double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" ( (type_descriptor "double" primitive_type) ) (call_expression "(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" (parenthesized_expression "(**(code **)(in_t9 + 0x20dc98))" ( (pointer_expression "**(code **)(in_t9 + 0x20dc98)" * (pointer_expression "*(code **)(in_t9 + 0x20dc98)" * (cast_expression "(code **)(in_t9 + 0x20dc98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x20dc98)" ( (binary_expression "in_t9 + 0x20dc98" identifier + number_literal) ))))) )) (argument_list "(dVar10 / (double)*(float *)(param_1 + 0x10))" ( (binary_expression "dVar10 / (double)*(float *)(param_1 + 0x10)" identifier / (cast_expression "(double)*(float *)(param_1 + 0x10)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(param_1 + 0x10)" * (cast_expression "(float *)(param_1 + 0x10)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))))) ))))) ;) (expression_statement "dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);" (assignment_expression "dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" identifier = (pointer_expression "*(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" * (cast_expression "(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x209a20) + -0x12b8)" ( (binary_expression "*(int *)(in_t9 + 0x209a20) + -0x12b8" (pointer_expression "*(int *)(in_t9 + 0x209a20)" * (cast_expression "(int *)(in_t9 + 0x209a20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x209a20)" ( (binary_expression "in_t9 + 0x209a20" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" if (parenthesized_expression "(dVar10 < dVar9)" ( (binary_expression "dVar10 < dVar9" identifier < identifier) )) (compound_statement "{\n    uVar3 = (uint)dVar10;\n  }" { (expression_statement "uVar3 = (uint)dVar10;" (assignment_expression "uVar3 = (uint)dVar10" identifier = (cast_expression "(uint)dVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" else (compound_statement "{\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" { (expression_statement "uVar3 = (int)(dVar10 - dVar9) | 0x80000000;" (assignment_expression "uVar3 = (int)(dVar10 - dVar9) | 0x80000000" identifier = (binary_expression "(int)(dVar10 - dVar9) | 0x80000000" (cast_expression "(int)(dVar10 - dVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(dVar10 - dVar9)" ( (binary_expression "dVar10 - dVar9" identifier - identifier) ))) | number_literal)) ;) }))) (if_statement "if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }" if (parenthesized_expression "(uVar3 <= param_2 + iVar1)" ( (binary_expression "uVar3 <= param_2 + iVar1" identifier <= (binary_expression "param_2 + iVar1" identifier + identifier)) )) (compound_statement "{\n    uVar3 = param_2 + iVar1;\n  }" { (expression_statement "uVar3 = param_2 + iVar1;" (assignment_expression "uVar3 = param_2 + iVar1" identifier = (binary_expression "param_2 + iVar1" identifier + identifier)) ;) })) (expression_statement "puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);" (assignment_expression "puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" identifier = (cast_expression "(uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" (parenthesized_expression "(**(code **)(in_t9 + 0x20a664))" ( (pointer_expression "**(code **)(in_t9 + 0x20a664)" * (pointer_expression "*(code **)(in_t9 + 0x20a664)" * (cast_expression "(code **)(in_t9 + 0x20a664)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x20a664)" ( (binary_expression "in_t9 + 0x20a664" identifier + number_literal) ))))) )) (argument_list "(param_1 + 0x10,uVar3)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier ))))) ;) (if_statement "if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }" if (parenthesized_expression "(puVar2 == *(uint **)(param_1 + 4))" ( (binary_expression "puVar2 == *(uint **)(param_1 + 4)" identifier == (pointer_expression "*(uint **)(param_1 + 4)" * (cast_expression "(uint **)(param_1 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0x14) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (labeled_statement "std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);" statement_identifier (ERROR "::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std:" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Hashkey,std" identifier , identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Hashkey_const,unsigned_int>,std" identifier , (binary_expression "unsigned_int>,std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Hashkey_const,unsigned_int>>,std" identifier , (binary_expression "unsigned_int>>,std" identifier >> (ERROR "," ,) identifier)) :) : (labeled_statement "__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);" statement_identifier (ERROR "::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::Stringpool_hash,std:" : : (comma_expression "_Select1st,gold" identifier , identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Stringpool_eq,gold" identifier , identifier) : : (binary_expression "Stringpool_template<unsigned_int" 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  ::_M_rehash(param_1,puVar2);" 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  ::_M_rehash(param_1,puVar2);" 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  ::_M_rehash(param_1,puVar2);" statement_identifier (ERROR "::_Prime_rehash_policy,std:" : : (comma_expression "_Prime_rehash_policy,std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" (comma_expression "_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "false,true>>\n  ::_M_rehash(param_1,puVar2)" false , (binary_expression "true>>\n  ::_M_rehash(param_1,puVar2)" true >> (ERROR "::" : :) (call_expression "_M_rehash(param_1,puVar2)" identifier (argument_list "(param_1,puVar2)" ( identifier , identifier )))))) ;))))))) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void reserve(Stringpool_template<unsigned_int> * this, uint n) */\n\nvoid __thiscall\ngold::Stringpool_template<unsigned_int>::reserve(Stringpool_template<unsigned_int> *this,uint n)\n\n{\n  _Vector_base<int,_std::allocator<int>_> *p_Var1;\n  int iVar2;\n  size_type __n;\n  uint uVar3;\n  pointer pvVar4;\n  pointer pvVar5;\n  size_type sVar6;\n  pointer pvVar7;\n  pointer pvVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  size_t local_28 [3];\n  \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_start;\n  pvVar5 = (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  iVar2 = (int)pvVar5 - (int)pvVar4 >> 2;\n  if ((uint)(iVar2 * 0x55556000) < n) {\n    uVar3 = n + 0x1fff >> 0xd;\n    if ((uint)(iVar2 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);\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_start;\n      pvVar5 = (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    }\n    else if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }\n    if (pvVar4 != pvVar5) {\n      iVar2 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));\n      sVar6 = (this->string_set_)._M_h._M_element_count;\n      goto LAB_002289f8;\n    }\n  }\n  sVar6 = (this->string_set_)._M_h._M_element_count;\nLAB_002289f8:\n  local_28[0] = (this->string_set_)._M_h._M_rehash_policy._M_next_resize;\n  dVar10 = (double)(int)(sVar6 + 1);\n  if ((int)(sVar6 + 1) < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))\n                             (dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor);\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= n + sVar6) {\n    uVar3 = n + sVar6;\n  }\n  __n = (**(code **)(in_t9 + 0x20a664))(&(this->string_set_)._M_h._M_rehash_policy,uVar3);\n  if (__n == (this->string_set_)._M_h._M_bucket_count) {\n    (this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0];\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Stringpool_template<unsigned_int>::reserve(Stringpool_template<unsigned_int> *this,uint n)\n\n{\n  _Vector_base<int,_std::allocator<int>_> *p_Var1;\n  int iVar2;\n  size_type __n;\n  uint uVar3;\n  pointer pvVar4;\n  pointer pvVar5;\n  size_type sVar6;\n  pointer pvVar7;\n  pointer pvVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  size_t local_28 [3];\n  \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_start;\n  pvVar5 = (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  iVar2 = (int)pvVar5 - (int)pvVar4 >> 2;\n  if ((uint)(iVar2 * 0x55556000) < n) {\n    uVar3 = n + 0x1fff >> 0xd;\n    if ((uint)(iVar2 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);\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_start;\n      pvVar5 = (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    }\n    else if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }\n    if (pvVar4 != pvVar5) {\n      iVar2 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));\n      sVar6 = (this->string_set_)._M_h._M_element_count;\n      goto LAB_002289f8;\n    }\n  }\n  sVar6 = (this->string_set_)._M_h._M_element_count;\nLAB_002289f8:\n  local_28[0] = (this->string_set_)._M_h._M_rehash_policy._M_next_resize;\n  dVar10 = (double)(int)(sVar6 + 1);\n  if ((int)(sVar6 + 1) < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))\n                             (dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor);\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= n + sVar6) {\n    uVar3 = n + sVar6;\n  }\n  __n = (**(code **)(in_t9 + 0x20a664))(&(this->string_set_)._M_h._M_rehash_policy,uVar3);\n  if (__n == (this->string_set_)._M_h._M_bucket_count) {\n    (this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0];\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Stringpool_template<unsigned_int>::" identifier : : identifier < identifier > : :) (function_declarator "reserve(Stringpool_template<unsigned_int> *this,uint n)" identifier (parameter_list "(Stringpool_template<unsigned_int> *this,uint n)" ( (parameter_declaration "Stringpool_template<unsigned_int> *this" type_identifier (ERROR "<unsigned_int>" < identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint n" type_identifier identifier) ))) (compound_statement "{\n  _Vector_base<int,_std::allocator<int>_> *p_Var1;\n  int iVar2;\n  size_type __n;\n  uint uVar3;\n  pointer pvVar4;\n  pointer pvVar5;\n  size_type sVar6;\n  pointer pvVar7;\n  pointer pvVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  size_t local_28 [3];\n  \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_start;\n  pvVar5 = (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  iVar2 = (int)pvVar5 - (int)pvVar4 >> 2;\n  if ((uint)(iVar2 * 0x55556000) < n) {\n    uVar3 = n + 0x1fff >> 0xd;\n    if ((uint)(iVar2 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);\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_start;\n      pvVar5 = (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    }\n    else if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }\n    if (pvVar4 != pvVar5) {\n      iVar2 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));\n      sVar6 = (this->string_set_)._M_h._M_element_count;\n      goto LAB_002289f8;\n    }\n  }\n  sVar6 = (this->string_set_)._M_h._M_element_count;\nLAB_002289f8:\n  local_28[0] = (this->string_set_)._M_h._M_rehash_policy._M_next_resize;\n  dVar10 = (double)(int)(sVar6 + 1);\n  if ((int)(sVar6 + 1) < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))\n                             (dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor);\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= n + sVar6) {\n    uVar3 = n + sVar6;\n  }\n  __n = (**(code **)(in_t9 + 0x20a664))(&(this->string_set_)._M_h._M_rehash_policy,uVar3);\n  if (__n == (this->string_set_)._M_h._M_bucket_count) {\n    (this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0];\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);\n  return;\n}" { (ERROR "_Vector_base<int,_std::" (comma_expression "_Vector_base<int,_std" (binary_expression "_Vector_base<int" identifier < identifier) , identifier) : :) (expression_statement "allocator<int>_> *p_Var1;" (binary_expression "allocator<int>_> *p_Var1" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > (pointer_expression "*p_Var1" * identifier)) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "size_type __n;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "pointer pvVar4;" type_identifier identifier ;) (declaration "pointer pvVar5;" type_identifier identifier ;) (declaration "size_type sVar6;" type_identifier identifier ;) (declaration "pointer pvVar7;" type_identifier identifier ;) (declaration "pointer pvVar8;" type_identifier identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "size_t local_28 [3];" primitive_type (array_declarator "local_28 [3]" identifier [ number_literal ]) ;) (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_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 "pvVar5 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::" (comma_expression "pvVar5 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int,_std" (binary_expression "pvVar5 = (this->key_to_offset_).chunks_.\n           super__Vector_base<std::vector<int" (assignment_expression "pvVar5 = (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) ;) (expression_statement "iVar2 = (int)pvVar5 - (int)pvVar4 >> 2;" (assignment_expression "iVar2 = (int)pvVar5 - (int)pvVar4 >> 2" identifier = (binary_expression "(int)pvVar5 - (int)pvVar4 >> 2" (binary_expression "(int)pvVar5 - (int)pvVar4" (cast_expression "(int)pvVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if ((uint)(iVar2 * 0x55556000) < n) {\n    uVar3 = n + 0x1fff >> 0xd;\n    if ((uint)(iVar2 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);\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_start;\n      pvVar5 = (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    }\n    else if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }\n    if (pvVar4 != pvVar5) {\n      iVar2 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));\n      sVar6 = (this->string_set_)._M_h._M_element_count;\n      goto LAB_002289f8;\n    }\n  }" if (parenthesized_expression "((uint)(iVar2 * 0x55556000) < n)" ( (binary_expression "(uint)(iVar2 * 0x55556000) < n" (call_expression "(uint)(iVar2 * 0x55556000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 * 0x55556000)" ( (binary_expression "iVar2 * 0x55556000" identifier * number_literal) ))) < identifier) )) (compound_statement "{\n    uVar3 = n + 0x1fff >> 0xd;\n    if ((uint)(iVar2 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);\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_start;\n      pvVar5 = (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    }\n    else if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }\n    if (pvVar4 != pvVar5) {\n      iVar2 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));\n      sVar6 = (this->string_set_)._M_h._M_element_count;\n      goto LAB_002289f8;\n    }\n  }" { (expression_statement "uVar3 = n + 0x1fff >> 0xd;" (assignment_expression "uVar3 = n + 0x1fff >> 0xd" identifier = (binary_expression "n + 0x1fff >> 0xd" (binary_expression "n + 0x1fff" identifier + number_literal) >> number_literal)) ;) (if_statement "if ((uint)(iVar2 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);\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_start;\n      pvVar5 = (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    }\n    else if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }" if (parenthesized_expression "((uint)(iVar2 * -0x55555555) < uVar3)" ( (binary_expression "(uint)(iVar2 * -0x55555555) < uVar3" (call_expression "(uint)(iVar2 * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 * -0x55555555)" ( (binary_expression "iVar2 * -0x55555555" identifier * number_literal) ))) < identifier) )) (compound_statement "{\n      std::\n      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::allocator<int>_>_>_>\n      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);\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_start;\n      pvVar5 = (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    }" { (ERROR "std::\n      vector<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::" (comma_expression "std::\n      vector<std::vector<int,_std::allocator<int>_>,_std" identifier (ERROR "::\n      vector<std::vector<int,_std::allocator<int>_>" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "vector<int,_std" (binary_expression "vector<int" identifier < identifier) , identifier) : : (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) >) , 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_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555);" (binary_expression "allocator<int>_>_>_>\n      ::_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555)" (binary_expression "allocator<int>_>_>_" (binary_expression "allocator<int>_>_" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > identifier) > identifier) > (ERROR "::" : :) (call_expression "_M_default_append(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555)" identifier (argument_list "(&(this->key_to_offset_).chunks_,uVar3 + iVar2 * 0x55555555)" ( (pointer_expression "&(this->key_to_offset_).chunks_" & (field_expression "(this->key_to_offset_).chunks_" (parenthesized_expression "(this->key_to_offset_)" ( (field_expression "this->key_to_offset_" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "uVar3 + iVar2 * 0x55555555" identifier + (binary_expression "iVar2 * 0x55555555" identifier * number_literal)) )))) ;) (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_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 "pvVar5 = (this->key_to_offset_).chunks_.\n               super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::" (comma_expression "pvVar5 = (this->key_to_offset_).chunks_.\n               super__Vector_base<std::vector<int,_std" (binary_expression "pvVar5 = (this->key_to_offset_).chunks_.\n               super__Vector_base<std::vector<int" (assignment_expression "pvVar5 = (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) ;) }) (else_clause "else if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }" else (if_statement "if ((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)) {\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }" if (parenthesized_expression "((uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8))" ( (binary_expression "(uVar3 < (uint)(iVar2 * -0x55555555)) &&\n            (pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)" (parenthesized_expression "(uVar3 < (uint)(iVar2 * -0x55555555))" ( (binary_expression "uVar3 < (uint)(iVar2 * -0x55555555)" identifier < (call_expression "(uint)(iVar2 * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 * -0x55555555)" ( (binary_expression "iVar2 * -0x55555555" identifier * number_literal) )))) )) && (parenthesized_expression "(pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8)" ( (comma_expression "pvVar8 = pvVar4 + uVar3, pvVar7 = pvVar8, pvVar5 != pvVar8" (assignment_expression "pvVar8 = pvVar4 + uVar3" identifier = (binary_expression "pvVar4 + uVar3" identifier + identifier)) , (comma_expression "pvVar7 = pvVar8, pvVar5 != pvVar8" (assignment_expression "pvVar7 = pvVar8" identifier = identifier) , (binary_expression "pvVar5 != pvVar8" identifier != identifier))) ))) )) (compound_statement "{\n      do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);\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_start;\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 = pvVar8;\n      pvVar5 = pvVar8;\n    }" { (do_statement "do {\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (pvVar5 != pvVar7);" do (compound_statement "{\n        p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>;\n        pvVar7 = pvVar7 + 1;\n        if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      }" { (ERROR "p_Var1 = &pvVar7->super__Vector_base<int,_std::allocator<int>_>" (comma_expression "p_Var1 = &pvVar7->super__Vector_base<int,_std" (assignment_expression "p_Var1 = &pvVar7->super__Vector_base<int" identifier = (binary_expression "&pvVar7->super__Vector_base<int" (pointer_expression "&pvVar7->super__Vector_base" & (field_expression "pvVar7->super__Vector_base" identifier -> field_identifier)) < identifier)) , identifier) : : (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) >) (expression_statement ";" ;) (expression_statement "pvVar7 = pvVar7 + 1;" (assignment_expression "pvVar7 = pvVar7 + 1" identifier = (binary_expression "pvVar7 + 1" identifier + number_literal)) ;) (if_statement "if ((p_Var1->_M_impl)._M_start != (pointer)0x0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }" if (parenthesized_expression "((p_Var1->_M_impl)._M_start != (pointer)0x0)" ( (binary_expression "(p_Var1->_M_impl)._M_start != (pointer)0x0" (field_expression "(p_Var1->_M_impl)._M_start" (parenthesized_expression "(p_Var1->_M_impl)" ( (field_expression "p_Var1->_M_impl" identifier -> field_identifier) )) . field_identifier) != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n          (**(code **)(in_t9 + 0x2098f8))();\n        }" { (expression_statement "(**(code **)(in_t9 + 0x2098f8))();" (call_expression "(**(code **)(in_t9 + 0x2098f8))()" (parenthesized_expression "(**(code **)(in_t9 + 0x2098f8))" ( (pointer_expression "**(code **)(in_t9 + 0x2098f8)" * (pointer_expression "*(code **)(in_t9 + 0x2098f8)" * (cast_expression "(code **)(in_t9 + 0x2098f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2098f8)" ( (binary_expression "in_t9 + 0x2098f8" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }) while (parenthesized_expression "(pvVar5 != pvVar7)" ( (binary_expression "pvVar5 != pvVar7" identifier != 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_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 "(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 = pvVar8;" (assignment_expression "allocator<int>_>_>_>\n      ._M_impl._M_finish = pvVar8" (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 "pvVar5 = pvVar8;" (assignment_expression "pvVar5 = pvVar8" identifier = identifier) ;) })))) (if_statement "if (pvVar4 != pvVar5) {\n      iVar2 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));\n      sVar6 = (this->string_set_)._M_h._M_element_count;\n      goto LAB_002289f8;\n    }" if (parenthesized_expression "(pvVar4 != pvVar5)" ( (binary_expression "pvVar4 != pvVar5" identifier != identifier) )) (compound_statement "{\n      iVar2 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));\n      sVar6 = (this->string_set_)._M_h._M_element_count;\n      goto LAB_002289f8;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      } while (uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555));" do (compound_statement "{\n        std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);\n        uVar3 = uVar3 + 1;\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_start;\n        iVar2 = iVar2 + 0xc;\n      }" { (labeled_statement "std::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std::allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);" statement_identifier (ERROR "::vector<int,_std::allocator<int>_>::reserve\n                  ((vector<int,_std:" : : (comma_expression "vector<int,_std" (binary_expression "vector<int" identifier < identifier) , identifier) : : (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > : : identifier ( ( (comma_expression "vector<int,_std" (binary_expression "vector<int" identifier < identifier) , identifier) :) : (expression_statement "allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000);" (comma_expression "allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2),0x2000" (binary_expression "allocator<int>_> *)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2)" (binary_expression "allocator<int>_" (binary_expression "allocator<int" identifier < identifier) > identifier) > (pointer_expression "*)\n                   ((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2)" * (ERROR ")" )) (parenthesized_expression "((int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2)" ( (binary_expression "(int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start +\n                   iVar2" (cast_expression "(int)&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start" & (field_expression "(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl._M_start" (field_expression "(pvVar4->super__Vector_base<int,_std::allocator<int>_>)._M_impl" (parenthesized_expression "(pvVar4->super__Vector_base<int,_std::allocator<int>_>)" ( (ERROR "pvVar4->super__Vector_base<int,_std::" (comma_expression "pvVar4->super__Vector_base<int,_std" (binary_expression "pvVar4->super__Vector_base<int" (field_expression "pvVar4->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))) + identifier) )))) , number_literal) (ERROR ")" )) ;)) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (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_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) ;) (expression_statement "iVar2 = iVar2 + 0xc;" (assignment_expression "iVar2 = iVar2 + 0xc" identifier = (binary_expression "iVar2 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555))" ( (binary_expression "uVar3 < (uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555)" identifier < (call_expression "(uint)(((int)(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 - (int)pvVar4 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((int)(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 - (int)pvVar4 >> 2) * -0x55555555)" ( (binary_expression "((int)(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 - (int)pvVar4 >> 2) * -0x55555555" (parenthesized_expression "((int)(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 - (int)pvVar4 >> 2)" ( (ERROR "(int)(this->key_to_offset_).chunks_.\n                                    super__Vector_base<std::vector<int,_std::allocator<int>_>,_std::allocator<std::vector<int,_std::" (comma_expression "(int)(this->key_to_offset_).chunks_.\n                                    super__Vector_base<std::vector<int,_std" (binary_expression "(int)(this->key_to_offset_).chunks_.\n                                    super__Vector_base<std::vector<int" (binary_expression "(int)(this->key_to_offset_).chunks_.\n                                    super__Vector_base<std" (cast_expression "(int)(this->key_to_offset_).chunks_.\n                                    super__Vector_base" ( (type_descriptor "int" primitive_type) ) (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) : :) (binary_expression "allocator<int>_>_>_>\n                                    ._M_impl._M_finish - (int)pvVar4 >> 2" (binary_expression "allocator<int>_>_>_>\n                                    ._M_impl._M_finish - (int)pvVar4" (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) - (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "sVar6 = (this->string_set_)._M_h._M_element_count;" (assignment_expression "sVar6 = (this->string_set_)._M_h._M_element_count" identifier = (field_expression "(this->string_set_)._M_h._M_element_count" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (goto_statement "goto LAB_002289f8;" goto statement_identifier ;) })) })) (expression_statement "sVar6 = (this->string_set_)._M_h._M_element_count;" (assignment_expression "sVar6 = (this->string_set_)._M_h._M_element_count" identifier = (field_expression "(this->string_set_)._M_h._M_element_count" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (labeled_statement "LAB_002289f8:\n  local_28[0] = (this->string_set_)._M_h._M_rehash_policy._M_next_resize;" statement_identifier : (expression_statement "local_28[0] = (this->string_set_)._M_h._M_rehash_policy._M_next_resize;" (assignment_expression "local_28[0] = (this->string_set_)._M_h._M_rehash_policy._M_next_resize" (subscript_expression "local_28[0]" identifier [ number_literal ]) = (field_expression "(this->string_set_)._M_h._M_rehash_policy._M_next_resize" (field_expression "(this->string_set_)._M_h._M_rehash_policy" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;)) (expression_statement "dVar10 = (double)(int)(sVar6 + 1);" (assignment_expression "dVar10 = (double)(int)(sVar6 + 1)" identifier = (cast_expression "(double)(int)(sVar6 + 1)" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)(sVar6 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar6 + 1)" ( (binary_expression "sVar6 + 1" identifier + number_literal) ))))) ;) (if_statement "if ((int)(sVar6 + 1) < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }" if (parenthesized_expression "((int)(sVar6 + 1) < 0)" ( (binary_expression "(int)(sVar6 + 1) < 0" (cast_expression "(int)(sVar6 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar6 + 1)" ( (binary_expression "sVar6 + 1" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }" { (expression_statement "dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);" (assignment_expression "dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" identifier = (binary_expression "dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" identifier + (pointer_expression "*(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" * (cast_expression "(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x209a20) + -0x12c0)" ( (binary_expression "*(int *)(in_t9 + 0x209a20) + -0x12c0" (pointer_expression "*(int *)(in_t9 + 0x209a20)" * (cast_expression "(int *)(in_t9 + 0x209a20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x209a20)" ( (binary_expression "in_t9 + 0x209a20" identifier + number_literal) )))) + number_literal) )))))) ;) })) (expression_statement "dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))\n                             (dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor);" (assignment_expression "dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))\n                             (dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor)" identifier = (cast_expression "(double)(**(code **)(in_t9 + 0x20dc98))\n                             (dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor)" ( (type_descriptor "double" primitive_type) ) (call_expression "(**(code **)(in_t9 + 0x20dc98))\n                             (dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor)" (parenthesized_expression "(**(code **)(in_t9 + 0x20dc98))" ( (pointer_expression "**(code **)(in_t9 + 0x20dc98)" * (pointer_expression "*(code **)(in_t9 + 0x20dc98)" * (cast_expression "(code **)(in_t9 + 0x20dc98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x20dc98)" ( (binary_expression "in_t9 + 0x20dc98" identifier + number_literal) ))))) )) (argument_list "(dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor)" ( (binary_expression "dVar10 / (double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor" identifier / (cast_expression "(double)(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor" ( (type_descriptor "double" primitive_type) ) (field_expression "(this->string_set_)._M_h._M_rehash_policy.\n                                               _M_max_load_factor" (field_expression "(this->string_set_)._M_h._M_rehash_policy" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ))))) ;) (expression_statement "dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);" (assignment_expression "dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" identifier = (pointer_expression "*(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" * (cast_expression "(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x209a20) + -0x12b8)" ( (binary_expression "*(int *)(in_t9 + 0x209a20) + -0x12b8" (pointer_expression "*(int *)(in_t9 + 0x209a20)" * (cast_expression "(int *)(in_t9 + 0x209a20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x209a20)" ( (binary_expression "in_t9 + 0x209a20" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" if (parenthesized_expression "(dVar10 < dVar9)" ( (binary_expression "dVar10 < dVar9" identifier < identifier) )) (compound_statement "{\n    uVar3 = (uint)dVar10;\n  }" { (expression_statement "uVar3 = (uint)dVar10;" (assignment_expression "uVar3 = (uint)dVar10" identifier = (cast_expression "(uint)dVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" else (compound_statement "{\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" { (expression_statement "uVar3 = (int)(dVar10 - dVar9) | 0x80000000;" (assignment_expression "uVar3 = (int)(dVar10 - dVar9) | 0x80000000" identifier = (binary_expression "(int)(dVar10 - dVar9) | 0x80000000" (cast_expression "(int)(dVar10 - dVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(dVar10 - dVar9)" ( (binary_expression "dVar10 - dVar9" identifier - identifier) ))) | number_literal)) ;) }))) (if_statement "if (uVar3 <= n + sVar6) {\n    uVar3 = n + sVar6;\n  }" if (parenthesized_expression "(uVar3 <= n + sVar6)" ( (binary_expression "uVar3 <= n + sVar6" identifier <= (binary_expression "n + sVar6" identifier + identifier)) )) (compound_statement "{\n    uVar3 = n + sVar6;\n  }" { (expression_statement "uVar3 = n + sVar6;" (assignment_expression "uVar3 = n + sVar6" identifier = (binary_expression "n + sVar6" identifier + identifier)) ;) })) (expression_statement "__n = (**(code **)(in_t9 + 0x20a664))(&(this->string_set_)._M_h._M_rehash_policy,uVar3);" (assignment_expression "__n = (**(code **)(in_t9 + 0x20a664))(&(this->string_set_)._M_h._M_rehash_policy,uVar3)" identifier = (call_expression "(**(code **)(in_t9 + 0x20a664))(&(this->string_set_)._M_h._M_rehash_policy,uVar3)" (parenthesized_expression "(**(code **)(in_t9 + 0x20a664))" ( (pointer_expression "**(code **)(in_t9 + 0x20a664)" * (pointer_expression "*(code **)(in_t9 + 0x20a664)" * (cast_expression "(code **)(in_t9 + 0x20a664)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x20a664)" ( (binary_expression "in_t9 + 0x20a664" identifier + number_literal) ))))) )) (argument_list "(&(this->string_set_)._M_h._M_rehash_policy,uVar3)" ( (pointer_expression "&(this->string_set_)._M_h._M_rehash_policy" & (field_expression "(this->string_set_)._M_h._M_rehash_policy" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , identifier )))) ;) (if_statement "if (__n == (this->string_set_)._M_h._M_bucket_count) {\n    (this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0];\n    return;\n  }" if (parenthesized_expression "(__n == (this->string_set_)._M_h._M_bucket_count)" ( (binary_expression "__n == (this->string_set_)._M_h._M_bucket_count" identifier == (field_expression "(this->string_set_)._M_h._M_bucket_count" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n    (this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0];\n    return;\n  }" { (expression_statement "(this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0];" (assignment_expression "(this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0]" (field_expression "(this->string_set_)._M_h._M_rehash_policy._M_next_resize" (field_expression "(this->string_set_)._M_h._M_rehash_policy" (field_expression "(this->string_set_)._M_h" (parenthesized_expression "(this->string_set_)" ( (field_expression "this->string_set_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (subscript_expression "local_28[0]" identifier [ number_literal ])) ;) (return_statement "return;" return ;) })) (labeled_statement "std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);" statement_identifier (ERROR "::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std:" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Hashkey,_std" identifier , identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (binary_expression "Stringpool_template<unsigned_int" 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<unsigned_int" 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<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);" statement_identifier (ERROR "::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::Stringpool_hash,_std:" : : (comma_expression "_Select1st,_gold" identifier , identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Stringpool_eq,_gold" identifier , identifier) : : (binary_expression "Stringpool_template<unsigned_int" 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  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);" 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  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);" 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  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_false,_true>_>\n  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_false,_true>_>\n  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28);" (comma_expression "_Hashtable_traits<true,_false,_true>_>\n  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28)" identifier , (binary_expression "_true>_>\n  ::_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28)" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "_M_rehash((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28)" identifier (argument_list "((_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28)" ( (parenthesized_expression "(_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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,local_28)" ( (ERROR "_Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<unsigned_int>::Stringpool_eq,_gold::Stringpool_template<unsigned_int>::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<unsigned_int>::Hashkey,_std" (binary_expression "Stringpool_template<unsigned_int>::Hashkey" (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > (ERROR "::" : :) identifier) , identifier) : : (binary_expression "pair<const_gold" identifier < identifier) : : (comma_expression "Stringpool_template<unsigned_int>::Hashkey,_unsigned_int>,_std" (binary_expression "Stringpool_template<unsigned_int>::Hashkey" (binary_expression "Stringpool_template<unsigned_int" 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<unsigned_int>::Hashkey,_unsigned_int>_>,_std" (binary_expression "Stringpool_template<unsigned_int>::Hashkey" (binary_expression "Stringpool_template<unsigned_int" 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<unsigned_int>::Stringpool_eq,_gold" (binary_expression "Stringpool_template<unsigned_int>::Stringpool_eq" (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > (ERROR "::" : :) identifier) , identifier) : : (comma_expression "Stringpool_template<unsigned_int>::Stringpool_hash,_std" (binary_expression "Stringpool_template<unsigned_int>::Stringpool_hash" (binary_expression "Stringpool_template<unsigned_int" 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,__n,local_28" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_false,_true>_>\n               *)this,__n,local_28" identifier , (comma_expression "_true>_>\n               *)this,__n,local_28" (binary_expression "_true>_>\n               *)this" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)this" * (ERROR ")" )) identifier)) , (comma_expression "__n,local_28" identifier , identifier)))) )) )))))) ;))))))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00228994(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  \n  piVar5 = *(int **)(param_1 + 0x1c);\n  piVar6 = *(int **)(param_1 + 0x20);\n  iVar1 = (int)piVar6 - (int)piVar5 >> 2;\n  if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0xc);\nLAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);\n  dVar10 = (double)(iVar1 + 1);\n  if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }\n  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);\n  if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);\n  return;\n}\n\n" (function_definition "void FUN_00228994(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  \n  piVar5 = *(int **)(param_1 + 0x1c);\n  piVar6 = *(int **)(param_1 + 0x20);\n  iVar1 = (int)piVar6 - (int)piVar5 >> 2;\n  if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0xc);\nLAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);\n  dVar10 = (double)(iVar1 + 1);\n  if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }\n  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);\n  if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);\n  return;\n}" primitive_type (function_declarator "FUN_00228994(uint param_1,uint param_2)" identifier (parameter_list "(uint param_1,uint param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  \n  piVar5 = *(int **)(param_1 + 0x1c);\n  piVar6 = *(int **)(param_1 + 0x20);\n  iVar1 = (int)piVar6 - (int)piVar5 >> 2;\n  if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0xc);\nLAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);\n  dVar10 = (double)(iVar1 + 1);\n  if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }\n  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);\n  if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(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 "piVar6 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar6 = *(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 "iVar1 = (int)piVar6 - (int)piVar5 >> 2;" (assignment_expression "iVar1 = (int)piVar6 - (int)piVar5 >> 2" identifier = (binary_expression "(int)piVar6 - (int)piVar5 >> 2" (binary_expression "(int)piVar6 - (int)piVar5" (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }" if (parenthesized_expression "((uint)(iVar1 * 0x55556000) < param_2)" ( (binary_expression "(uint)(iVar1 * 0x55556000) < param_2" (call_expression "(uint)(iVar1 * 0x55556000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 * 0x55556000)" ( (binary_expression "iVar1 * 0x55556000" identifier * number_literal) ))) < identifier) )) (compound_statement "{\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }" { (expression_statement "uVar3 = param_2 + 0x1fff >> 0xd;" (assignment_expression "uVar3 = param_2 + 0x1fff >> 0xd" identifier = (binary_expression "param_2 + 0x1fff >> 0xd" (binary_expression "param_2 + 0x1fff" identifier + number_literal) >> number_literal)) ;) (if_statement "if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" if (parenthesized_expression "((uint)(iVar1 * -0x55555555) < uVar3)" ( (binary_expression "(uint)(iVar1 * -0x55555555) < uVar3" (call_expression "(uint)(iVar1 * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 * -0x55555555)" ( (binary_expression "iVar1 * -0x55555555" identifier * number_literal) ))) < identifier) )) (compound_statement "{\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }" { (labeled_statement "std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);" statement_identifier (ERROR "::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std:" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "vector<int,std" (binary_expression "vector<int" identifier < identifier) , identifier) : : (binary_expression "allocator<int>>,std" identifier < (binary_expression "int>>,std" 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_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);" (binary_expression "allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" identifier < (binary_expression "int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" identifier >> (ERROR ">>\n      ::" >> : :) (call_expression "_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" identifier (argument_list "((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" ( (call_expression "(vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c)" (parenthesized_expression "(vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)" ( (ERROR "vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::" (comma_expression "vector<std::vector<int,std" (binary_expression "vector<std::vector<int" (binary_expression "vector<std" identifier < identifier) (ERROR "::vector" : : identifier) < identifier) , identifier) : : (binary_expression "allocator<int>>,std" identifier < (binary_expression "int>>,std" identifier >> (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "vector<int,std" (binary_expression "vector<int" identifier < identifier) , identifier) : :) (binary_expression "allocator<int>>>>\n                           *" identifier < (binary_expression "int>>>>\n                           *" identifier >> (ERROR ">>" >>) (pointer_expression "*" * identifier))) )) (argument_list "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))) , (binary_expression "uVar3 + iVar1 * 0x55555555" identifier + (binary_expression "iVar1 * 0x55555555" identifier * number_literal)) ))))) ;)) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(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 "piVar6 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar6 = *(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) ))))) ;) }) (else_clause "else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" else (if_statement "if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" if (parenthesized_expression "((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8))" ( (binary_expression "(uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)" (parenthesized_expression "(uVar3 < (uint)(iVar1 * -0x55555555))" ( (binary_expression "uVar3 < (uint)(iVar1 * -0x55555555)" identifier < (call_expression "(uint)(iVar1 * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 * -0x55555555)" ( (binary_expression "iVar1 * -0x55555555" identifier * number_literal) )))) )) && (parenthesized_expression "(piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)" ( (comma_expression "piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8" (assignment_expression "piVar8 = piVar5 + uVar3 * 3" identifier = (binary_expression "piVar5 + uVar3 * 3" identifier + (binary_expression "uVar3 * 3" identifier * number_literal))) , (comma_expression "piVar7 = piVar8, piVar6 != piVar8" (assignment_expression "piVar7 = piVar8" identifier = identifier) , (binary_expression "piVar6 != piVar8" identifier != identifier))) ))) )) (compound_statement "{\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" { (do_statement "do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);" do (compound_statement "{\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      }" { (expression_statement "iVar1 = *piVar7;" (assignment_expression "iVar1 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "piVar7 = piVar7 + 3;" (assignment_expression "piVar7 = piVar7 + 3" identifier = (binary_expression "piVar7 + 3" identifier + number_literal)) ;) (if_statement "if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          (**(code **)(in_t9 + 0x2098f8))();\n        }" { (expression_statement "(**(code **)(in_t9 + 0x2098f8))();" (call_expression "(**(code **)(in_t9 + 0x2098f8))()" (parenthesized_expression "(**(code **)(in_t9 + 0x2098f8))" ( (pointer_expression "**(code **)(in_t9 + 0x2098f8)" * (pointer_expression "*(code **)(in_t9 + 0x2098f8)" * (cast_expression "(code **)(in_t9 + 0x2098f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x2098f8)" ( (binary_expression "in_t9 + 0x2098f8" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }) while (parenthesized_expression "(piVar6 != piVar7)" ( (binary_expression "piVar6 != piVar7" identifier != identifier) )) ;) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(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 "*(int **)(param_1 + 0x20) = piVar8;" (assignment_expression "*(int **)(param_1 + 0x20) = piVar8" (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 "piVar6 = piVar8;" (assignment_expression "piVar6 = piVar8" identifier = identifier) ;) })))) (if_statement "if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }" if (parenthesized_expression "(piVar5 != piVar6)" ( (binary_expression "piVar5 != piVar6" identifier != identifier) )) (compound_statement "{\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }" { (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));" do (compound_statement "{\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      }" { (labeled_statement "std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);" statement_identifier (ERROR "::vector<int,std:" : : (comma_expression "vector<int,std" (binary_expression "vector<int" identifier < identifier) , identifier) :) : (expression_statement "allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);" (binary_expression "allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" identifier < (binary_expression "int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" identifier >> (ERROR "::" : :) (call_expression "reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" identifier (argument_list "((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" ( (call_expression "(vector<int,std::allocator<int>> *)((int)piVar5 + iVar1)" (parenthesized_expression "(vector<int,std::allocator<int>> *)" ( (ERROR "vector<int,std::" (comma_expression "vector<int,std" (binary_expression "vector<int" identifier < identifier) , identifier) : :) (binary_expression "allocator<int>> *" identifier < (binary_expression "int>> *" identifier >> (pointer_expression "*" * identifier))) )) (argument_list "((int)piVar5 + iVar1)" ( (binary_expression "(int)piVar5 + iVar1" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , number_literal ))))) ;)) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(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 "iVar1 = iVar1 + 0xc;" (assignment_expression "iVar1 = iVar1 + 0xc" identifier = (binary_expression "iVar1 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555))" ( (binary_expression "uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" identifier < (call_expression "(uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" ( (binary_expression "(*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(param_1 + 0x20) - (int)piVar5 >> 2)" ( (binary_expression "*(int *)(param_1 + 0x20) - (int)piVar5 >> 2" (binary_expression "*(int *)(param_1 + 0x20) - (int)piVar5" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) - (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal) )))) )) ;) (expression_statement "iVar1 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_002289f8;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (labeled_statement "LAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);" statement_identifier : (expression_statement "uVar4 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar4 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;)) (expression_statement "dVar10 = (double)(iVar1 + 1);" (assignment_expression "dVar10 = (double)(iVar1 + 1)" identifier = (cast_expression "(double)(iVar1 + 1)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )))) ;) (if_statement "if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }" if (parenthesized_expression "(iVar1 + 1 < 0)" ( (binary_expression "iVar1 + 1 < 0" (binary_expression "iVar1 + 1" identifier + number_literal) < number_literal) )) (compound_statement "{\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }" { (expression_statement "dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);" (assignment_expression "dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" identifier = (binary_expression "dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" identifier + (pointer_expression "*(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" * (cast_expression "(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x209a20) + -0x12c0)" ( (binary_expression "*(int *)(in_t9 + 0x209a20) + -0x12c0" (pointer_expression "*(int *)(in_t9 + 0x209a20)" * (cast_expression "(int *)(in_t9 + 0x209a20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x209a20)" ( (binary_expression "in_t9 + 0x209a20" identifier + number_literal) )))) + number_literal) )))))) ;) })) (expression_statement "dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));" (assignment_expression "dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" identifier = (cast_expression "(double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" ( (type_descriptor "double" primitive_type) ) (call_expression "(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" (parenthesized_expression "(**(code **)(in_t9 + 0x20dc98))" ( (pointer_expression "**(code **)(in_t9 + 0x20dc98)" * (pointer_expression "*(code **)(in_t9 + 0x20dc98)" * (cast_expression "(code **)(in_t9 + 0x20dc98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x20dc98)" ( (binary_expression "in_t9 + 0x20dc98" identifier + number_literal) ))))) )) (argument_list "(dVar10 / (double)*(float *)(param_1 + 0x10))" ( (binary_expression "dVar10 / (double)*(float *)(param_1 + 0x10)" identifier / (cast_expression "(double)*(float *)(param_1 + 0x10)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(param_1 + 0x10)" * (cast_expression "(float *)(param_1 + 0x10)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))))) ))))) ;) (expression_statement "dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);" (assignment_expression "dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" identifier = (pointer_expression "*(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" * (cast_expression "(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x209a20) + -0x12b8)" ( (binary_expression "*(int *)(in_t9 + 0x209a20) + -0x12b8" (pointer_expression "*(int *)(in_t9 + 0x209a20)" * (cast_expression "(int *)(in_t9 + 0x209a20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x209a20)" ( (binary_expression "in_t9 + 0x209a20" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" if (parenthesized_expression "(dVar10 < dVar9)" ( (binary_expression "dVar10 < dVar9" identifier < identifier) )) (compound_statement "{\n    uVar3 = (uint)dVar10;\n  }" { (expression_statement "uVar3 = (uint)dVar10;" (assignment_expression "uVar3 = (uint)dVar10" identifier = (cast_expression "(uint)dVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" else (compound_statement "{\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" { (expression_statement "uVar3 = (int)(dVar10 - dVar9) | 0x80000000;" (assignment_expression "uVar3 = (int)(dVar10 - dVar9) | 0x80000000" identifier = (binary_expression "(int)(dVar10 - dVar9) | 0x80000000" (cast_expression "(int)(dVar10 - dVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(dVar10 - dVar9)" ( (binary_expression "dVar10 - dVar9" identifier - identifier) ))) | number_literal)) ;) }))) (if_statement "if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }" if (parenthesized_expression "(uVar3 <= param_2 + iVar1)" ( (binary_expression "uVar3 <= param_2 + iVar1" identifier <= (binary_expression "param_2 + iVar1" identifier + identifier)) )) (compound_statement "{\n    uVar3 = param_2 + iVar1;\n  }" { (expression_statement "uVar3 = param_2 + iVar1;" (assignment_expression "uVar3 = param_2 + iVar1" identifier = (binary_expression "param_2 + iVar1" identifier + identifier)) ;) })) (expression_statement "puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);" (assignment_expression "puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" identifier = (cast_expression "(uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" (parenthesized_expression "(**(code **)(in_t9 + 0x20a664))" ( (pointer_expression "**(code **)(in_t9 + 0x20a664)" * (pointer_expression "*(code **)(in_t9 + 0x20a664)" * (cast_expression "(code **)(in_t9 + 0x20a664)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x20a664)" ( (binary_expression "in_t9 + 0x20a664" identifier + number_literal) ))))) )) (argument_list "(param_1 + 0x10,uVar3)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier ))))) ;) (if_statement "if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }" if (parenthesized_expression "(puVar2 == *(uint **)(param_1 + 4))" ( (binary_expression "puVar2 == *(uint **)(param_1 + 4)" identifier == (pointer_expression "*(uint **)(param_1 + 4)" * (cast_expression "(uint **)(param_1 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0x14) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })) (labeled_statement "std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);" statement_identifier (ERROR "::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std:" : : (binary_expression "_Hashtable<gold" identifier < identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Hashkey,std" identifier , identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Hashkey_const,unsigned_int>,std" identifier , (binary_expression "unsigned_int>,std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Hashkey_const,unsigned_int>>,std" identifier , (binary_expression "unsigned_int>>,std" identifier >> (ERROR "," ,) identifier)) :) : (labeled_statement "__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);" statement_identifier (ERROR "::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::Stringpool_hash,std:" : : (comma_expression "_Select1st,gold" identifier , identifier) : : (binary_expression "Stringpool_template<unsigned_int" identifier < identifier) > : : (comma_expression "Stringpool_eq,gold" identifier , identifier) : : (binary_expression "Stringpool_template<unsigned_int" 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  ::_M_rehash(param_1,puVar2);" 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  ::_M_rehash(param_1,puVar2);" 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  ::_M_rehash(param_1,puVar2);" statement_identifier (ERROR "::_Prime_rehash_policy,std:" : : (comma_expression "_Prime_rehash_policy,std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" (comma_expression "_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "false,true>>\n  ::_M_rehash(param_1,puVar2)" false , (binary_expression "true>>\n  ::_M_rehash(param_1,puVar2)" true >> (ERROR "::" : :) (call_expression "_M_rehash(param_1,puVar2)" identifier (argument_list "(param_1,puVar2)" ( identifier , identifier )))))) ;))))))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < IDENT) )) (compound_statement { (labeled_statement statement_identifier (ERROR : : (binary_expression IDENT < IDENT) : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) : : (binary_expression IDENT < (binary_expression IDENT >> (ERROR ,) IDENT)) : : (binary_expression IDENT < IDENT) : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) :) : (expression_statement (binary_expression IDENT < (binary_expression IDENT >> (ERROR >> : :) (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( (ERROR (comma_expression (binary_expression (binary_expression IDENT < IDENT) (ERROR : : IDENT) < IDENT) , IDENT) : : (binary_expression IDENT < (binary_expression IDENT >> (ERROR ,) IDENT)) : : (binary_expression IDENT < IDENT) : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) : :) (binary_expression IDENT < (binary_expression IDENT >> (ERROR >>) (pointer_expression * IDENT))) )) (argument_list ( (binary_expression IDENT + LIT) ))) , (binary_expression IDENT + (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) )))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) })) }) 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) ))))) ;) (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 IDENT = IDENT) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (labeled_statement statement_identifier (ERROR : : (comma_expression (binary_expression IDENT < IDENT) , IDENT) :) : (expression_statement (binary_expression IDENT < (binary_expression IDENT >> (ERROR : :) (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( (ERROR (comma_expression (binary_expression IDENT < IDENT) , IDENT) : :) (binary_expression IDENT < (binary_expression IDENT >> (pointer_expression * IDENT))) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) , LIT ))))) ;)) (expression_statement (assignment_expression IDENT = (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 IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) * LIT) )))) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT / (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) | LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return ;) })) (labeled_statement statement_identifier (ERROR : : (binary_expression IDENT < IDENT) : : (binary_expression IDENT < IDENT) > : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) : : (binary_expression IDENT < IDENT) > : : (comma_expression IDENT , (binary_expression IDENT > (ERROR ,) IDENT)) : : (binary_expression IDENT < IDENT) : : (binary_expression IDENT < IDENT) : : (binary_expression IDENT < IDENT) > : : (comma_expression IDENT , (binary_expression IDENT >> (ERROR ,) IDENT)) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) > : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) > : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) :) : (labeled_statement statement_identifier : (ERROR :) (expression_statement (comma_expression (binary_expression IDENT < BOOL) , (comma_expression BOOL , (binary_expression BOOL >> (ERROR : :) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;))))))) (return_statement return ;) })))
(function_definition "void FUN_00228994(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  \n  piVar5 = *(int **)(param_1 + 0x1c);\n  piVar6 = *(int **)(param_1 + 0x20);\n  iVar1 = (int)piVar6 - (int)piVar5 >> 2;\n  if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0xc);\nLAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);\n  dVar10 = (double)(iVar1 + 1);\n  if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }\n  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);\n  if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00228994(uint param_1,uint param_2)" (identifier "FUN_00228994") (parameter_list "(uint param_1,uint param_2)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int in_t9;\n  double dVar9;\n  double dVar10;\n  \n  piVar5 = *(int **)(param_1 + 0x1c);\n  piVar6 = *(int **)(param_1 + 0x20);\n  iVar1 = (int)piVar6 - (int)piVar5 >> 2;\n  if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }\n  iVar1 = *(int *)(param_1 + 0xc);\nLAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);\n  dVar10 = (double)(iVar1 + 1);\n  if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }\n  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));\n  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);\n  if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }\n  if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }\n  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);\n  if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }\n  std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int in_t9;" (primitive_type "int") (identifier "in_t9") (; ";")) (declaration "double dVar9;" (primitive_type "double") (identifier "dVar9") (; ";")) (declaration "double dVar10;" (primitive_type "double") (identifier "dVar10") (; ";")) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x1c)" (identifier "piVar5") (= "=") (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 "piVar6 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar6 = *(int **)(param_1 + 0x20)" (identifier "piVar6") (= "=") (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 "iVar1 = (int)piVar6 - (int)piVar5 >> 2;" (assignment_expression "iVar1 = (int)piVar6 - (int)piVar5 >> 2" (identifier "iVar1") (= "=") (binary_expression "(int)piVar6 - (int)piVar5 >> 2" (binary_expression "(int)piVar6 - (int)piVar5" (cast_expression "(int)piVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar6")) (- "-") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if ((uint)(iVar1 * 0x55556000) < param_2) {\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }" (if "if") (parenthesized_expression "((uint)(iVar1 * 0x55556000) < param_2)" (( "(") (binary_expression "(uint)(iVar1 * 0x55556000) < param_2" (call_expression "(uint)(iVar1 * 0x55556000)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar1 * 0x55556000)" (( "(") (binary_expression "iVar1 * 0x55556000" (identifier "iVar1") (* "*") (number_literal "0x55556000")) () ")"))) (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    uVar3 = param_2 + 0x1fff >> 0xd;\n    if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }\n    if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }\n  }" ({ "{") (expression_statement "uVar3 = param_2 + 0x1fff >> 0xd;" (assignment_expression "uVar3 = param_2 + 0x1fff >> 0xd" (identifier "uVar3") (= "=") (binary_expression "param_2 + 0x1fff >> 0xd" (binary_expression "param_2 + 0x1fff" (identifier "param_2") (+ "+") (number_literal "0x1fff")) (>> ">>") (number_literal "0xd"))) (; ";")) (if_statement "if ((uint)(iVar1 * -0x55555555) < uVar3) {\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }\n    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" (if "if") (parenthesized_expression "((uint)(iVar1 * -0x55555555) < uVar3)" (( "(") (binary_expression "(uint)(iVar1 * -0x55555555) < uVar3" (call_expression "(uint)(iVar1 * -0x55555555)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar1 * -0x55555555)" (( "(") (binary_expression "iVar1 * -0x55555555" (identifier "iVar1") (* "*") (number_literal "-0x55555555")) () ")"))) (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      piVar6 = *(int **)(param_1 + 0x20);\n    }" ({ "{") (labeled_statement "std::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);" (statement_identifier "std") (ERROR "::\n      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std:" (: ":") (: ":") (binary_expression "vector<std" (identifier "vector") (< "<") (identifier "std")) (: ":") (: ":") (comma_expression "vector<int,std" (binary_expression "vector<int" (identifier "vector") (< "<") (identifier "int")) (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<int>>,std" (identifier "allocator") (< "<") (binary_expression "int>>,std" (identifier "int") (>> ">>") (ERROR "," (, ",")) (identifier "std"))) (: ":") (: ":") (binary_expression "allocator<std" (identifier "allocator") (< "<") (identifier "std")) (: ":") (: ":") (comma_expression "vector<int,std" (binary_expression "vector<int" (identifier "vector") (< "<") (identifier "int")) (, ",") (identifier "std")) (: ":")) (: ":") (expression_statement "allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);" (binary_expression "allocator<int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" (identifier "allocator") (< "<") (binary_expression "int>>>>\n      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" (identifier "int") (>> ">>") (ERROR ">>\n      ::" (>> ">>") (: ":") (: ":")) (call_expression "_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" (identifier "_M_default_append") (argument_list "((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555)" (( "(") (call_expression "(vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)(param_1 + 0x1c)" (parenthesized_expression "(vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>\n                           *)" (( "(") (ERROR "vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::" (comma_expression "vector<std::vector<int,std" (binary_expression "vector<std::vector<int" (binary_expression "vector<std" (identifier "vector") (< "<") (identifier "std")) (ERROR "::vector" (: ":") (: ":") (identifier "vector")) (< "<") (identifier "int")) (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<int>>,std" (identifier "allocator") (< "<") (binary_expression "int>>,std" (identifier "int") (>> ">>") (ERROR "," (, ",")) (identifier "std"))) (: ":") (: ":") (binary_expression "allocator<std" (identifier "allocator") (< "<") (identifier "std")) (: ":") (: ":") (comma_expression "vector<int,std" (binary_expression "vector<int" (identifier "vector") (< "<") (identifier "int")) (, ",") (identifier "std")) (: ":") (: ":")) (binary_expression "allocator<int>>>>\n                           *" (identifier "allocator") (< "<") (binary_expression "int>>>>\n                           *" (identifier "int") (>> ">>") (ERROR ">>" (>> ">>")) (pointer_expression "*" (* "*") (identifier "")))) () ")")) (argument_list "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))) (, ",") (binary_expression "uVar3 + iVar1 * 0x55555555" (identifier "uVar3") (+ "+") (binary_expression "iVar1 * 0x55555555" (identifier "iVar1") (* "*") (number_literal "0x55555555"))) () ")"))))) (; ";"))) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x1c)" (identifier "piVar5") (= "=") (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 "piVar6 = *(int **)(param_1 + 0x20);" (assignment_expression "piVar6 = *(int **)(param_1 + 0x20)" (identifier "piVar6") (= "=") (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")) () ")"))))) (; ";")) (} "}")) (else_clause "else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" (else "else") (if_statement "if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" (if "if") (parenthesized_expression "((uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8))" (( "(") (binary_expression "(uVar3 < (uint)(iVar1 * -0x55555555)) &&\n            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)" (parenthesized_expression "(uVar3 < (uint)(iVar1 * -0x55555555))" (( "(") (binary_expression "uVar3 < (uint)(iVar1 * -0x55555555)" (identifier "uVar3") (< "<") (call_expression "(uint)(iVar1 * -0x55555555)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar1 * -0x55555555)" (( "(") (binary_expression "iVar1 * -0x55555555" (identifier "iVar1") (* "*") (number_literal "-0x55555555")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)" (( "(") (comma_expression "piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8" (assignment_expression "piVar8 = piVar5 + uVar3 * 3" (identifier "piVar8") (= "=") (binary_expression "piVar5 + uVar3 * 3" (identifier "piVar5") (+ "+") (binary_expression "uVar3 * 3" (identifier "uVar3") (* "*") (number_literal "3")))) (, ",") (comma_expression "piVar7 = piVar8, piVar6 != piVar8" (assignment_expression "piVar7 = piVar8" (identifier "piVar7") (= "=") (identifier "piVar8")) (, ",") (binary_expression "piVar6 != piVar8" (identifier "piVar6") (!= "!=") (identifier "piVar8")))) () ")"))) () ")")) (compound_statement "{\n      do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);\n      piVar5 = *(int **)(param_1 + 0x1c);\n      *(int **)(param_1 + 0x20) = piVar8;\n      piVar6 = piVar8;\n    }" ({ "{") (do_statement "do {\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      } while (piVar6 != piVar7);" (do "do") (compound_statement "{\n        iVar1 = *piVar7;\n        piVar7 = piVar7 + 3;\n        if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }\n      }" ({ "{") (expression_statement "iVar1 = *piVar7;" (assignment_expression "iVar1 = *piVar7" (identifier "iVar1") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "piVar7 = piVar7 + 3;" (assignment_expression "piVar7 = piVar7 + 3" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 3" (identifier "piVar7") (+ "+") (number_literal "3"))) (; ";")) (if_statement "if (iVar1 != 0) {\n          (**(code **)(in_t9 + 0x2098f8))();\n        }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          (**(code **)(in_t9 + 0x2098f8))();\n        }" ({ "{") (expression_statement "(**(code **)(in_t9 + 0x2098f8))();" (call_expression "(**(code **)(in_t9 + 0x2098f8))()" (parenthesized_expression "(**(code **)(in_t9 + 0x2098f8))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x2098f8)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x2098f8)" (* "*") (cast_expression "(code **)(in_t9 + 0x2098f8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x2098f8)" (( "(") (binary_expression "in_t9 + 0x2098f8" (identifier "in_t9") (+ "+") (number_literal "0x2098f8")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(piVar6 != piVar7)" (( "(") (binary_expression "piVar6 != piVar7" (identifier "piVar6") (!= "!=") (identifier "piVar7")) () ")")) (; ";")) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x1c)" (identifier "piVar5") (= "=") (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 "*(int **)(param_1 + 0x20) = piVar8;" (assignment_expression "*(int **)(param_1 + 0x20) = piVar8" (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 "piVar8")) (; ";")) (expression_statement "piVar6 = piVar8;" (assignment_expression "piVar6 = piVar8" (identifier "piVar6") (= "=") (identifier "piVar8")) (; ";")) (} "}"))))) (if_statement "if (piVar5 != piVar6) {\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }" (if "if") (parenthesized_expression "(piVar5 != piVar6)" (( "(") (binary_expression "piVar5 != piVar6" (identifier "piVar5") (!= "!=") (identifier "piVar6")) () ")")) (compound_statement "{\n      iVar1 = 0;\n      uVar3 = 0;\n      do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));\n      iVar1 = *(int *)(param_1 + 0xc);\n      goto LAB_002289f8;\n    }" ({ "{") (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));" (do "do") (compound_statement "{\n        std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);\n        uVar3 = uVar3 + 1;\n        piVar5 = *(int **)(param_1 + 0x1c);\n        iVar1 = iVar1 + 0xc;\n      }" ({ "{") (labeled_statement "std::vector<int,std::allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);" (statement_identifier "std") (ERROR "::vector<int,std:" (: ":") (: ":") (comma_expression "vector<int,std" (binary_expression "vector<int" (identifier "vector") (< "<") (identifier "int")) (, ",") (identifier "std")) (: ":")) (: ":") (expression_statement "allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);" (binary_expression "allocator<int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" (identifier "allocator") (< "<") (binary_expression "int>>::reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" (identifier "int") (>> ">>") (ERROR "::" (: ":") (: ":")) (call_expression "reserve\n                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" (identifier "reserve") (argument_list "((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000)" (( "(") (call_expression "(vector<int,std::allocator<int>> *)((int)piVar5 + iVar1)" (parenthesized_expression "(vector<int,std::allocator<int>> *)" (( "(") (ERROR "vector<int,std::" (comma_expression "vector<int,std" (binary_expression "vector<int" (identifier "vector") (< "<") (identifier "int")) (, ",") (identifier "std")) (: ":") (: ":")) (binary_expression "allocator<int>> *" (identifier "allocator") (< "<") (binary_expression "int>> *" (identifier "int") (>> ">>") (pointer_expression "*" (* "*") (identifier "")))) () ")")) (argument_list "((int)piVar5 + iVar1)" (( "(") (binary_expression "(int)piVar5 + iVar1" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (+ "+") (identifier "iVar1")) () ")"))) (, ",") (number_literal "0x2000") () ")"))))) (; ";"))) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar5 = *(int **)(param_1 + 0x1c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x1c)" (identifier "piVar5") (= "=") (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 "iVar1 = iVar1 + 0xc;" (assignment_expression "iVar1 = iVar1 + 0xc" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555))" (( "(") (binary_expression "uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" (identifier "uVar3") (< "<") (call_expression "(uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555)" (( "(") (binary_expression "(*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(param_1 + 0x20) - (int)piVar5 >> 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x20) - (int)piVar5 >> 2" (binary_expression "*(int *)(param_1 + 0x20) - (int)piVar5" (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (- "-") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) () ")")))) () ")")) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xc)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (goto_statement "goto LAB_002289f8;" (goto "goto") (statement_identifier "LAB_002289f8") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar1 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xc)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (labeled_statement "LAB_002289f8:\n  uVar4 = *(undefined4 *)(param_1 + 0x14);" (statement_identifier "LAB_002289f8") (: ":") (expression_statement "uVar4 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "uVar4 = *(undefined4 *)(param_1 + 0x14)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";"))) (expression_statement "dVar10 = (double)(iVar1 + 1);" (assignment_expression "dVar10 = (double)(iVar1 + 1)" (identifier "dVar10") (= "=") (cast_expression "(double)(iVar1 + 1)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(iVar1 + 1)" (( "(") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (iVar1 + 1 < 0) {\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }" (if "if") (parenthesized_expression "(iVar1 + 1 < 0)" (( "(") (binary_expression "iVar1 + 1 < 0" (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);\n  }" ({ "{") (expression_statement "dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);" (assignment_expression "dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" (identifier "dVar10") (= "=") (binary_expression "dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" (identifier "dVar10") (+ "+") (pointer_expression "*(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" (* "*") (cast_expression "(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(in_t9 + 0x209a20) + -0x12c0)" (( "(") (binary_expression "*(int *)(in_t9 + 0x209a20) + -0x12c0" (pointer_expression "*(int *)(in_t9 + 0x209a20)" (* "*") (cast_expression "(int *)(in_t9 + 0x209a20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0x209a20)" (( "(") (binary_expression "in_t9 + 0x209a20" (identifier "in_t9") (+ "+") (number_literal "0x209a20")) () ")")))) (+ "+") (number_literal "-0x12c0")) () ")")))))) (; ";")) (} "}"))) (expression_statement "dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));" (assignment_expression "dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" (identifier "dVar10") (= "=") (cast_expression "(double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10))" (parenthesized_expression "(**(code **)(in_t9 + 0x20dc98))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x20dc98)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x20dc98)" (* "*") (cast_expression "(code **)(in_t9 + 0x20dc98)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x20dc98)" (( "(") (binary_expression "in_t9 + 0x20dc98" (identifier "in_t9") (+ "+") (number_literal "0x20dc98")) () ")"))))) () ")")) (argument_list "(dVar10 / (double)*(float *)(param_1 + 0x10))" (( "(") (binary_expression "dVar10 / (double)*(float *)(param_1 + 0x10)" (identifier "dVar10") (/ "/") (cast_expression "(double)*(float *)(param_1 + 0x10)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(param_1 + 0x10)" (* "*") (cast_expression "(float *)(param_1 + 0x10)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))))) () ")"))))) (; ";")) (expression_statement "dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);" (assignment_expression "dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" (identifier "dVar9") (= "=") (pointer_expression "*(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" (* "*") (cast_expression "(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(in_t9 + 0x209a20) + -0x12b8)" (( "(") (binary_expression "*(int *)(in_t9 + 0x209a20) + -0x12b8" (pointer_expression "*(int *)(in_t9 + 0x209a20)" (* "*") (cast_expression "(int *)(in_t9 + 0x209a20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_t9 + 0x209a20)" (( "(") (binary_expression "in_t9 + 0x209a20" (identifier "in_t9") (+ "+") (number_literal "0x209a20")) () ")")))) (+ "+") (number_literal "-0x12b8")) () ")"))))) (; ";")) (if_statement "if (dVar10 < dVar9) {\n    uVar3 = (uint)dVar10;\n  }\n  else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" (if "if") (parenthesized_expression "(dVar10 < dVar9)" (( "(") (binary_expression "dVar10 < dVar9" (identifier "dVar10") (< "<") (identifier "dVar9")) () ")")) (compound_statement "{\n    uVar3 = (uint)dVar10;\n  }" ({ "{") (expression_statement "uVar3 = (uint)dVar10;" (assignment_expression "uVar3 = (uint)dVar10" (identifier "uVar3") (= "=") (cast_expression "(uint)dVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "dVar10"))) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" (else "else") (compound_statement "{\n    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;\n  }" ({ "{") (expression_statement "uVar3 = (int)(dVar10 - dVar9) | 0x80000000;" (assignment_expression "uVar3 = (int)(dVar10 - dVar9) | 0x80000000" (identifier "uVar3") (= "=") (binary_expression "(int)(dVar10 - dVar9) | 0x80000000" (cast_expression "(int)(dVar10 - dVar9)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(dVar10 - dVar9)" (( "(") (binary_expression "dVar10 - dVar9" (identifier "dVar10") (- "-") (identifier "dVar9")) () ")"))) (| "|") (number_literal "0x80000000"))) (; ";")) (} "}")))) (if_statement "if (uVar3 <= param_2 + iVar1) {\n    uVar3 = param_2 + iVar1;\n  }" (if "if") (parenthesized_expression "(uVar3 <= param_2 + iVar1)" (( "(") (binary_expression "uVar3 <= param_2 + iVar1" (identifier "uVar3") (<= "<=") (binary_expression "param_2 + iVar1" (identifier "param_2") (+ "+") (identifier "iVar1"))) () ")")) (compound_statement "{\n    uVar3 = param_2 + iVar1;\n  }" ({ "{") (expression_statement "uVar3 = param_2 + iVar1;" (assignment_expression "uVar3 = param_2 + iVar1" (identifier "uVar3") (= "=") (binary_expression "param_2 + iVar1" (identifier "param_2") (+ "+") (identifier "iVar1"))) (; ";")) (} "}"))) (expression_statement "puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);" (assignment_expression "puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" (identifier "puVar2") (= "=") (cast_expression "(uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3)" (parenthesized_expression "(**(code **)(in_t9 + 0x20a664))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x20a664)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x20a664)" (* "*") (cast_expression "(code **)(in_t9 + 0x20a664)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x20a664)" (( "(") (binary_expression "in_t9 + 0x20a664" (identifier "in_t9") (+ "+") (number_literal "0x20a664")) () ")"))))) () ")")) (argument_list "(param_1 + 0x10,uVar3)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (identifier "uVar3") () ")"))))) (; ";")) (if_statement "if (puVar2 == *(uint **)(param_1 + 4)) {\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }" (if "if") (parenthesized_expression "(puVar2 == *(uint **)(param_1 + 4))" (( "(") (binary_expression "puVar2 == *(uint **)(param_1 + 4)" (identifier "puVar2") (== "==") (pointer_expression "*(uint **)(param_1 + 4)" (* "*") (cast_expression "(uint **)(param_1 + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x14) = uVar4;\n    return;\n  }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x14) = uVar4;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = uVar4" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "std::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);" (statement_identifier "std") (ERROR "::\n  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std:" (: ":") (: ":") (binary_expression "_Hashtable<gold" (identifier "_Hashtable") (< "<") (identifier "gold")) (: ":") (: ":") (binary_expression "Stringpool_template<unsigned_int" (identifier "Stringpool_template") (< "<") (identifier "unsigned_int")) (> ">") (: ":") (: ":") (comma_expression "Hashkey,std" (identifier "Hashkey") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "pair<gold" (identifier "pair") (< "<") (identifier "gold")) (: ":") (: ":") (binary_expression "Stringpool_template<unsigned_int" (identifier "Stringpool_template") (< "<") (identifier "unsigned_int")) (> ">") (: ":") (: ":") (comma_expression "Hashkey_const,unsigned_int>,std" (identifier "Hashkey_const") (, ",") (binary_expression "unsigned_int>,std" (identifier "unsigned_int") (> ">") (ERROR "," (, ",")) (identifier "std"))) (: ":") (: ":") (binary_expression "allocator<std" (identifier "allocator") (< "<") (identifier "std")) (: ":") (: ":") (binary_expression "pair<gold" (identifier "pair") (< "<") (identifier "gold")) (: ":") (: ":") (binary_expression "Stringpool_template<unsigned_int" (identifier "Stringpool_template") (< "<") (identifier "unsigned_int")) (> ">") (: ":") (: ":") (comma_expression "Hashkey_const,unsigned_int>>,std" (identifier "Hashkey_const") (, ",") (binary_expression "unsigned_int>>,std" (identifier "unsigned_int") (>> ">>") (ERROR "," (, ",")) (identifier "std"))) (: ":")) (: ":") (labeled_statement "__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::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  ::_M_rehash(param_1,puVar2);" (statement_identifier "__detail") (ERROR "::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::Stringpool_hash,std:" (: ":") (: ":") (comma_expression "_Select1st,gold" (identifier "_Select1st") (, ",") (identifier "gold")) (: ":") (: ":") (binary_expression "Stringpool_template<unsigned_int" (identifier "Stringpool_template") (< "<") (identifier "unsigned_int")) (> ">") (: ":") (: ":") (comma_expression "Stringpool_eq,gold" (identifier "Stringpool_eq") (, ",") (identifier "gold")) (: ":") (: ":") (binary_expression "Stringpool_template<unsigned_int" (identifier "Stringpool_template") (< "<") (identifier "unsigned_int")) (> ">") (: ":") (: ":") (comma_expression "Stringpool_hash,std" (identifier "Stringpool_hash") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" (statement_identifier "__detail") (ERROR "::_Mod_range_hashing,std:" (: ":") (: ":") (comma_expression "_Mod_range_hashing,std" (identifier "_Mod_range_hashing") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" (statement_identifier "__detail") (ERROR "::_Default_ranged_hash,std:" (: ":") (: ":") (comma_expression "_Default_ranged_hash,std" (identifier "_Default_ranged_hash") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" (statement_identifier "__detail") (ERROR "::_Prime_rehash_policy,std:" (: ":") (: ":") (comma_expression "_Prime_rehash_policy,std" (identifier "_Prime_rehash_policy") (, ",") (identifier "std")) (: ":")) (: ":") (labeled_statement "__detail::_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" (statement_identifier "__detail") (: ":") (ERROR ":" (: ":")) (expression_statement "_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2);" (comma_expression "_Hashtable_traits<true,false,true>>\n  ::_M_rehash(param_1,puVar2)" (binary_expression "_Hashtable_traits<true" (identifier "_Hashtable_traits") (< "<") (true "true")) (, ",") (comma_expression "false,true>>\n  ::_M_rehash(param_1,puVar2)" (false "false") (, ",") (binary_expression "true>>\n  ::_M_rehash(param_1,puVar2)" (true "true") (>> ">>") (ERROR "::" (: ":") (: ":")) (call_expression "_M_rehash(param_1,puVar2)" (identifier "_M_rehash") (argument_list "(param_1,puVar2)" (( "(") (identifier "param_1") (, ",") (identifier "puVar2") () ")")))))) (; ";")))))))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void reserve(Stringpool_template<unsigned_int> * this, uint n) */

void __thiscall
gold::type_1<unsigned_int>::function_1(type_1<unsigned_int> *this,type_2 var_5)

{
  _Vector_base<var_2,_std::var_1<var_2>var_3> *p_Var1;
  int var_4;
  type_3 var_17;
  type_2 var_6;
  type_4 var_8;
  type_4 var_9;
  type_3 var_14;
  type_4 var_11;
  type_4 var_10;
  int var_12;
  double var_16;
  double var_15;
  size_t local_28 [3];
  
  var_8 = (this->key_to_offset_).chunks_.
           super__Vector_base<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
           ._M_impl._M_start;
  var_9 = (this->key_to_offset_).chunks_.
           super__Vector_base<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
           ._M_impl._M_finish;
  var_4 = (int)var_9 - (int)var_8 >> 2;
  if ((type_2)(var_4 * 0x55556000) < var_5) {
    var_6 = var_5 + 0x1fff >> 0xd;
    if ((type_2)(var_4 * -0x55555555) < var_6) {
      std::
      vector<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
      ::var_7(&(this->key_to_offset_).chunks_,var_6 + var_4 * 0x55555555);
      var_8 = (this->key_to_offset_).chunks_.
               super__Vector_base<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
               ._M_impl._M_start;
      var_9 = (this->key_to_offset_).chunks_.
               super__Vector_base<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
               ._M_impl._M_finish;
    }
    else if ((var_6 < (type_2)(var_4 * -0x55555555)) &&
            (var_10 = var_8 + var_6, var_11 = var_10, var_9 != var_10)) {
      do {
        p_Var1 = &var_11->super__Vector_base<var_2,_std::var_1<var_2>var_3>;
        var_11 = var_11 + 1;
        if ((p_Var1->_M_impl)._M_start != (type_4)0x0) {
          (**(type_5 **)(var_12 + 0x2098f8))();
        }
      } while (var_9 != var_11);
      var_8 = (this->key_to_offset_).chunks_.
               super__Vector_base<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
               ._M_impl._M_start;
      (this->key_to_offset_).chunks_.
      super__Vector_base<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
      ._M_impl._M_finish = var_10;
      var_9 = var_10;
    }
    if (var_8 != var_9) {
      var_4 = 0;
      var_6 = 0;
      do {
        std::vector<var_2,_std::var_1<var_2>var_3>::function_1
                  ((vector<var_2,_std::var_1<var_2>var_3> *)
                   ((int)&(var_8->super__Vector_base<var_2,_std::var_1<var_2>var_3>var_13)._M_impl._M_start +
                   var_4),0x2000);
        var_6 = var_6 + 1;
        var_8 = (this->key_to_offset_).chunks_.
                 super__Vector_base<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
                 ._M_impl._M_start;
        var_4 = var_4 + 0xc;
      } while (var_6 < (type_2)(((int)(this->key_to_offset_).chunks_.
                                    super__Vector_base<std::vector<var_2,_std::var_1<var_2>var_3>,_std::var_1<std::vector<var_2,_std::var_1<var_2>var_3>var_3>var_3>
                                    ._M_impl._M_finish - (int)var_8 >> 2) * -0x55555555));
      var_14 = (this->string_set_)._M_h._M_element_count;
      goto LAB_002289f8;
    }
  }
  var_14 = (this->string_set_)._M_h._M_element_count;
LAB_002289f8:
  local_28[0] = (this->string_set_)._M_h._M_rehash_policy._M_next_resize;
  var_15 = (double)(int)(var_14 + 1);
  if ((int)(var_14 + 1) < 0) {
    var_15 = var_15 + *(double *)(*(int *)(var_12 + 0x209a20) + -0x12c0);
  }
  var_15 = (double)(**(type_5 **)(var_12 + 0x20dc98))
                             (var_15 / (double)(this->string_set_)._M_h._M_rehash_policy.
                                               _M_max_load_factor);
  var_16 = *(double *)(*(int *)(var_12 + 0x209a20) + -0x12b8);
  if (var_15 < var_16) {
    var_6 = (type_2)var_15;
  }
  else {
    var_6 = (int)(var_15 - var_16) | 0x80000000;
  }
  if (var_6 <= var_5 + var_14) {
    var_6 = var_5 + var_14;
  }
  var_17 = (**(type_5 **)(var_12 + 0x20a664))(&(this->string_set_)._M_h._M_rehash_policy,var_6);
  if (var_17 == (this->string_set_)._M_h._M_bucket_count) {
    (this->string_set_)._M_h._M_rehash_policy._M_next_resize = local_28[0];
    return;
  }
  std::
  _Hashtable<gold::type_1<unsigned_int>::Hashkey,_std::pair<const_gold::type_1<unsigned_int>::Hashkey,_unsigned_int>,_std::var_1<std::pair<const_gold::type_1<unsigned_int>::Hashkey,_unsigned_int>var_3>,_std::__detail::_Select1st,_gold::type_1<unsigned_int>::Stringpool_eq,_gold::type_1<unsigned_int>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_18<true,_false,var_19>var_3>
  ::var_20((_Hashtable<gold::type_1<unsigned_int>::Hashkey,_std::pair<const_gold::type_1<unsigned_int>::Hashkey,_unsigned_int>,_std::var_1<std::pair<const_gold::type_1<unsigned_int>::Hashkey,_unsigned_int>var_3>,_std::__detail::_Select1st,_gold::type_1<unsigned_int>::Stringpool_eq,_gold::type_1<unsigned_int>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_18<true,_false,var_19>var_3>
               *)this,var_17,local_28);
  return;
}


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

void MASKED(uint param_1,uint param_2)

{
  int iVar1;
  uint *puVar2;
  uint uVar3;
  undefined4 uVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int in_t9;
  double dVar9;
  double dVar10;
  
  piVar5 = *(int **)(param_1 + 0x1c);
  piVar6 = *(int **)(param_1 + 0x20);
  iVar1 = (int)piVar6 - (int)piVar5 >> 2;
  if ((uint)(iVar1 * 0x55556000) < param_2) {
    uVar3 = param_2 + 0x1fff >> 0xd;
    if ((uint)(iVar1 * -0x55555555) < uVar3) {
      std::
      vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>
      ::_M_default_append((vector<std::vector<int,std::allocator<int>>,std::allocator<std::vector<int,std::allocator<int>>>>
                           *)(param_1 + 0x1c),uVar3 + iVar1 * 0x55555555);
      piVar5 = *(int **)(param_1 + 0x1c);
      piVar6 = *(int **)(param_1 + 0x20);
    }
    else if ((uVar3 < (uint)(iVar1 * -0x55555555)) &&
            (piVar8 = piVar5 + uVar3 * 3, piVar7 = piVar8, piVar6 != piVar8)) {
      do {
        iVar1 = *piVar7;
        piVar7 = piVar7 + 3;
        if (iVar1 != 0) {
          (**(code **)(in_t9 + 0x2098f8))();
        }
      } while (piVar6 != piVar7);
      piVar5 = *(int **)(param_1 + 0x1c);
      *(int **)(param_1 + 0x20) = piVar8;
      piVar6 = piVar8;
    }
    if (piVar5 != piVar6) {
      iVar1 = 0;
      uVar3 = 0;
      do {
        std::vector<int,std::allocator<int>>::reserve
                  ((vector<int,std::allocator<int>> *)((int)piVar5 + iVar1),0x2000);
        uVar3 = uVar3 + 1;
        piVar5 = *(int **)(param_1 + 0x1c);
        iVar1 = iVar1 + 0xc;
      } while (uVar3 < (uint)((*(int *)(param_1 + 0x20) - (int)piVar5 >> 2) * -0x55555555));
      iVar1 = *(int *)(param_1 + 0xc);
      goto LAB_002289f8;
    }
  }
  iVar1 = *(int *)(param_1 + 0xc);
LAB_002289f8:
  uVar4 = *(undefined4 *)(param_1 + 0x14);
  dVar10 = (double)(iVar1 + 1);
  if (iVar1 + 1 < 0) {
    dVar10 = dVar10 + *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12c0);
  }
  dVar10 = (double)(**(code **)(in_t9 + 0x20dc98))(dVar10 / (double)*(float *)(param_1 + 0x10));
  dVar9 = *(double *)(*(int *)(in_t9 + 0x209a20) + -0x12b8);
  if (dVar10 < dVar9) {
    uVar3 = (uint)dVar10;
  }
  else {
    uVar3 = (int)(dVar10 - dVar9) | 0x80000000;
  }
  if (uVar3 <= param_2 + iVar1) {
    uVar3 = param_2 + iVar1;
  }
  puVar2 = (uint *)(**(code **)(in_t9 + 0x20a664))(param_1 + 0x10,uVar3);
  if (puVar2 == *(uint **)(param_1 + 4)) {
    *(undefined4 *)(param_1 + 0x14) = uVar4;
    return;
  }
  std::
  _Hashtable<gold::Stringpool_template<unsigned_int>::Hashkey,std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>,std::allocator<std::pair<gold::Stringpool_template<unsigned_int>::Hashkey_const,unsigned_int>>,std::__detail::_Select1st,gold::Stringpool_template<unsigned_int>::Stringpool_eq,gold::Stringpool_template<unsigned_int>::Stringpool_hash,std::__detail::_Mod_range_hashing,std::__detail::_Default_ranged_hash,std::__detail::_Prime_rehash_policy,std::__detail::_Hashtable_traits<true,false,true>>
  ::_M_rehash(param_1,puVar2);
  return;
}

