
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void do_transitive_closure(Garbage_collection * this) */

void __thiscall gold::Garbage_collection::do_transitive_closure(Garbage_collection *this)

{
  size_type *psVar1;
  _Base_ptr *pp_Var2;
  int iVar3;
  Relobj *pRVar4;
  _Hash_node_base *p_Var5;
  __bucket_type *pp_Var6;
  _Base_ptr p_Var7;
  __node_base *p_Var8;
  __bucket_type *pp_Var9;
  uint uVar10;
  _Hash_node_base *p_Var11;
  _Rb_tree_header *p_Var12;
  _Base_ptr p_Var13;
  uint uVar14;
  int *piVar15;
  undefined1 *puVar16;
  pointer ppVar17;
  uint auStack_80 [6];
  size_type sStack_68;
  __hash_code a_Stack_64 [2];
  undefined1 auStack_5c [4];
  __bucket_type *local_58;
  _Rb_tree_header *local_54;
  _Hash_node_base *local_50;
  __node_base *local_4c;
  undefined **local_48;
  uint local_44;
  pointer local_40;
  pointer local_3c;
  Sections_reachable *local_38;
  char local_34 [4];
  uint local_30;
  Section_id entry;
  
  local_48 = &_GLOBAL_OFFSET_TABLE_;
  puVar16 = auStack_5c;
  local_3c = (this->work_list_).
             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
             ._M_impl._M_start;
  local_54 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;
  ppVar17 = (this->work_list_).
            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
            ._M_impl._M_finish;
  while (local_40 = ppVar17, local_3c != local_40) {
    while( true ) {
      pRVar4 = local_40[-1].first;
      local_4c = (__node_base *)local_40[-1].second;
      ppVar17 = local_40 + -1;
      (this->work_list_).
      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
      ._M_impl._M_finish = ppVar17;
      local_38 = &this->referenced_list_;
      local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);
      local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;
      *(pointer *)(puVar16 + -4) = local_40;
      *(Section_id **)(puVar16 + -8) = &entry;
      *(uint *)(puVar16 + -0xc) = local_44;
      *(Sections_reachable **)(puVar16 + -0x10) = local_38;
      *(undefined4 *)(puVar16 + -0x14) = 0x229b29;
      entry.first = pRVar4;
      entry.second = (uint)local_4c;
      p_Var8 = std::
               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
               ::_M_find_before_node
                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),
                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));
      if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;
      *(undefined4 *)(puVar16 + -0x10) = 0x10;
      *(undefined4 *)(puVar16 + -0x14) = 0x229b43;
      local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));
      local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;
      local_50->_M_nxt = (_Hash_node_base *)0x0;
      local_50[2]._M_nxt = local_4c;
      *(undefined4 *)(puVar16 + -0x10) = 1;
      *(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;
      *(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;
      *(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;
      *(char **)(puVar16 + -0x20) = local_34;
      *(undefined4 *)(puVar16 + -0x24) = 0x229b7b;
      std::__detail::_Prime_rehash_policy::_M_need_rehash
                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));
      local_3c = (pointer)local_30;
      if (local_34[0] == '\0') {
        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;
      }
      else {
        if (local_30 == 1) {
          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;
          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;
        }
        else {
          if (0x3fffffff < local_30) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */
            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;
            std::__throw_bad_alloc();
          }
          iVar3 = local_30 * 4;
          *(int *)(puVar16 + -0x14) = iVar3;
                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */
          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;
          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));
          *(int *)(puVar16 + -0xc) = iVar3;
          *(undefined4 *)(puVar16 + -0x10) = 0;
          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;
          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;
          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));
        }
        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;
        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;
        if (p_Var11 != (_Hash_node_base *)0x0) {
          local_4c = &(this->referenced_list_)._M_h._M_before_begin;
          local_44 = 0;
          do {
            while( true ) {
              p_Var5 = p_Var11->_M_nxt;
              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;
              pp_Var6 = pp_Var9 + uVar14;
              if (*pp_Var6 == (__bucket_type)0x0) break;
              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;
              (*pp_Var6)->_M_nxt = p_Var11;
              uVar14 = local_44;
LAB_00229c08:
              local_44 = uVar14;
              p_Var11 = p_Var5;
              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;
            }
            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;
            *pp_Var6 = local_4c;
            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;
            pp_Var9[local_44] = p_Var11;
            p_Var11 = p_Var5;
            local_44 = uVar14;
          } while (p_Var5 != (_Hash_node_base *)0x0);
        }
LAB_00229c50:
        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;
        if (pp_Var6 != local_58) {
          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;
          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;
          operator_delete(*(void **)(puVar16 + -0x14));
        }
        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;
        (this->referenced_list_)._M_h._M_buckets = pp_Var9;
        local_44 = (uint)local_40 % (uint)local_3c;
      }
      local_50[3]._M_nxt = (_Hash_node_base *)local_40;
      pp_Var6 = pp_Var9 + local_44;
      if (*pp_Var6 == (__bucket_type)0x0) {
        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;
        local_50->_M_nxt = p_Var11;
        if (p_Var11 != (_Hash_node_base *)0x0) {
          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =
               local_50;
        }
        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;
      }
      else {
        local_50->_M_nxt = (*pp_Var6)->_M_nxt;
        (*pp_Var6)->_M_nxt = local_50;
      }
      psVar1 = &(this->referenced_list_)._M_h._M_element_count;
      *psVar1 = *psVar1 + 1;
      p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
      local_40 = (this->work_list_).
                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
                 ._M_impl._M_finish;
      p_Var12 = local_54;
      if (p_Var7 != (_Base_ptr)0x0) {
        do {
          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||
                 (((Relobj *)p_Var13[1]._M_color == entry.first &&
                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {
            pp_Var2 = &p_Var13->_M_right;
            p_Var7 = *pp_Var2;
            p_Var13 = &p_Var12->_M_header;
            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;
          }
          p_Var7 = p_Var13->_M_left;
          p_Var12 = (_Rb_tree_header *)p_Var13;
        } while (p_Var13->_M_left != (_Base_ptr)0x0);
LAB_00229cf4:
        if (((local_54 != (_Rb_tree_header *)p_Var13) &&
            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&
           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||
            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {
          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);
joined_r0x00229d0d:
          if (piVar15 != (int *)0x0) {
            do {
              pRVar4 = (Relobj *)piVar15[1];
              uVar14 = piVar15[2];
              local_3c = (pointer)(piVar15 + 1);
              uVar10 = (uint)pRVar4 ^ uVar14;
              *(uint *)(puVar16 + -8) = uVar10;
              *(pointer *)(puVar16 + -0xc) = local_3c;
              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;
              *(Sections_reachable **)(puVar16 + -0x14) = local_38;
              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;
              p_Var8 = std::
                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                       ::_M_find_before_node
                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),
                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));
              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {
                if (local_40 !=
                    (this->work_list_).
                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;
                *(pointer *)(puVar16 + -0xc) = local_3c;
                *(pointer *)(puVar16 + -0x10) = local_40;
                *(Garbage_collection **)(puVar16 + -0x14) = this;
                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;
                std::
                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>
                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
                             **)(puVar16 + -0x14),
                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),
                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));
                local_40 = (this->work_list_).
                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
                           ._M_impl._M_finish;
              }
              piVar15 = (int *)*piVar15;
              if (piVar15 == (int *)0x0) break;
            } while( true );
          }
        }
      }
      local_3c = (this->work_list_).
                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
                 ._M_impl._M_start;
      puVar16 = puVar16 + -4;
      if (local_3c == local_40) goto LAB_00229d84;
    }
  }
LAB_00229d84:
  this->is_worklist_ready_ = true;
  return;
code_r0x00229d59:
  local_40->first = pRVar4;
  local_40->second = uVar14;
  (this->work_list_).
  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
  ._M_impl._M_finish = local_40 + 1;
  piVar15 = (int *)*piVar15;
  local_40 = local_40 + 1;
  goto joined_r0x00229d0d;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00229ab0(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  undefined4 *puVar5;
  uint uVar6;
  int *piVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  uint uVar10;
  undefined1 *puVar11;
  uint *puVar12;
  int aiStack_80 [9];
  undefined1 auStack_5c [4];
  undefined4 *local_58;
  undefined4 *local_54;
  int *local_50;
  undefined4 *local_4c;
  undefined **local_48;
  uint local_44;
  uint *local_40;
  uint *local_3c;
  undefined4 *local_38;
  char local_34 [4];
  uint local_30;
  uint local_24;
  undefined4 *local_20;
  
  local_48 = &__DT_PLTGOT;
  puVar11 = auStack_5c;
  local_3c = (uint *)*param_1;
  local_54 = param_1 + 5;
  puVar12 = (uint *)param_1[1];
  while (local_40 = puVar12, local_3c != local_40) {
    while( true ) {
      uVar10 = local_40[-2];
      local_4c = (undefined4 *)local_40[-1];
      puVar12 = local_40 + -2;
      param_1[1] = puVar12;
      local_38 = param_1 + 10;
      local_40 = (uint *)((uint)local_4c ^ uVar10);
      local_44 = (uint)local_40 % (uint)param_1[0xb];
      *(uint **)(puVar11 + -4) = local_40;
      *(uint **)(puVar11 + -8) = &local_24;
      *(uint *)(puVar11 + -0xc) = local_44;
      *(undefined4 **)(puVar11 + -0x10) = local_38;
      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;
      local_24 = uVar10;
      local_20 = local_4c;
      piVar4 = (int *)FUN_000a8950();
      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;
      *(undefined4 *)(puVar11 + -0x10) = 0x10;
      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;
      local_50 = (int *)FUN_00246670();
      local_50[1] = uVar10;
      *local_50 = 0;
      local_50[2] = (int)local_4c;
      *(undefined4 *)(puVar11 + -0x10) = 1;
      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];
      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];
      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;
      *(char **)(puVar11 + -0x20) = local_34;
      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;
      FUN_0028d8d0();
      local_3c = (uint *)local_30;
      if (local_34[0] == '\0') {
        puVar5 = (undefined4 *)param_1[10];
      }
      else {
        if (local_30 == 1) {
          puVar5 = param_1 + 0x10;
          param_1[0x10] = 0;
        }
        else {
          if (0x3fffffff < local_30) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */
            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;
            FUN_0028da60();
          }
          iVar2 = local_30 * 4;
          *(int *)(puVar11 + -0x14) = iVar2;
                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */
          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;
          puVar5 = (undefined4 *)FUN_00246670();
          *(int *)(puVar11 + -0xc) = iVar2;
          *(undefined4 *)(puVar11 + -0x10) = 0;
          *(undefined4 **)(puVar11 + -0x14) = puVar5;
          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;
          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));
        }
        local_58 = param_1 + 0x10;
        piVar4 = (int *)param_1[0xc];
        param_1[0xc] = 0;
        if (piVar4 != (int *)0x0) {
          local_4c = param_1 + 0xc;
          local_44 = 0;
          do {
            while( true ) {
              piVar7 = (int *)*piVar4;
              uVar10 = (uint)piVar4[3] % (uint)local_3c;
              puVar8 = puVar5 + uVar10;
              if ((int *)*puVar8 == (int *)0x0) break;
              *piVar4 = *(int *)*puVar8;
              *(int **)*puVar8 = piVar4;
              uVar10 = local_44;
LAB_00229c08:
              local_44 = uVar10;
              piVar4 = piVar7;
              if (piVar7 == (int *)0x0) goto LAB_00229c50;
            }
            *piVar4 = param_1[0xc];
            param_1[0xc] = piVar4;
            *puVar8 = local_4c;
            if (*piVar4 == 0) goto LAB_00229c08;
            puVar5[local_44] = piVar4;
            piVar4 = piVar7;
            local_44 = uVar10;
          } while (piVar7 != (int *)0x0);
        }
LAB_00229c50:
        if ((undefined4 *)param_1[10] != local_58) {
          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];
          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;
          FUN_00248220();
        }
        param_1[0xb] = local_3c;
        param_1[10] = puVar5;
        local_44 = (uint)local_40 % (uint)local_3c;
      }
      local_50[3] = (int)local_40;
      piVar4 = puVar5 + local_44;
      if ((int *)*piVar4 == (int *)0x0) {
        iVar2 = param_1[0xc];
        param_1[0xc] = local_50;
        *local_50 = iVar2;
        if (iVar2 != 0) {
          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;
        }
        *piVar4 = (int)(param_1 + 0xc);
      }
      else {
        *local_50 = *(int *)*piVar4;
        *(int **)*piVar4 = local_50;
      }
      param_1[0xd] = param_1[0xd] + 1;
      local_40 = (uint *)param_1[1];
      puVar5 = (undefined4 *)param_1[6];
      puVar8 = local_54;
      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {
        do {
          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||
                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {
            puVar1 = puVar9 + 3;
            puVar5 = (undefined4 *)*puVar1;
            puVar9 = puVar8;
            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;
          }
          puVar5 = (undefined4 *)puVar9[2];
          puVar8 = puVar9;
        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);
LAB_00229cf4:
        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&
           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {
          piVar4 = (int *)puVar9[8];
joined_r0x00229d0d:
          if (piVar4 != (int *)0x0) {
            do {
              uVar10 = piVar4[1];
              uVar3 = piVar4[2];
              local_3c = (uint *)(piVar4 + 1);
              uVar6 = uVar10 ^ uVar3;
              *(uint *)(puVar11 + -8) = uVar6;
              *(uint **)(puVar11 + -0xc) = local_3c;
              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];
              *(undefined4 **)(puVar11 + -0x14) = local_38;
              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;
              piVar7 = (int *)FUN_000a8950();
              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {
                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;
                *(uint **)(puVar11 + -0xc) = local_3c;
                *(uint **)(puVar11 + -0x10) = local_40;
                *(undefined4 **)(puVar11 + -0x14) = param_1;
                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;
                FUN_00229e20();
                local_40 = (uint *)param_1[1];
              }
              piVar4 = (int *)*piVar4;
              if (piVar4 == (int *)0x0) break;
            } while( true );
          }
        }
      }
      local_3c = (uint *)*param_1;
      puVar11 = puVar11 + -4;
      if (local_3c == local_40) goto LAB_00229d84;
    }
  }
LAB_00229d84:
  *(undefined1 *)(param_1 + 3) = 1;
  return;
code_r0x00229d59:
  *local_40 = uVar10;
  local_40[1] = uVar3;
  param_1[1] = local_40 + 2;
  piVar4 = (int *)*piVar4;
  local_40 = local_40 + 2;
  goto joined_r0x00229d0d;
}


CALL 0x000b4846
ADD EAX,0x1ea54b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV dword ptr [EBP + -0x44],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x38],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV ESI,dword ptr [EAX + 0x4]
ADD EAX,0x14
MOV dword ptr [EBP + -0x50],EAX
LEA ESI,[ESI]
CMP dword ptr [EBP + -0x38],ESI
JZ 0x00229d84
MOV EAX,dword ptr [ESI + -0x8]
MOV EDX,dword ptr [ESI + -0x4]
SUB ESI,0x8
MOV EBX,dword ptr [EBP + 0x8]
MOV EDI,EAX
MOV dword ptr [EBP + -0x20],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x1c],EDX
MOV dword ptr [EAX + 0x4],ESI
LEA ECX,[EAX + 0x28]
MOV EAX,EDX
MOV dword ptr [EBP + -0x48],EDX
XOR EAX,EDI
XOR EDX,EDX
MOV dword ptr [EBP + -0x3c],EAX
DIV dword ptr [EBX + 0x2c]
PUSH dword ptr [EBP + -0x3c]
MOV dword ptr [EBP + -0x34],ECX
LEA EAX,[EBP + -0x20]
PUSH EAX
PUSH EDX
PUSH ECX
MOV dword ptr [EBP + -0x40],EDX
CALL 0x000a8950
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00229b36
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x00229ae0
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x44]
PUSH 0x10
CALL 0x00246670
MOV EBX,dword ptr [EBP + -0x44]
MOV dword ptr [EAX + 0x4],EDI
MOV EDI,dword ptr [EBP + -0x48]
MOV dword ptr [EAX],0x0
MOV dword ptr [EAX + 0x8],EDI
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x4c],EAX
MOV EAX,dword ptr [EBP + 0x8]
LEA EDX,[EDI + 0x38]
MOV ESI,dword ptr [EAX + 0x3c]
LEA EAX,[EBP + -0x30]
MOV dword ptr [ESP],0x1
PUSH dword ptr [EDI + 0x34]
PUSH dword ptr [EDI + 0x2c]
PUSH EDX
PUSH EAX
CALL 0x0028d8d0
MOV EAX,dword ptr [EBP + -0x2c]
ADD ESP,0x1c
CMP byte ptr [EBP + -0x30],0x0
MOV dword ptr [EBP + -0x38],EAX
JZ 0x00229c88
CMP EAX,0x1
JZ 0x00229df2
CMP dword ptr [EBP + -0x38],0x3fffffff
JA 0x00229e07
MOV EAX,dword ptr [EBP + -0x38]
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x44]
LEA EDI,[EAX*0x4 + 0x0]
PUSH EDI
CALL 0x00246670
ADD ESP,0xc
MOV EBX,dword ptr [EBP + -0x44]
MOV ESI,EAX
PUSH EDI
PUSH 0x0
PUSH EAX
CALL 0x0002c8f0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
ADD EAX,0x40
MOV dword ptr [EBP + -0x54],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EAX + 0x30]
MOV dword ptr [EAX + 0x30],0x0
TEST ECX,ECX
JZ 0x00229c50
ADD EAX,0x30
MOV dword ptr [EBP + -0x40],0x0
MOV dword ptr [EBP + -0x48],EAX
JMP 0x00229c0e
MOV EAX,dword ptr [EAX]
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBX]
MOV dword ptr [EAX],ECX
MOV ECX,EDI
TEST EDI,EDI
JZ 0x00229c50
MOV EAX,dword ptr [ECX + 0xc]
XOR EDX,EDX
MOV EDI,dword ptr [ECX]
DIV dword ptr [EBP + -0x38]
LEA EBX,[ESI + EDX*0x4]
MOV EAX,dword ptr [EBX]
TEST EAX,EAX
JNZ 0x00229c00
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x30],ECX
MOV EAX,dword ptr [EBP + -0x48]
MOV dword ptr [EBX],EAX
MOV EBX,dword ptr [ECX]
TEST EBX,EBX
JZ 0x00229d98
MOV EAX,dword ptr [EBP + -0x40]
MOV dword ptr [EBP + -0x40],EDX
MOV dword ptr [ESI + EAX*0x4],ECX
MOV ECX,EDI
TEST EDI,EDI
JNZ 0x00229c0e
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x28]
CMP EAX,dword ptr [EBP + -0x54]
JZ 0x00229c6a
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x44]
PUSH EAX
CALL 0x00248220
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EBP + -0x38]
XOR EDX,EDX
MOV dword ptr [EAX + 0x2c],EDI
MOV dword ptr [EAX + 0x28],ESI
MOV EAX,dword ptr [EBP + -0x3c]
DIV EDI
MOV dword ptr [EBP + -0x40],EDX
JMP 0x00229c8e
MOV EAX,dword ptr [EBP + 0x8]
MOV ESI,dword ptr [EAX + 0x28]
MOV EAX,dword ptr [EBP + -0x3c]
MOV EDI,dword ptr [EBP + -0x4c]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [EBP + -0x40]
LEA ECX,[ESI + EAX*0x4]
MOV EAX,dword ptr [ECX]
TEST EAX,EAX
JZ 0x00229da0
MOV EAX,dword ptr [EAX]
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ECX]
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [EBP + 0x8]
MOV ESI,dword ptr [EBP + 0x8]
ADD dword ptr [EAX + 0x34],0x1
MOV EAX,dword ptr [EAX + 0x18]
MOV ESI,dword ptr [ESI + 0x4]
TEST EAX,EAX
JZ 0x00229d73
MOV EDX,dword ptr [EBP + -0x20]
MOV EBX,dword ptr [EBP + -0x1c]
MOV ECX,dword ptr [EBP + -0x50]
JMP 0x00229ce8
JNZ 0x00229cdf
CMP dword ptr [EAX + 0x14],EBX
JC 0x00229ced
MOV ECX,EAX
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00229cf4
CMP dword ptr [EAX + 0x10],EDX
JNC 0x00229cd8
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JNZ 0x00229ce8
MOV EAX,dword ptr [EBP + 0x8]
CMP dword ptr [EBP + -0x50],ECX
JZ 0x00229d76
CMP EDX,dword ptr [ECX + 0x10]
JC 0x00229d73
JNZ 0x00229d08
CMP EBX,dword ptr [ECX + 0x14]
JC 0x00229d73
MOV EBX,dword ptr [ECX + 0x20]
TEST EBX,EBX
JZ 0x00229d73
MOV dword ptr [EBP + -0x3c],ESI
JMP 0x00229d24
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00229d4e
MOV EBX,dword ptr [EBX]
TEST EBX,EBX
JZ 0x00229d70
MOV EDI,dword ptr [EBX + 0x4]
MOV ESI,dword ptr [EBX + 0x8]
LEA ECX,[EBX + 0x4]
XOR EDX,EDX
MOV dword ptr [EBP + -0x38],ECX
MOV EAX,EDI
XOR EAX,ESI
PUSH EAX
PUSH ECX
MOV ECX,dword ptr [EBP + 0x8]
DIV dword ptr [ECX + 0x2c]
PUSH EDX
PUSH dword ptr [EBP + -0x34]
CALL 0x000a8950
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00229d18
MOV EDX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EBP + -0x3c]
CMP EAX,dword ptr [EDX + 0x8]
JZ 0x00229dd0
MOV dword ptr [EAX],EDI
ADD EAX,0x8
MOV dword ptr [EAX + -0x4],ESI
MOV dword ptr [EDX + 0x4],EAX
MOV EBX,dword ptr [EBX]
MOV dword ptr [EBP + -0x3c],EAX
TEST EBX,EBX
JNZ 0x00229d24
LEA ESI,[ESI]
MOV ESI,dword ptr [EBP + -0x3c]
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x38],EAX
CMP dword ptr [EBP + -0x38],ESI
JNZ 0x00229ae9
MOV EAX,dword ptr [EBP + 0x8]
MOV byte ptr [EAX + 0xc],0x1
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EBP + -0x40],EDX
JMP 0x00229c08
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EBP + -0x4c]
MOV EDX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [EDX + 0x30],EDI
MOV dword ptr [EDI],EAX
TEST EAX,EAX
JZ 0x00229dc2
MOV EAX,dword ptr [EAX + 0xc]
MOV EBX,EDX
XOR EDX,EDX
DIV dword ptr [EBX + 0x2c]
MOV dword ptr [ESI + EDX*0x4],EDI
MOV EAX,dword ptr [EBP + 0x8]
ADD EAX,0x30
MOV dword ptr [ECX],EAX
JMP 0x00229caf
SUB ESP,0x4
PUSH dword ptr [EBP + -0x38]
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + 0x8]
CALL 0x00229e20
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [EBP + -0x3c],EAX
JMP 0x00229d1e
MOV EAX,dword ptr [EBP + 0x8]
LEA ESI,[EAX + 0x40]
MOV dword ptr [EAX + 0x40],0x0
MOV dword ptr [EBP + -0x54],ESI
JMP 0x00229bd7
MOV EBX,dword ptr [EBP + -0x44]
CALL 0x0028da60
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00229ab0(undefined4 *param_1)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined1 *puVar11;\n  uint *puVar12;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  undefined4 *local_58;\n  undefined4 *local_54;\n  int *local_50;\n  undefined4 *local_4c;\n  undefined **local_48;\n  uint local_44;\n  uint *local_40;\n  uint *local_3c;\n  undefined4 *local_38;\n  char local_34 [4];\n  uint local_30;\n  uint local_24;\n  undefined4 *local_20;\n  \n  local_48 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_3c = (uint *)*param_1;\n  local_54 = param_1 + 5;\n  puVar12 = (uint *)param_1[1];\n  while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x00229d59:\n  *local_40 = uVar10;\n  local_40[1] = uVar3;\n  param_1[1] = local_40 + 2;\n  piVar4 = (int *)*piVar4;\n  local_40 = local_40 + 2;\n  goto joined_r0x00229d0d;\n}\n\n" comment (function_definition "void FUN_00229ab0(undefined4 *param_1)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined1 *puVar11;\n  uint *puVar12;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  undefined4 *local_58;\n  undefined4 *local_54;\n  int *local_50;\n  undefined4 *local_4c;\n  undefined **local_48;\n  uint local_44;\n  uint *local_40;\n  uint *local_3c;\n  undefined4 *local_38;\n  char local_34 [4];\n  uint local_30;\n  uint local_24;\n  undefined4 *local_20;\n  \n  local_48 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_3c = (uint *)*param_1;\n  local_54 = param_1 + 5;\n  puVar12 = (uint *)param_1[1];\n  while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x00229d59:\n  *local_40 = uVar10;\n  local_40[1] = uVar3;\n  param_1[1] = local_40 + 2;\n  piVar4 = (int *)*piVar4;\n  local_40 = local_40 + 2;\n  goto joined_r0x00229d0d;\n}" primitive_type (function_declarator "FUN_00229ab0(undefined4 *param_1)" identifier (parameter_list "(undefined4 *param_1)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined1 *puVar11;\n  uint *puVar12;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  undefined4 *local_58;\n  undefined4 *local_54;\n  int *local_50;\n  undefined4 *local_4c;\n  undefined **local_48;\n  uint local_44;\n  uint *local_40;\n  uint *local_3c;\n  undefined4 *local_38;\n  char local_34 [4];\n  uint local_30;\n  uint local_24;\n  undefined4 *local_20;\n  \n  local_48 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_3c = (uint *)*param_1;\n  local_54 = param_1 + 5;\n  puVar12 = (uint *)param_1[1];\n  while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x00229d59:\n  *local_40 = uVar10;\n  local_40[1] = uVar3;\n  param_1[1] = local_40 + 2;\n  piVar4 = (int *)*piVar4;\n  local_40 = local_40 + 2;\n  goto joined_r0x00229d0d;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int aiStack_80 [9];" primitive_type (array_declarator "aiStack_80 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_5c [4];" type_identifier (array_declarator "auStack_5c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined4 *local_54;" type_identifier (pointer_declarator "*local_54" * identifier) ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined4 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined **local_48;" type_identifier (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier)) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "uint *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "undefined4 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "char local_34 [4];" primitive_type (array_declarator "local_34 [4]" identifier [ number_literal ]) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "local_48 = &__DT_PLTGOT;" (assignment_expression "local_48 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" identifier = identifier) ;) (expression_statement "local_3c = (uint *)*param_1;" (assignment_expression "local_3c = (uint *)*param_1" identifier = (cast_expression "(uint *)*param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_54 = param_1 + 5;" (assignment_expression "local_54 = param_1 + 5" identifier = (binary_expression "param_1 + 5" identifier + number_literal)) ;) (expression_statement "puVar12 = (uint *)param_1[1];" (assignment_expression "puVar12 = (uint *)param_1[1]" identifier = (cast_expression "(uint *)param_1[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (while_statement "while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }" while (parenthesized_expression "(local_40 = puVar12, local_3c != local_40)" ( (comma_expression "local_40 = puVar12, local_3c != local_40" (assignment_expression "local_40 = puVar12" identifier = identifier) , (binary_expression "local_3c != local_40" identifier != identifier)) )) (compound_statement "{\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }" { (while_statement "while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }" { (expression_statement "uVar10 = local_40[-2];" (assignment_expression "uVar10 = local_40[-2]" identifier = (subscript_expression "local_40[-2]" identifier [ number_literal ])) ;) (expression_statement "local_4c = (undefined4 *)local_40[-1];" (assignment_expression "local_4c = (undefined4 *)local_40[-1]" identifier = (cast_expression "(undefined4 *)local_40[-1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_40[-1]" identifier [ number_literal ]))) ;) (expression_statement "puVar12 = local_40 + -2;" (assignment_expression "puVar12 = local_40 + -2" identifier = (binary_expression "local_40 + -2" identifier + number_literal)) ;) (expression_statement "param_1[1] = puVar12;" (assignment_expression "param_1[1] = puVar12" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_38 = param_1 + 10;" (assignment_expression "local_38 = param_1 + 10" identifier = (binary_expression "param_1 + 10" identifier + number_literal)) ;) (expression_statement "local_40 = (uint *)((uint)local_4c ^ uVar10);" (assignment_expression "local_40 = (uint *)((uint)local_4c ^ uVar10)" identifier = (cast_expression "(uint *)((uint)local_4c ^ uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_4c ^ uVar10)" ( (binary_expression "(uint)local_4c ^ uVar10" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier) )))) ;) (expression_statement "local_44 = (uint)local_40 % (uint)param_1[0xb];" (assignment_expression "local_44 = (uint)local_40 % (uint)param_1[0xb]" identifier = (binary_expression "(uint)local_40 % (uint)param_1[0xb]" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) % (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ])))) ;) (expression_statement "*(uint **)(puVar11 + -4) = local_40;" (assignment_expression "*(uint **)(puVar11 + -4) = local_40" (pointer_expression "*(uint **)(puVar11 + -4)" * (cast_expression "(uint **)(puVar11 + -4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -4)" ( (binary_expression "puVar11 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar11 + -8) = &local_24;" (assignment_expression "*(uint **)(puVar11 + -8) = &local_24" (pointer_expression "*(uint **)(puVar11 + -8)" * (cast_expression "(uint **)(puVar11 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (pointer_expression "&local_24" & identifier)) ;) (expression_statement "*(uint *)(puVar11 + -0xc) = local_44;" (assignment_expression "*(uint *)(puVar11 + -0xc) = local_44" (pointer_expression "*(uint *)(puVar11 + -0xc)" * (cast_expression "(uint *)(puVar11 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = local_38;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = local_38" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" * (cast_expression "(undefined4 **)(puVar11 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x229b29;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x229b29" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_24 = uVar10;" (assignment_expression "local_24 = uVar10" identifier = identifier) ;) (expression_statement "local_20 = local_4c;" (assignment_expression "local_20 = local_4c" identifier = identifier) ;) (expression_statement "piVar4 = (int *)FUN_000a8950();" (assignment_expression "piVar4 = (int *)FUN_000a8950()" identifier = (cast_expression "(int *)FUN_000a8950()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000a8950()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;" if (parenthesized_expression "((piVar4 != (int *)0x0) && (*piVar4 != 0))" ( (binary_expression "(piVar4 != (int *)0x0) && (*piVar4 != 0)" (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar4 != 0)" ( (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" * identifier) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x10;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x10" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x229b43;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x229b43" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_50 = (int *)FUN_00246670();" (assignment_expression "local_50 = (int *)FUN_00246670()" identifier = (cast_expression "(int *)FUN_00246670()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_50[1] = uVar10;" (assignment_expression "local_50[1] = uVar10" (subscript_expression "local_50[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*local_50 = 0;" (assignment_expression "*local_50 = 0" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[2] = (int)local_4c;" (assignment_expression "local_50[2] = (int)local_4c" (subscript_expression "local_50[2]" identifier [ number_literal ]) = (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = param_1[0xd];" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = param_1[0xd]" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = param_1[0xb];" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = param_1[0xb]" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;" (assignment_expression "*(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe" (pointer_expression "*(undefined4 **)(puVar11 + -0x1c)" * (cast_expression "(undefined4 **)(puVar11 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x1c)" ( (binary_expression "puVar11 + -0x1c" identifier + number_literal) )))) = (binary_expression "param_1 + 0xe" identifier + number_literal)) ;) (expression_statement "*(char **)(puVar11 + -0x20) = local_34;" (assignment_expression "*(char **)(puVar11 + -0x20) = local_34" (pointer_expression "*(char **)(puVar11 + -0x20)" * (cast_expression "(char **)(puVar11 + -0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x20)" ( (binary_expression "puVar11 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x24) = 0x229b7b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x229b7b" (pointer_expression "*(undefined4 *)(puVar11 + -0x24)" * (cast_expression "(undefined4 *)(puVar11 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x24)" ( (binary_expression "puVar11 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0028d8d0();" (call_expression "FUN_0028d8d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_3c = (uint *)local_30;" (assignment_expression "local_3c = (uint *)local_30" identifier = (cast_expression "(uint *)local_30" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" if (parenthesized_expression "(local_34[0] == '\0')" ( (binary_expression "local_34[0] == '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        puVar5 = (undefined4 *)param_1[10];\n      }" { (expression_statement "puVar5 = (undefined4 *)param_1[10];" (assignment_expression "puVar5 = (undefined4 *)param_1[10]" identifier = (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" else (compound_statement "{\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" { (if_statement "if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" if (parenthesized_expression "(local_30 == 1)" ( (binary_expression "local_30 == 1" identifier == number_literal) )) (compound_statement "{\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }" { (expression_statement "puVar5 = param_1 + 0x10;" (assignment_expression "puVar5 = param_1 + 0x10" identifier = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" else (compound_statement "{\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" { (if_statement "if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }" if (parenthesized_expression "(0x3fffffff < local_30)" ( (binary_expression "0x3fffffff < local_30" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }" { comment comment (expression_statement "*(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;" (assignment_expression "*(undefined1 **)(puVar11 + -8) = &LAB_00229e0f" (pointer_expression "*(undefined1 **)(puVar11 + -8)" * (cast_expression "(undefined1 **)(puVar11 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (pointer_expression "&LAB_00229e0f" & identifier)) ;) (expression_statement "FUN_0028da60();" (call_expression "FUN_0028da60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar2 = local_30 * 4;" (assignment_expression "iVar2 = local_30 * 4" identifier = (binary_expression "local_30 * 4" identifier * number_literal)) ;) (expression_statement "*(int *)(puVar11 + -0x14) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0x14) = iVar2" (pointer_expression "*(int *)(puVar11 + -0x14)" * (cast_expression "(int *)(puVar11 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229bba;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229bba" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = (undefined4 *)FUN_00246670();" (assignment_expression "puVar5 = (undefined4 *)FUN_00246670()" identifier = (cast_expression "(undefined4 *)FUN_00246670()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(int *)(puVar11 + -0xc) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0xc) = iVar2" (pointer_expression "*(int *)(puVar11 + -0xc)" * (cast_expression "(int *)(puVar11 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = puVar5;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = puVar5" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" * (cast_expression "(undefined4 **)(puVar11 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229bcb;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229bcb" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));" (call_expression "memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc))" identifier (argument_list "(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc))" ( (pointer_expression "*(void **)(puVar11 + -0x14)" * (cast_expression "(void **)(puVar11 + -0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar11 + -0x10)" * (cast_expression "(int *)(puVar11 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar11 + -0xc)" * (cast_expression "(size_t *)(puVar11 + -0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) ))) ;) }))) (expression_statement "local_58 = param_1 + 0x10;" (assignment_expression "local_58 = param_1 + 0x10" identifier = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)param_1[0xc];" (assignment_expression "piVar4 = (int *)param_1[0xc]" identifier = (cast_expression "(int *)param_1[0xc]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }" { (expression_statement "local_4c = param_1 + 0xc;" (assignment_expression "local_4c = param_1 + 0xc" identifier = (binary_expression "param_1 + 0xc" identifier + number_literal)) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);" do (compound_statement "{\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          }" { (while_statement "while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }" { (expression_statement "piVar7 = (int *)*piVar4;" (assignment_expression "piVar7 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "uVar10 = (uint)piVar4[3] % (uint)local_3c;" (assignment_expression "uVar10 = (uint)piVar4[3] % (uint)local_3c" identifier = (binary_expression "(uint)piVar4[3] % (uint)local_3c" (cast_expression "(uint)piVar4[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar4[3]" identifier [ number_literal ])) % (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar8 = puVar5 + uVar10;" (assignment_expression "puVar8 = puVar5 + uVar10" identifier = (binary_expression "puVar5 + uVar10" identifier + identifier)) ;) (if_statement "if ((int *)*puVar8 == (int *)0x0) break;" if (parenthesized_expression "((int *)*puVar8 == (int *)0x0)" ( (binary_expression "(int *)*puVar8 == (int *)0x0" (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier)) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "*piVar4 = *(int *)*puVar8;" (assignment_expression "*piVar4 = *(int *)*puVar8" (pointer_expression "*piVar4" * identifier) = (pointer_expression "*(int *)*puVar8" * (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier)))) ;) (expression_statement "*(int **)*puVar8 = piVar4;" (assignment_expression "*(int **)*puVar8 = piVar4" (pointer_expression "*(int **)*puVar8" * (cast_expression "(int **)*puVar8" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*puVar8" * identifier))) = identifier) ;) (expression_statement "uVar10 = local_44;" (assignment_expression "uVar10 = local_44" identifier = identifier) ;) (labeled_statement "LAB_00229c08:\n              local_44 = uVar10;" statement_identifier : (expression_statement "local_44 = uVar10;" (assignment_expression "local_44 = uVar10" identifier = identifier) ;)) (expression_statement "piVar4 = piVar7;" (assignment_expression "piVar4 = piVar7" identifier = identifier) ;) (if_statement "if (piVar7 == (int *)0x0) goto LAB_00229c50;" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229c50;" goto statement_identifier ;)) })) (expression_statement "*piVar4 = param_1[0xc];" (assignment_expression "*piVar4 = param_1[0xc]" (pointer_expression "*piVar4" * identifier) = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = piVar4;" (assignment_expression "param_1[0xc] = piVar4" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar8 = local_4c;" (assignment_expression "*puVar8 = local_4c" (pointer_expression "*puVar8" * identifier) = identifier) ;) (if_statement "if (*piVar4 == 0) goto LAB_00229c08;" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (goto_statement "goto LAB_00229c08;" goto statement_identifier ;)) (expression_statement "puVar5[local_44] = piVar4;" (assignment_expression "puVar5[local_44] = piVar4" (subscript_expression "puVar5[local_44]" identifier [ identifier ]) = identifier) ;) (expression_statement "piVar4 = piVar7;" (assignment_expression "piVar4 = piVar7" identifier = identifier) ;) (expression_statement "local_44 = uVar10;" (assignment_expression "local_44 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" statement_identifier : (if_statement "if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" if (parenthesized_expression "((undefined4 *)param_1[10] != local_58)" ( (binary_expression "(undefined4 *)param_1[10] != local_58" (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) != identifier) )) (compound_statement "{\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" { (expression_statement "*(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10]" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" * (cast_expression "(undefined4 **)(puVar11 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229c67;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229c67" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00248220();" (call_expression "FUN_00248220()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "param_1[0xb] = local_3c;" (assignment_expression "param_1[0xb] = local_3c" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = puVar5;" (assignment_expression "param_1[10] = puVar5" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_44 = (uint)local_40 % (uint)local_3c;" (assignment_expression "local_44 = (uint)local_40 % (uint)local_3c" identifier = (binary_expression "(uint)local_40 % (uint)local_3c" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) % (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "local_50[3] = (int)local_40;" (assignment_expression "local_50[3] = (int)local_40" (subscript_expression "local_50[3]" identifier [ number_literal ]) = (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = puVar5 + local_44;" (assignment_expression "piVar4 = puVar5 + local_44" identifier = (binary_expression "puVar5 + local_44" identifier + identifier)) ;) (if_statement "if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" if (parenthesized_expression "((int *)*piVar4 == (int *)0x0)" ( (binary_expression "(int *)*piVar4 == (int *)0x0" (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier)) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }" { (expression_statement "iVar2 = param_1[0xc];" (assignment_expression "iVar2 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = local_50;" (assignment_expression "param_1[0xc] = local_50" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*local_50 = iVar2;" (assignment_expression "*local_50 = iVar2" (pointer_expression "*local_50" * identifier) = identifier) ;) (if_statement "if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }" { (expression_statement "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;" (assignment_expression "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50" (subscript_expression "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]]" identifier [ (binary_expression "*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]" (pointer_expression "*(uint *)(iVar2 + 0xc)" * (cast_expression "(uint *)(iVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) % (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ]) = identifier) ;) })) (expression_statement "*piVar4 = (int)(param_1 + 0xc);" (assignment_expression "*piVar4 = (int)(param_1 + 0xc)" (pointer_expression "*piVar4" * identifier) = (cast_expression "(int)(param_1 + 0xc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ;) }) (else_clause "else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" else (compound_statement "{\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" { (expression_statement "*local_50 = *(int *)*piVar4;" (assignment_expression "*local_50 = *(int *)*piVar4" (pointer_expression "*local_50" * identifier) = (pointer_expression "*(int *)*piVar4" * (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier)))) ;) (expression_statement "*(int **)*piVar4 = local_50;" (assignment_expression "*(int **)*piVar4 = local_50" (pointer_expression "*(int **)*piVar4" * (cast_expression "(int **)*piVar4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar4" * identifier))) = identifier) ;) }))) (expression_statement "param_1[0xd] = param_1[0xd] + 1;" (assignment_expression "param_1[0xd] = param_1[0xd] + 1" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "param_1[0xd] + 1" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_40 = (uint *)param_1[1];" (assignment_expression "local_40 = (uint *)param_1[1]" identifier = (cast_expression "(uint *)param_1[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = (undefined4 *)param_1[6];" (assignment_expression "puVar5 = (undefined4 *)param_1[6]" identifier = (cast_expression "(undefined4 *)param_1[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "puVar8 = local_54;" (assignment_expression "puVar8 = local_54" identifier = identifier) ;) (if_statement "if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" if (parenthesized_expression "((undefined4 *)param_1[6] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)param_1[6] != (undefined4 *)0x0" (cast_expression "(undefined4 *)param_1[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" { (do_statement "do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);" do (compound_statement "{\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        }" { (while_statement "while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }" while (parenthesized_expression "((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))))" ( (parenthesized_expression "(puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))" ( (comma_expression "puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" (assignment_expression "puVar9 = puVar5" identifier = identifier) , (binary_expression "(uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" (binary_expression "(uint)puVar9[4] < local_24" (cast_expression "(uint)puVar9[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar9[4]" identifier [ number_literal ])) < identifier) || (parenthesized_expression "((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" ( (parenthesized_expression "(puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))" ( (binary_expression "puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)" (binary_expression "puVar9[4] == local_24" (subscript_expression "puVar9[4]" identifier [ number_literal ]) == identifier) && (parenthesized_expression "((undefined4 *)puVar9[5] < local_20)" ( (binary_expression "(undefined4 *)puVar9[5] < local_20" (cast_expression "(undefined4 *)puVar9[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[5]" identifier [ number_literal ])) < identifier) ))) )) )))) )) )) (compound_statement "{\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }" { (expression_statement "puVar1 = puVar9 + 3;" (assignment_expression "puVar1 = puVar9 + 3" identifier = (binary_expression "puVar9 + 3" identifier + number_literal)) ;) (expression_statement "puVar5 = (undefined4 *)*puVar1;" (assignment_expression "puVar5 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (if_statement "if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;" if (parenthesized_expression "((undefined4 *)*puVar1 == (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)*puVar1 == (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229cf4;" goto statement_identifier ;)) })) (expression_statement "puVar5 = (undefined4 *)puVar9[2];" (assignment_expression "puVar5 = (undefined4 *)puVar9[2]" identifier = (cast_expression "(undefined4 *)puVar9[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "((undefined4 *)puVar9[2] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)puVar9[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar9[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" statement_identifier : (if_statement "if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" if (parenthesized_expression "(((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20))))" ( (binary_expression "((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))" (parenthesized_expression "((local_54 != puVar9) && ((uint)puVar9[4] <= local_24))" ( (binary_expression "(local_54 != puVar9) && ((uint)puVar9[4] <= local_24)" (parenthesized_expression "(local_54 != puVar9)" ( (binary_expression "local_54 != puVar9" identifier != identifier) )) && (parenthesized_expression "((uint)puVar9[4] <= local_24)" ( (binary_expression "(uint)puVar9[4] <= local_24" (cast_expression "(uint)puVar9[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar9[4]" identifier [ number_literal ])) <= identifier) ))) )) && (parenthesized_expression "((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))" ( (parenthesized_expression "(local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20))" ( (binary_expression "local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)" (binary_expression "local_24 != puVar9[4]" identifier != (subscript_expression "puVar9[4]" identifier [ number_literal ])) || (parenthesized_expression "((undefined4 *)puVar9[5] <= local_20)" ( (binary_expression "(undefined4 *)puVar9[5] <= local_20" (cast_expression "(undefined4 *)puVar9[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[5]" identifier [ number_literal ])) <= identifier) ))) )) ))) )) (compound_statement "{\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" { (expression_statement "piVar4 = (int *)puVar9[8];" (assignment_expression "piVar4 = (int *)puVar9[8]" identifier = (cast_expression "(int *)puVar9[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[8]" identifier [ number_literal ]))) ;) (labeled_statement "joined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" { (do_statement "do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );" do (compound_statement "{\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            }" { (expression_statement "uVar10 = piVar4[1];" (assignment_expression "uVar10 = piVar4[1]" identifier = (subscript_expression "piVar4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = piVar4[2];" (assignment_expression "uVar3 = piVar4[2]" identifier = (subscript_expression "piVar4[2]" identifier [ number_literal ])) ;) (expression_statement "local_3c = (uint *)(piVar4 + 1);" (assignment_expression "local_3c = (uint *)(piVar4 + 1)" identifier = (cast_expression "(uint *)(piVar4 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 1)" ( (binary_expression "piVar4 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar6 = uVar10 ^ uVar3;" (assignment_expression "uVar6 = uVar10 ^ uVar3" identifier = (binary_expression "uVar10 ^ uVar3" identifier ^ identifier)) ;) (expression_statement "*(uint *)(puVar11 + -8) = uVar6;" (assignment_expression "*(uint *)(puVar11 + -8) = uVar6" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar11 + -0xc) = local_3c;" (assignment_expression "*(uint **)(puVar11 + -0xc) = local_3c" (pointer_expression "*(uint **)(puVar11 + -0xc)" * (cast_expression "(uint **)(puVar11 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];" (assignment_expression "*(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb]" (pointer_expression "*(uint *)(puVar11 + -0x10)" * (cast_expression "(uint *)(puVar11 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (binary_expression "uVar6 % (uint)param_1[0xb]" identifier % (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ])))) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = local_38;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = local_38" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" * (cast_expression "(undefined4 **)(puVar11 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229d47;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229d47" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)FUN_000a8950();" (assignment_expression "piVar7 = (int *)FUN_000a8950()" identifier = (cast_expression "(int *)FUN_000a8950()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000a8950()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }" if (parenthesized_expression "((piVar7 == (int *)0x0) || (*piVar7 == 0))" ( (binary_expression "(piVar7 == (int *)0x0) || (*piVar7 == 0)" (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*piVar7 == 0)" ( (binary_expression "*piVar7 == 0" (pointer_expression "*piVar7" * identifier) == number_literal) ))) )) (compound_statement "{\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }" { (if_statement "if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;" if (parenthesized_expression "(local_40 != (uint *)param_1[2])" ( (binary_expression "local_40 != (uint *)param_1[2]" identifier != (cast_expression "(uint *)param_1[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (goto_statement "goto code_r0x00229d59;" goto statement_identifier ;)) (expression_statement "*(uint **)(puVar11 + -0xc) = local_3c;" (assignment_expression "*(uint **)(puVar11 + -0xc) = local_3c" (pointer_expression "*(uint **)(puVar11 + -0xc)" * (cast_expression "(uint **)(puVar11 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar11 + -0x10) = local_40;" (assignment_expression "*(uint **)(puVar11 + -0x10) = local_40" (pointer_expression "*(uint **)(puVar11 + -0x10)" * (cast_expression "(uint **)(puVar11 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = param_1;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = param_1" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" * (cast_expression "(undefined4 **)(puVar11 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229de1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229de1" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00229e20();" (call_expression "FUN_00229e20()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_40 = (uint *)param_1[1];" (assignment_expression "local_40 = (uint *)param_1[1]" identifier = (cast_expression "(uint *)param_1[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (if_statement "if (piVar4 == (int *)0x0) break;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) })) (expression_statement "local_3c = (uint *)*param_1;" (assignment_expression "local_3c = (uint *)*param_1" identifier = (cast_expression "(uint *)*param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar11 = puVar11 + -4;" (assignment_expression "puVar11 = puVar11 + -4" identifier = (binary_expression "puVar11 + -4" identifier + number_literal)) ;) (if_statement "if (local_3c == local_40) goto LAB_00229d84;" if (parenthesized_expression "(local_3c == local_40)" ( (binary_expression "local_3c == local_40" identifier == identifier) )) (goto_statement "goto LAB_00229d84;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;" statement_identifier : (expression_statement "*(undefined1 *)(param_1 + 3) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 3) = 1" (pointer_expression "*(undefined1 *)(param_1 + 3)" * (cast_expression "(undefined1 *)(param_1 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = number_literal) ;)) (return_statement "return;" return ;) (labeled_statement "code_r0x00229d59:\n  *local_40 = uVar10;" statement_identifier : (expression_statement "*local_40 = uVar10;" (assignment_expression "*local_40 = uVar10" (pointer_expression "*local_40" * identifier) = identifier) ;)) (expression_statement "local_40[1] = uVar3;" (assignment_expression "local_40[1] = uVar3" (subscript_expression "local_40[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = local_40 + 2;" (assignment_expression "param_1[1] = local_40 + 2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "local_40 + 2" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "local_40 = local_40 + 2;" (assignment_expression "local_40 = local_40 + 2" identifier = (binary_expression "local_40 + 2" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00229d0d;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void do_transitive_closure(Garbage_collection * this) */\n\nvoid __thiscall gold::Garbage_collection::do_transitive_closure(Garbage_collection *this)\n\n{\n  size_type *psVar1;\n  _Base_ptr *pp_Var2;\n  int iVar3;\n  Relobj *pRVar4;\n  _Hash_node_base *p_Var5;\n  __bucket_type *pp_Var6;\n  _Base_ptr p_Var7;\n  __node_base *p_Var8;\n  __bucket_type *pp_Var9;\n  uint uVar10;\n  _Hash_node_base *p_Var11;\n  _Rb_tree_header *p_Var12;\n  _Base_ptr p_Var13;\n  uint uVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  pointer ppVar17;\n  uint auStack_80 [6];\n  size_type sStack_68;\n  __hash_code a_Stack_64 [2];\n  undefined1 auStack_5c [4];\n  __bucket_type *local_58;\n  _Rb_tree_header *local_54;\n  _Hash_node_base *local_50;\n  __node_base *local_4c;\n  undefined **local_48;\n  uint local_44;\n  pointer local_40;\n  pointer local_3c;\n  Sections_reachable *local_38;\n  char local_34 [4];\n  uint local_30;\n  Section_id entry;\n  \n  local_48 = &_GLOBAL_OFFSET_TABLE_;\n  puVar16 = auStack_5c;\n  local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n             ._M_impl._M_start;\n  local_54 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n            ._M_impl._M_finish;\n  while (local_40 = ppVar17, local_3c != local_40) {\n    while( true ) {\n      pRVar4 = local_40[-1].first;\n      local_4c = (__node_base *)local_40[-1].second;\n      ppVar17 = local_40 + -1;\n      (this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17;\n      local_38 = &this->referenced_list_;\n      local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);\n      local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;\n      *(pointer *)(puVar16 + -4) = local_40;\n      *(Section_id **)(puVar16 + -8) = &entry;\n      *(uint *)(puVar16 + -0xc) = local_44;\n      *(Sections_reachable **)(puVar16 + -0x10) = local_38;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b29;\n      entry.first = pRVar4;\n      entry.second = (uint)local_4c;\n      p_Var8 = std::\n               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));\n      if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;\n      *(undefined4 *)(puVar16 + -0x10) = 0x10;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b43;\n      local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));\n      local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;\n      local_50->_M_nxt = (_Hash_node_base *)0x0;\n      local_50[2]._M_nxt = local_4c;\n      *(undefined4 *)(puVar16 + -0x10) = 1;\n      *(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;\n      *(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;\n      *(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;\n      *(char **)(puVar16 + -0x20) = local_34;\n      *(undefined4 *)(puVar16 + -0x24) = 0x229b7b;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));\n      local_3c = (pointer)local_30;\n      if (local_34[0] == '\0') {\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3]._M_nxt = (_Hash_node_base *)local_40;\n      pp_Var6 = pp_Var9 + local_44;\n      if (*pp_Var6 == (__bucket_type)0x0) {\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish;\n      p_Var12 = local_54;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start;\n      puVar16 = puVar16 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x00229d59:\n  local_40->first = pRVar4;\n  local_40->second = uVar14;\n  (this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n  ._M_impl._M_finish = local_40 + 1;\n  piVar15 = (int *)*piVar15;\n  local_40 = local_40 + 1;\n  goto joined_r0x00229d0d;\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Garbage_collection::do_transitive_closure(Garbage_collection *this)\n\n{\n  size_type *psVar1;\n  _Base_ptr *pp_Var2;\n  int iVar3;\n  Relobj *pRVar4;\n  _Hash_node_base *p_Var5;\n  __bucket_type *pp_Var6;\n  _Base_ptr p_Var7;\n  __node_base *p_Var8;\n  __bucket_type *pp_Var9;\n  uint uVar10;\n  _Hash_node_base *p_Var11;\n  _Rb_tree_header *p_Var12;\n  _Base_ptr p_Var13;\n  uint uVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  pointer ppVar17;\n  uint auStack_80 [6];\n  size_type sStack_68;\n  __hash_code a_Stack_64 [2];\n  undefined1 auStack_5c [4];\n  __bucket_type *local_58;\n  _Rb_tree_header *local_54;\n  _Hash_node_base *local_50;\n  __node_base *local_4c;\n  undefined **local_48;\n  uint local_44;\n  pointer local_40;\n  pointer local_3c;\n  Sections_reachable *local_38;\n  char local_34 [4];\n  uint local_30;\n  Section_id entry;\n  \n  local_48 = &_GLOBAL_OFFSET_TABLE_;\n  puVar16 = auStack_5c;\n  local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n             ._M_impl._M_start;\n  local_54 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n            ._M_impl._M_finish;\n  while (local_40 = ppVar17, local_3c != local_40) {\n    while( true ) {\n      pRVar4 = local_40[-1].first;\n      local_4c = (__node_base *)local_40[-1].second;\n      ppVar17 = local_40 + -1;\n      (this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17;\n      local_38 = &this->referenced_list_;\n      local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);\n      local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;\n      *(pointer *)(puVar16 + -4) = local_40;\n      *(Section_id **)(puVar16 + -8) = &entry;\n      *(uint *)(puVar16 + -0xc) = local_44;\n      *(Sections_reachable **)(puVar16 + -0x10) = local_38;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b29;\n      entry.first = pRVar4;\n      entry.second = (uint)local_4c;\n      p_Var8 = std::\n               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));\n      if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;\n      *(undefined4 *)(puVar16 + -0x10) = 0x10;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b43;\n      local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));\n      local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;\n      local_50->_M_nxt = (_Hash_node_base *)0x0;\n      local_50[2]._M_nxt = local_4c;\n      *(undefined4 *)(puVar16 + -0x10) = 1;\n      *(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;\n      *(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;\n      *(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;\n      *(char **)(puVar16 + -0x20) = local_34;\n      *(undefined4 *)(puVar16 + -0x24) = 0x229b7b;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));\n      local_3c = (pointer)local_30;\n      if (local_34[0] == '\0') {\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3]._M_nxt = (_Hash_node_base *)local_40;\n      pp_Var6 = pp_Var9 + local_44;\n      if (*pp_Var6 == (__bucket_type)0x0) {\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish;\n      p_Var12 = local_54;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start;\n      puVar16 = puVar16 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x00229d59:\n  local_40->first = pRVar4;\n  local_40->second = uVar14;\n  (this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n  ._M_impl._M_finish = local_40 + 1;\n  piVar15 = (int *)*piVar15;\n  local_40 = local_40 + 1;\n  goto joined_r0x00229d0d;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Garbage_collection::" identifier : : identifier : :) (function_declarator "do_transitive_closure(Garbage_collection *this)" identifier (parameter_list "(Garbage_collection *this)" ( (parameter_declaration "Garbage_collection *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  size_type *psVar1;\n  _Base_ptr *pp_Var2;\n  int iVar3;\n  Relobj *pRVar4;\n  _Hash_node_base *p_Var5;\n  __bucket_type *pp_Var6;\n  _Base_ptr p_Var7;\n  __node_base *p_Var8;\n  __bucket_type *pp_Var9;\n  uint uVar10;\n  _Hash_node_base *p_Var11;\n  _Rb_tree_header *p_Var12;\n  _Base_ptr p_Var13;\n  uint uVar14;\n  int *piVar15;\n  undefined1 *puVar16;\n  pointer ppVar17;\n  uint auStack_80 [6];\n  size_type sStack_68;\n  __hash_code a_Stack_64 [2];\n  undefined1 auStack_5c [4];\n  __bucket_type *local_58;\n  _Rb_tree_header *local_54;\n  _Hash_node_base *local_50;\n  __node_base *local_4c;\n  undefined **local_48;\n  uint local_44;\n  pointer local_40;\n  pointer local_3c;\n  Sections_reachable *local_38;\n  char local_34 [4];\n  uint local_30;\n  Section_id entry;\n  \n  local_48 = &_GLOBAL_OFFSET_TABLE_;\n  puVar16 = auStack_5c;\n  local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n             ._M_impl._M_start;\n  local_54 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n            ._M_impl._M_finish;\n  while (local_40 = ppVar17, local_3c != local_40) {\n    while( true ) {\n      pRVar4 = local_40[-1].first;\n      local_4c = (__node_base *)local_40[-1].second;\n      ppVar17 = local_40 + -1;\n      (this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17;\n      local_38 = &this->referenced_list_;\n      local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);\n      local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;\n      *(pointer *)(puVar16 + -4) = local_40;\n      *(Section_id **)(puVar16 + -8) = &entry;\n      *(uint *)(puVar16 + -0xc) = local_44;\n      *(Sections_reachable **)(puVar16 + -0x10) = local_38;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b29;\n      entry.first = pRVar4;\n      entry.second = (uint)local_4c;\n      p_Var8 = std::\n               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));\n      if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;\n      *(undefined4 *)(puVar16 + -0x10) = 0x10;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b43;\n      local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));\n      local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;\n      local_50->_M_nxt = (_Hash_node_base *)0x0;\n      local_50[2]._M_nxt = local_4c;\n      *(undefined4 *)(puVar16 + -0x10) = 1;\n      *(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;\n      *(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;\n      *(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;\n      *(char **)(puVar16 + -0x20) = local_34;\n      *(undefined4 *)(puVar16 + -0x24) = 0x229b7b;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));\n      local_3c = (pointer)local_30;\n      if (local_34[0] == '\0') {\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3]._M_nxt = (_Hash_node_base *)local_40;\n      pp_Var6 = pp_Var9 + local_44;\n      if (*pp_Var6 == (__bucket_type)0x0) {\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish;\n      p_Var12 = local_54;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start;\n      puVar16 = puVar16 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x00229d59:\n  local_40->first = pRVar4;\n  local_40->second = uVar14;\n  (this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n  ._M_impl._M_finish = local_40 + 1;\n  piVar15 = (int *)*piVar15;\n  local_40 = local_40 + 1;\n  goto joined_r0x00229d0d;\n}" { (declaration "size_type *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "_Base_ptr *pp_Var2;" type_identifier (pointer_declarator "*pp_Var2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Relobj *pRVar4;" type_identifier (pointer_declarator "*pRVar4" * identifier) ;) (declaration "_Hash_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "__bucket_type *pp_Var6;" type_identifier (pointer_declarator "*pp_Var6" * identifier) ;) (declaration "_Base_ptr p_Var7;" type_identifier identifier ;) (declaration "__node_base *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "__bucket_type *pp_Var9;" type_identifier (pointer_declarator "*pp_Var9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var11;" type_identifier (pointer_declarator "*p_Var11" * identifier) ;) (declaration "_Rb_tree_header *p_Var12;" type_identifier (pointer_declarator "*p_Var12" * identifier) ;) (declaration "_Base_ptr p_Var13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "pointer ppVar17;" type_identifier identifier ;) (declaration "uint auStack_80 [6];" type_identifier (array_declarator "auStack_80 [6]" identifier [ number_literal ]) ;) (declaration "size_type sStack_68;" type_identifier identifier ;) (declaration "__hash_code a_Stack_64 [2];" type_identifier (array_declarator "a_Stack_64 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_5c [4];" type_identifier (array_declarator "auStack_5c [4]" identifier [ number_literal ]) ;) (declaration "__bucket_type *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "_Rb_tree_header *local_54;" type_identifier (pointer_declarator "*local_54" * identifier) ;) (declaration "_Hash_node_base *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "__node_base *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined **local_48;" type_identifier (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier)) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "pointer local_40;" type_identifier identifier ;) (declaration "pointer local_3c;" type_identifier identifier ;) (declaration "Sections_reachable *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "char local_34 [4];" primitive_type (array_declarator "local_34 [4]" identifier [ number_literal ]) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "Section_id entry;" type_identifier identifier ;) (expression_statement "local_48 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "local_48 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "puVar16 = auStack_5c;" (assignment_expression "puVar16 = auStack_5c" identifier = identifier) ;) (expression_statement "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n             ._M_impl._M_start;" (field_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n             ._M_impl._M_start" (field_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n             ._M_impl" (binary_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_3c = (this->work_list_).\n             super__Vector_base<std::pair<gold" (assignment_expression "local_3c = (this->work_list_).\n             super__Vector_base<std" identifier = (binary_expression "(this->work_list_).\n             super__Vector_base<std" (field_expression "(this->work_list_).\n             super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "local_54 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "local_54 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->section_reloc_map_)._M_t._M_impl" (field_expression "(this->section_reloc_map_)._M_t" (parenthesized_expression "(this->section_reloc_map_)" ( (field_expression "this->section_reloc_map_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n            ._M_impl._M_finish;" (field_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n            ._M_impl._M_finish" (field_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n            ._M_impl" (binary_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std::pair<gold" (assignment_expression "ppVar17 = (this->work_list_).\n            super__Vector_base<std" identifier = (binary_expression "(this->work_list_).\n            super__Vector_base<std" (field_expression "(this->work_list_).\n            super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (while_statement "while (local_40 = ppVar17, local_3c != local_40) {\n    while( true ) {\n      pRVar4 = local_40[-1].first;\n      local_4c = (__node_base *)local_40[-1].second;\n      ppVar17 = local_40 + -1;\n      (this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17;\n      local_38 = &this->referenced_list_;\n      local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);\n      local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;\n      *(pointer *)(puVar16 + -4) = local_40;\n      *(Section_id **)(puVar16 + -8) = &entry;\n      *(uint *)(puVar16 + -0xc) = local_44;\n      *(Sections_reachable **)(puVar16 + -0x10) = local_38;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b29;\n      entry.first = pRVar4;\n      entry.second = (uint)local_4c;\n      p_Var8 = std::\n               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));\n      if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;\n      *(undefined4 *)(puVar16 + -0x10) = 0x10;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b43;\n      local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));\n      local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;\n      local_50->_M_nxt = (_Hash_node_base *)0x0;\n      local_50[2]._M_nxt = local_4c;\n      *(undefined4 *)(puVar16 + -0x10) = 1;\n      *(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;\n      *(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;\n      *(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;\n      *(char **)(puVar16 + -0x20) = local_34;\n      *(undefined4 *)(puVar16 + -0x24) = 0x229b7b;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));\n      local_3c = (pointer)local_30;\n      if (local_34[0] == '\0') {\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3]._M_nxt = (_Hash_node_base *)local_40;\n      pp_Var6 = pp_Var9 + local_44;\n      if (*pp_Var6 == (__bucket_type)0x0) {\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish;\n      p_Var12 = local_54;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start;\n      puVar16 = puVar16 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }" while (parenthesized_expression "(local_40 = ppVar17, local_3c != local_40)" ( (comma_expression "local_40 = ppVar17, local_3c != local_40" (assignment_expression "local_40 = ppVar17" identifier = identifier) , (binary_expression "local_3c != local_40" identifier != identifier)) )) (compound_statement "{\n    while( true ) {\n      pRVar4 = local_40[-1].first;\n      local_4c = (__node_base *)local_40[-1].second;\n      ppVar17 = local_40 + -1;\n      (this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17;\n      local_38 = &this->referenced_list_;\n      local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);\n      local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;\n      *(pointer *)(puVar16 + -4) = local_40;\n      *(Section_id **)(puVar16 + -8) = &entry;\n      *(uint *)(puVar16 + -0xc) = local_44;\n      *(Sections_reachable **)(puVar16 + -0x10) = local_38;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b29;\n      entry.first = pRVar4;\n      entry.second = (uint)local_4c;\n      p_Var8 = std::\n               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));\n      if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;\n      *(undefined4 *)(puVar16 + -0x10) = 0x10;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b43;\n      local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));\n      local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;\n      local_50->_M_nxt = (_Hash_node_base *)0x0;\n      local_50[2]._M_nxt = local_4c;\n      *(undefined4 *)(puVar16 + -0x10) = 1;\n      *(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;\n      *(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;\n      *(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;\n      *(char **)(puVar16 + -0x20) = local_34;\n      *(undefined4 *)(puVar16 + -0x24) = 0x229b7b;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));\n      local_3c = (pointer)local_30;\n      if (local_34[0] == '\0') {\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3]._M_nxt = (_Hash_node_base *)local_40;\n      pp_Var6 = pp_Var9 + local_44;\n      if (*pp_Var6 == (__bucket_type)0x0) {\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish;\n      p_Var12 = local_54;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start;\n      puVar16 = puVar16 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }" { (while_statement "while( true ) {\n      pRVar4 = local_40[-1].first;\n      local_4c = (__node_base *)local_40[-1].second;\n      ppVar17 = local_40 + -1;\n      (this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17;\n      local_38 = &this->referenced_list_;\n      local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);\n      local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;\n      *(pointer *)(puVar16 + -4) = local_40;\n      *(Section_id **)(puVar16 + -8) = &entry;\n      *(uint *)(puVar16 + -0xc) = local_44;\n      *(Sections_reachable **)(puVar16 + -0x10) = local_38;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b29;\n      entry.first = pRVar4;\n      entry.second = (uint)local_4c;\n      p_Var8 = std::\n               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));\n      if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;\n      *(undefined4 *)(puVar16 + -0x10) = 0x10;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b43;\n      local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));\n      local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;\n      local_50->_M_nxt = (_Hash_node_base *)0x0;\n      local_50[2]._M_nxt = local_4c;\n      *(undefined4 *)(puVar16 + -0x10) = 1;\n      *(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;\n      *(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;\n      *(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;\n      *(char **)(puVar16 + -0x20) = local_34;\n      *(undefined4 *)(puVar16 + -0x24) = 0x229b7b;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));\n      local_3c = (pointer)local_30;\n      if (local_34[0] == '\0') {\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3]._M_nxt = (_Hash_node_base *)local_40;\n      pp_Var6 = pp_Var9 + local_44;\n      if (*pp_Var6 == (__bucket_type)0x0) {\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish;\n      p_Var12 = local_54;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start;\n      puVar16 = puVar16 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pRVar4 = local_40[-1].first;\n      local_4c = (__node_base *)local_40[-1].second;\n      ppVar17 = local_40 + -1;\n      (this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17;\n      local_38 = &this->referenced_list_;\n      local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);\n      local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;\n      *(pointer *)(puVar16 + -4) = local_40;\n      *(Section_id **)(puVar16 + -8) = &entry;\n      *(uint *)(puVar16 + -0xc) = local_44;\n      *(Sections_reachable **)(puVar16 + -0x10) = local_38;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b29;\n      entry.first = pRVar4;\n      entry.second = (uint)local_4c;\n      p_Var8 = std::\n               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));\n      if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;\n      *(undefined4 *)(puVar16 + -0x10) = 0x10;\n      *(undefined4 *)(puVar16 + -0x14) = 0x229b43;\n      local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));\n      local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;\n      local_50->_M_nxt = (_Hash_node_base *)0x0;\n      local_50[2]._M_nxt = local_4c;\n      *(undefined4 *)(puVar16 + -0x10) = 1;\n      *(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;\n      *(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;\n      *(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;\n      *(char **)(puVar16 + -0x20) = local_34;\n      *(undefined4 *)(puVar16 + -0x24) = 0x229b7b;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));\n      local_3c = (pointer)local_30;\n      if (local_34[0] == '\0') {\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3]._M_nxt = (_Hash_node_base *)local_40;\n      pp_Var6 = pp_Var9 + local_44;\n      if (*pp_Var6 == (__bucket_type)0x0) {\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish;\n      p_Var12 = local_54;\n      if (p_Var7 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start;\n      puVar16 = puVar16 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }" { (expression_statement "pRVar4 = local_40[-1].first;" (assignment_expression "pRVar4 = local_40[-1].first" identifier = (field_expression "local_40[-1].first" (subscript_expression "local_40[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "local_4c = (__node_base *)local_40[-1].second;" (assignment_expression "local_4c = (__node_base *)local_40[-1].second" identifier = (cast_expression "(__node_base *)local_40[-1].second" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_40[-1].second" (subscript_expression "local_40[-1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "ppVar17 = local_40 + -1;" (assignment_expression "ppVar17 = local_40 + -1" identifier = (binary_expression "local_40 + -1" identifier + number_literal)) ;) (expression_statement "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17;" (assignment_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish = ppVar17" (field_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish" (field_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold" (binary_expression "(this->work_list_).\n      super__Vector_base<std" (field_expression "(this->work_list_).\n      super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "local_38 = &this->referenced_list_;" (assignment_expression "local_38 = &this->referenced_list_" identifier = (pointer_expression "&this->referenced_list_" & (field_expression "this->referenced_list_" identifier -> field_identifier))) ;) (expression_statement "local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4);" (assignment_expression "local_40 = (pointer)((uint)local_4c ^ (uint)pRVar4)" identifier = (call_expression "(pointer)((uint)local_4c ^ (uint)pRVar4)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((uint)local_4c ^ (uint)pRVar4)" ( (binary_expression "(uint)local_4c ^ (uint)pRVar4" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) ^ (cast_expression "(uint)pRVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) (expression_statement "local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count;" (assignment_expression "local_44 = (uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count" identifier = (binary_expression "(uint)local_40 % (this->referenced_list_)._M_h._M_bucket_count" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) % (field_expression "(this->referenced_list_)._M_h._M_bucket_count" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*(pointer *)(puVar16 + -4) = local_40;" (assignment_expression "*(pointer *)(puVar16 + -4) = local_40" (pointer_expression "*(pointer *)(puVar16 + -4)" * (cast_expression "(pointer *)(puVar16 + -4)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Section_id **)(puVar16 + -8) = &entry;" (assignment_expression "*(Section_id **)(puVar16 + -8) = &entry" (pointer_expression "*(Section_id **)(puVar16 + -8)" * (cast_expression "(Section_id **)(puVar16 + -8)" ( (type_descriptor "Section_id **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "&entry" & identifier)) ;) (expression_statement "*(uint *)(puVar16 + -0xc) = local_44;" (assignment_expression "*(uint *)(puVar16 + -0xc) = local_44" (pointer_expression "*(uint *)(puVar16 + -0xc)" * (cast_expression "(uint *)(puVar16 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Sections_reachable **)(puVar16 + -0x10) = local_38;" (assignment_expression "*(Sections_reachable **)(puVar16 + -0x10) = local_38" (pointer_expression "*(Sections_reachable **)(puVar16 + -0x10)" * (cast_expression "(Sections_reachable **)(puVar16 + -0x10)" ( (type_descriptor "Sections_reachable **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x229b29;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x229b29" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "entry.first = pRVar4;" (assignment_expression "entry.first = pRVar4" (field_expression "entry.first" identifier . field_identifier) = identifier) ;) (expression_statement "entry.second = (uint)local_4c;" (assignment_expression "entry.second = (uint)local_4c" (field_expression "entry.second" identifier . field_identifier) = (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (ERROR "p_Var8 = std::\n               _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::" (assignment_expression "p_Var8 = std" identifier = identifier) : : (binary_expression "_Hashtable<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_std" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_std" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>_>,_std" (binary_expression "Relobj*,_unsigned_int>_" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold" identifier (ERROR "::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>" : : (comma_expression "_Identity,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : identifier * , (binary_expression "_unsigned_int>_" identifier > identifier) >) , identifier) : : (comma_expression "Section_id_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,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));" 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,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));" 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,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4));" (comma_expression "_Hashtable_traits<true,_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4))" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4))" identifier , (binary_expression "_true>_>\n               ::_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4))" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "_M_find_before_node\n                         (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4))" identifier (argument_list "(*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10),*(size_type *)(puVar16 + -0xc),\n                          *(key_type **)(puVar16 + -8),*(__hash_code *)(puVar16 + -4))" ( (pointer_expression "*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10)" * (call_expression "(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)(puVar16 + -0x10)" (parenthesized_expression "(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                            **)" ( (ERROR "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "_Hashtable<std::pair<gold" (binary_expression "_Hashtable<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > (ERROR "," ,) identifier) (ERROR "::__detail::_Identity" : : identifier : : identifier) , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (type_descriptor "Relobj*" type_identifier (abstract_pointer_declarator "*" *)) , (binary_expression "_unsigned_int>_>,_gold" (binary_expression "_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Section_id_hash,_std" 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,_true,_true>_>\n                            **" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n                            **" identifier , (binary_expression "_true>_>\n                            **" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))))) )) (argument_list "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(size_type *)(puVar16 + -0xc)" * (cast_expression "(size_type *)(puVar16 + -0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(key_type **)(puVar16 + -8)" * (cast_expression "(key_type **)(puVar16 + -8)" ( (type_descriptor "key_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) , (pointer_expression "*(__hash_code *)(puVar16 + -4)" * (cast_expression "(__hash_code *)(puVar16 + -4)" ( (type_descriptor "__hash_code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -4)" ( (binary_expression "puVar16 + -4" identifier + number_literal) )))) )))))) ;))))) (if_statement "if ((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)) break;" if (parenthesized_expression "((p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0))" ( (binary_expression "(p_Var8 != (__node_base *)0x0) && (p_Var8->_M_nxt != (_Hash_node_base *)0x0)" (parenthesized_expression "(p_Var8 != (__node_base *)0x0)" ( (binary_expression "p_Var8 != (__node_base *)0x0" identifier != (cast_expression "(__node_base *)0x0" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(p_Var8->_M_nxt != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var8->_M_nxt != (_Hash_node_base *)0x0" (field_expression "p_Var8->_M_nxt" identifier -> field_identifier) != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = 0x10;" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = 0x10" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x229b43;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x229b43" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10));" (assignment_expression "local_50 = (_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10))" identifier = (cast_expression "(_Hash_node_base *)operator_new(*(uint *)(puVar16 + -0x10))" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(*(uint *)(puVar16 + -0x10))" identifier (argument_list "(*(uint *)(puVar16 + -0x10))" ( (pointer_expression "*(uint *)(puVar16 + -0x10)" * (cast_expression "(uint *)(puVar16 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) ))))) ;) (expression_statement "local_50[1]._M_nxt = (_Hash_node_base *)pRVar4;" (assignment_expression "local_50[1]._M_nxt = (_Hash_node_base *)pRVar4" (field_expression "local_50[1]._M_nxt" (subscript_expression "local_50[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Hash_node_base *)pRVar4" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_50->_M_nxt = (_Hash_node_base *)0x0;" (assignment_expression "local_50->_M_nxt = (_Hash_node_base *)0x0" (field_expression "local_50->_M_nxt" identifier -> field_identifier) = (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50[2]._M_nxt = local_4c;" (assignment_expression "local_50[2]._M_nxt = local_4c" (field_expression "local_50[2]._M_nxt" (subscript_expression "local_50[2]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count;" (assignment_expression "*(size_type *)(puVar16 + -0x14) = (this->referenced_list_)._M_h._M_element_count" (pointer_expression "*(size_type *)(puVar16 + -0x14)" * (cast_expression "(size_type *)(puVar16 + -0x14)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = (field_expression "(this->referenced_list_)._M_h._M_element_count" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "*(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;" (assignment_expression "*(size_type *)(puVar16 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count" (pointer_expression "*(size_type *)(puVar16 + -0x18)" * (cast_expression "(size_type *)(puVar16 + -0x18)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = (field_expression "(this->referenced_list_)._M_h._M_bucket_count" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "*(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;" (assignment_expression "*(_Prime_rehash_policy **)(puVar16 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy" (pointer_expression "*(_Prime_rehash_policy **)(puVar16 + -0x1c)" * (cast_expression "(_Prime_rehash_policy **)(puVar16 + -0x1c)" ( (type_descriptor "_Prime_rehash_policy **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) = (pointer_expression "&(this->referenced_list_)._M_h._M_rehash_policy" & (field_expression "(this->referenced_list_)._M_h._M_rehash_policy" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*(char **)(puVar16 + -0x20) = local_34;" (assignment_expression "*(char **)(puVar16 + -0x20) = local_34" (pointer_expression "*(char **)(puVar16 + -0x20)" * (cast_expression "(char **)(puVar16 + -0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x24) = 0x229b7b;" (assignment_expression "*(undefined4 *)(puVar16 + -0x24) = 0x229b7b" (pointer_expression "*(undefined4 *)(puVar16 + -0x24)" * (cast_expression "(undefined4 *)(puVar16 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x24)" ( (binary_expression "puVar16 + -0x24" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "std::__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "__detail::_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "_Prime_rehash_policy::_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));" statement_identifier : (ERROR ":" :) (expression_statement "_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18));" (call_expression "_M_need_rehash\n                (*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18))" identifier (argument_list "(*(uint *)(puVar16 + -0x20),*(uint *)(puVar16 + -0x1c),*(uint *)(puVar16 + -0x18))" ( (pointer_expression "*(uint *)(puVar16 + -0x20)" * (cast_expression "(uint *)(puVar16 + -0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x20)" ( (binary_expression "puVar16 + -0x20" identifier + number_literal) )))) , (pointer_expression "*(uint *)(puVar16 + -0x1c)" * (cast_expression "(uint *)(puVar16 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x1c)" ( (binary_expression "puVar16 + -0x1c" identifier + number_literal) )))) , (pointer_expression "*(uint *)(puVar16 + -0x18)" * (cast_expression "(uint *)(puVar16 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) ))) ;)))) (expression_statement "local_3c = (pointer)local_30;" (assignment_expression "local_3c = (pointer)local_30" identifier = (cast_expression "(pointer)local_30" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (local_34[0] == '\0') {\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" if (parenthesized_expression "(local_34[0] == '\0')" ( (binary_expression "local_34[0] == '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pp_Var9 = (this->referenced_list_)._M_h._M_buckets;\n      }" { (expression_statement "pp_Var9 = (this->referenced_list_)._M_h._M_buckets;" (assignment_expression "pp_Var9 = (this->referenced_list_)._M_h._M_buckets" identifier = (field_expression "(this->referenced_list_)._M_h._M_buckets" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" else (compound_statement "{\n        if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }\n        local_58 = &(this->referenced_list_)._M_h._M_single_bucket;\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }\nLAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;\n        (this->referenced_list_)._M_h._M_buckets = pp_Var9;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" { (if_statement "if (local_30 == 1) {\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }" if (parenthesized_expression "(local_30 == 1)" ( (binary_expression "local_30 == 1" identifier == number_literal) )) (compound_statement "{\n          pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }" { (expression_statement "pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket;" (assignment_expression "pp_Var9 = &(this->referenced_list_)._M_h._M_single_bucket" identifier = (pointer_expression "&(this->referenced_list_)._M_h._M_single_bucket" & (field_expression "(this->referenced_list_)._M_h._M_single_bucket" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "(this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;" (assignment_expression "(this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0" (field_expression "(this->referenced_list_)._M_h._M_single_bucket" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }" else (compound_statement "{\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }\n          iVar3 = local_30 * 4;\n          *(int *)(puVar16 + -0x14) = iVar3;\n                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bba;\n          pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));\n          *(int *)(puVar16 + -0xc) = iVar3;\n          *(undefined4 *)(puVar16 + -0x10) = 0;\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var9;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));\n        }" { (if_statement "if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }" if (parenthesized_expression "(0x3fffffff < local_30)" ( (binary_expression "0x3fffffff < local_30" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */\n            *(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;\n            std::__throw_bad_alloc();\n          }" { comment comment (expression_statement "*(undefined1 **)(puVar16 + -8) = &LAB_00229e0f;" (assignment_expression "*(undefined1 **)(puVar16 + -8) = &LAB_00229e0f" (pointer_expression "*(undefined1 **)(puVar16 + -8)" * (cast_expression "(undefined1 **)(puVar16 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = (pointer_expression "&LAB_00229e0f" & identifier)) ;) (labeled_statement "std::__throw_bad_alloc();" statement_identifier : (ERROR ":" :) (expression_statement "__throw_bad_alloc();" (call_expression "__throw_bad_alloc()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "iVar3 = local_30 * 4;" (assignment_expression "iVar3 = local_30 * 4" identifier = (binary_expression "local_30 * 4" identifier * number_literal)) ;) (expression_statement "*(int *)(puVar16 + -0x14) = iVar3;" (assignment_expression "*(int *)(puVar16 + -0x14) = iVar3" (pointer_expression "*(int *)(puVar16 + -0x14)" * (cast_expression "(int *)(puVar16 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x229bba;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x229bba" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14));" (assignment_expression "pp_Var9 = (__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14))" identifier = (cast_expression "(__bucket_type *)operator_new(*(uint *)(puVar16 + -0x14))" ( (type_descriptor "__bucket_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(*(uint *)(puVar16 + -0x14))" identifier (argument_list "(*(uint *)(puVar16 + -0x14))" ( (pointer_expression "*(uint *)(puVar16 + -0x14)" * (cast_expression "(uint *)(puVar16 + -0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) ))))) ;) (expression_statement "*(int *)(puVar16 + -0xc) = iVar3;" (assignment_expression "*(int *)(puVar16 + -0xc) = iVar3" (pointer_expression "*(int *)(puVar16 + -0xc)" * (cast_expression "(int *)(puVar16 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(__bucket_type **)(puVar16 + -0x14) = pp_Var9;" (assignment_expression "*(__bucket_type **)(puVar16 + -0x14) = pp_Var9" (pointer_expression "*(__bucket_type **)(puVar16 + -0x14)" * (cast_expression "(__bucket_type **)(puVar16 + -0x14)" ( (type_descriptor "__bucket_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x229bcb;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x229bcb" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc));" (call_expression "memset(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc))" identifier (argument_list "(*(void **)(puVar16 + -0x14),*(int *)(puVar16 + -0x10),*(size_t *)(puVar16 + -0xc))" ( (pointer_expression "*(void **)(puVar16 + -0x14)" * (cast_expression "(void **)(puVar16 + -0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar16 + -0x10)" * (cast_expression "(int *)(puVar16 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar16 + -0xc)" * (cast_expression "(size_t *)(puVar16 + -0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) ))) ;) }))) (expression_statement "local_58 = &(this->referenced_list_)._M_h._M_single_bucket;" (assignment_expression "local_58 = &(this->referenced_list_)._M_h._M_single_bucket" identifier = (pointer_expression "&(this->referenced_list_)._M_h._M_single_bucket" & (field_expression "(this->referenced_list_)._M_h._M_single_bucket" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;" (assignment_expression "p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt" identifier = (field_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt" (field_expression "(this->referenced_list_)._M_h._M_before_begin" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "(this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;" (assignment_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0" (field_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt" (field_expression "(this->referenced_list_)._M_h._M_before_begin" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (p_Var11 != (_Hash_node_base *)0x0) {\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }" if (parenthesized_expression "(p_Var11 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var11 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_4c = &(this->referenced_list_)._M_h._M_before_begin;\n          local_44 = 0;\n          do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);\n        }" { (expression_statement "local_4c = &(this->referenced_list_)._M_h._M_before_begin;" (assignment_expression "local_4c = &(this->referenced_list_)._M_h._M_before_begin" identifier = (pointer_expression "&(this->referenced_list_)._M_h._M_before_begin" & (field_expression "(this->referenced_list_)._M_h._M_before_begin" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          } while (p_Var5 != (_Hash_node_base *)0x0);" do (compound_statement "{\n            while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }\n            p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;\n            *pp_Var6 = local_4c;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;\n            pp_Var9[local_44] = p_Var11;\n            p_Var11 = p_Var5;\n            local_44 = uVar14;\n          }" { (while_statement "while( true ) {\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              p_Var5 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;\n              pp_Var6 = pp_Var9 + uVar14;\n              if (*pp_Var6 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;\n              (*pp_Var6)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_00229c08:\n              local_44 = uVar14;\n              p_Var11 = p_Var5;\n              if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;\n            }" { (expression_statement "p_Var5 = p_Var11->_M_nxt;" (assignment_expression "p_Var5 = p_Var11->_M_nxt" identifier = (field_expression "p_Var11->_M_nxt" identifier -> field_identifier)) ;) (expression_statement "uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c;" (assignment_expression "uVar14 = (uint)p_Var11[3]._M_nxt % (uint)local_3c" identifier = (binary_expression "(uint)p_Var11[3]._M_nxt % (uint)local_3c" (cast_expression "(uint)p_Var11[3]._M_nxt" ( (type_descriptor "uint" type_identifier) ) (field_expression "p_Var11[3]._M_nxt" (subscript_expression "p_Var11[3]" identifier [ number_literal ]) . field_identifier)) % (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pp_Var6 = pp_Var9 + uVar14;" (assignment_expression "pp_Var6 = pp_Var9 + uVar14" identifier = (binary_expression "pp_Var9 + uVar14" identifier + identifier)) ;) (if_statement "if (*pp_Var6 == (__bucket_type)0x0) break;" if (parenthesized_expression "(*pp_Var6 == (__bucket_type)0x0)" ( (binary_expression "*pp_Var6 == (__bucket_type)0x0" (pointer_expression "*pp_Var6" * identifier) == (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "p_Var11->_M_nxt = (*pp_Var6)->_M_nxt;" (assignment_expression "p_Var11->_M_nxt = (*pp_Var6)->_M_nxt" (field_expression "p_Var11->_M_nxt" identifier -> field_identifier) = (field_expression "(*pp_Var6)->_M_nxt" (parenthesized_expression "(*pp_Var6)" ( (pointer_expression "*pp_Var6" * identifier) )) -> field_identifier)) ;) (expression_statement "(*pp_Var6)->_M_nxt = p_Var11;" (assignment_expression "(*pp_Var6)->_M_nxt = p_Var11" (field_expression "(*pp_Var6)->_M_nxt" (parenthesized_expression "(*pp_Var6)" ( (pointer_expression "*pp_Var6" * identifier) )) -> field_identifier) = identifier) ;) (expression_statement "uVar14 = local_44;" (assignment_expression "uVar14 = local_44" identifier = identifier) ;) (labeled_statement "LAB_00229c08:\n              local_44 = uVar14;" statement_identifier : (expression_statement "local_44 = uVar14;" (assignment_expression "local_44 = uVar14" identifier = identifier) ;)) (expression_statement "p_Var11 = p_Var5;" (assignment_expression "p_Var11 = p_Var5" identifier = identifier) ;) (if_statement "if (p_Var5 == (_Hash_node_base *)0x0) goto LAB_00229c50;" if (parenthesized_expression "(p_Var5 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var5 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229c50;" goto statement_identifier ;)) })) (expression_statement "p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;" (assignment_expression "p_Var11->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt" (field_expression "p_Var11->_M_nxt" identifier -> field_identifier) = (field_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt" (field_expression "(this->referenced_list_)._M_h._M_before_begin" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "(this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11;" (assignment_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var11" (field_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt" (field_expression "(this->referenced_list_)._M_h._M_before_begin" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "*pp_Var6 = local_4c;" (assignment_expression "*pp_Var6 = local_4c" (pointer_expression "*pp_Var6" * identifier) = identifier) ;) (if_statement "if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_00229c08;" if (parenthesized_expression "(p_Var11->_M_nxt == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var11->_M_nxt == (_Hash_node_base *)0x0" (field_expression "p_Var11->_M_nxt" identifier -> field_identifier) == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229c08;" goto statement_identifier ;)) (expression_statement "pp_Var9[local_44] = p_Var11;" (assignment_expression "pp_Var9[local_44] = p_Var11" (subscript_expression "pp_Var9[local_44]" identifier [ identifier ]) = identifier) ;) (expression_statement "p_Var11 = p_Var5;" (assignment_expression "p_Var11 = p_Var5" identifier = identifier) ;) (expression_statement "local_44 = uVar14;" (assignment_expression "local_44 = uVar14" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var5 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var5 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_00229c50:\n        pp_Var6 = (this->referenced_list_)._M_h._M_buckets;" statement_identifier : (expression_statement "pp_Var6 = (this->referenced_list_)._M_h._M_buckets;" (assignment_expression "pp_Var6 = (this->referenced_list_)._M_h._M_buckets" identifier = (field_expression "(this->referenced_list_)._M_h._M_buckets" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;)) (if_statement "if (pp_Var6 != local_58) {\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }" if (parenthesized_expression "(pp_Var6 != local_58)" ( (binary_expression "pp_Var6 != local_58" identifier != identifier) )) (compound_statement "{\n          *(__bucket_type **)(puVar16 + -0x14) = pp_Var6;\n          *(undefined4 *)(puVar16 + -0x18) = 0x229c67;\n          operator_delete(*(void **)(puVar16 + -0x14));\n        }" { (expression_statement "*(__bucket_type **)(puVar16 + -0x14) = pp_Var6;" (assignment_expression "*(__bucket_type **)(puVar16 + -0x14) = pp_Var6" (pointer_expression "*(__bucket_type **)(puVar16 + -0x14)" * (cast_expression "(__bucket_type **)(puVar16 + -0x14)" ( (type_descriptor "__bucket_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x229c67;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x229c67" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)(puVar16 + -0x14));" (call_expression "operator_delete(*(void **)(puVar16 + -0x14))" identifier (argument_list "(*(void **)(puVar16 + -0x14))" ( (pointer_expression "*(void **)(puVar16 + -0x14)" * (cast_expression "(void **)(puVar16 + -0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) ))) ;) })) (expression_statement "(this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c;" (assignment_expression "(this->referenced_list_)._M_h._M_bucket_count = (size_type)local_3c" (field_expression "(this->referenced_list_)._M_h._M_bucket_count" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(size_type)local_3c" ( (type_descriptor "size_type" type_identifier) ) identifier)) ;) (expression_statement "(this->referenced_list_)._M_h._M_buckets = pp_Var9;" (assignment_expression "(this->referenced_list_)._M_h._M_buckets = pp_Var9" (field_expression "(this->referenced_list_)._M_h._M_buckets" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "local_44 = (uint)local_40 % (uint)local_3c;" (assignment_expression "local_44 = (uint)local_40 % (uint)local_3c" identifier = (binary_expression "(uint)local_40 % (uint)local_3c" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) % (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "local_50[3]._M_nxt = (_Hash_node_base *)local_40;" (assignment_expression "local_50[3]._M_nxt = (_Hash_node_base *)local_40" (field_expression "local_50[3]._M_nxt" (subscript_expression "local_50[3]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Hash_node_base *)local_40" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pp_Var6 = pp_Var9 + local_44;" (assignment_expression "pp_Var6 = pp_Var9 + local_44" identifier = (binary_expression "pp_Var9 + local_44" identifier + identifier)) ;) (if_statement "if (*pp_Var6 == (__bucket_type)0x0) {\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }" if (parenthesized_expression "(*pp_Var6 == (__bucket_type)0x0)" ( (binary_expression "*pp_Var6 == (__bucket_type)0x0" (pointer_expression "*pp_Var6" * identifier) == (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;\n        local_50->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }\n        *pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;\n      }" { (expression_statement "p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;" (assignment_expression "p_Var11 = (this->referenced_list_)._M_h._M_before_begin._M_nxt" identifier = (field_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt" (field_expression "(this->referenced_list_)._M_h._M_before_begin" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "(this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;" (assignment_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50" (field_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt" (field_expression "(this->referenced_list_)._M_h._M_before_begin" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "local_50->_M_nxt = p_Var11;" (assignment_expression "local_50->_M_nxt = p_Var11" (field_expression "local_50->_M_nxt" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var11 != (_Hash_node_base *)0x0) {\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }" if (parenthesized_expression "(p_Var11 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var11 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;\n        }" { (expression_statement "pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50;" (assignment_expression "pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =\n               local_50" (subscript_expression "pp_Var9[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count]" identifier [ (binary_expression "(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count" (cast_expression "(uint)p_Var11[3]._M_nxt" ( (type_descriptor "uint" type_identifier) ) (field_expression "p_Var11[3]._M_nxt" (subscript_expression "p_Var11[3]" identifier [ number_literal ]) . field_identifier)) % (field_expression "(this->referenced_list_)._M_h._M_bucket_count" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ]) = identifier) ;) })) (expression_statement "*pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin;" (assignment_expression "*pp_Var6 = &(this->referenced_list_)._M_h._M_before_begin" (pointer_expression "*pp_Var6" * identifier) = (pointer_expression "&(this->referenced_list_)._M_h._M_before_begin" & (field_expression "(this->referenced_list_)._M_h._M_before_begin" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) }) (else_clause "else {\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }" else (compound_statement "{\n        local_50->_M_nxt = (*pp_Var6)->_M_nxt;\n        (*pp_Var6)->_M_nxt = local_50;\n      }" { (expression_statement "local_50->_M_nxt = (*pp_Var6)->_M_nxt;" (assignment_expression "local_50->_M_nxt = (*pp_Var6)->_M_nxt" (field_expression "local_50->_M_nxt" identifier -> field_identifier) = (field_expression "(*pp_Var6)->_M_nxt" (parenthesized_expression "(*pp_Var6)" ( (pointer_expression "*pp_Var6" * identifier) )) -> field_identifier)) ;) (expression_statement "(*pp_Var6)->_M_nxt = local_50;" (assignment_expression "(*pp_Var6)->_M_nxt = local_50" (field_expression "(*pp_Var6)->_M_nxt" (parenthesized_expression "(*pp_Var6)" ( (pointer_expression "*pp_Var6" * identifier) )) -> field_identifier) = identifier) ;) }))) (expression_statement "psVar1 = &(this->referenced_list_)._M_h._M_element_count;" (assignment_expression "psVar1 = &(this->referenced_list_)._M_h._M_element_count" identifier = (pointer_expression "&(this->referenced_list_)._M_h._M_element_count" & (field_expression "(this->referenced_list_)._M_h._M_element_count" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*psVar1 = *psVar1 + 1;" (assignment_expression "*psVar1 = *psVar1 + 1" (pointer_expression "*psVar1" * identifier) = (binary_expression "*psVar1 + 1" (pointer_expression "*psVar1" * identifier) + number_literal)) ;) (expression_statement "p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var7 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" identifier = (field_expression "(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent" (field_expression "(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->section_reloc_map_)._M_t._M_impl" (field_expression "(this->section_reloc_map_)._M_t" (parenthesized_expression "(this->section_reloc_map_)" ( (field_expression "this->section_reloc_map_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish;" (field_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_finish" (field_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl" (binary_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std::pair<gold" (assignment_expression "local_40 = (this->work_list_).\n                 super__Vector_base<std" identifier = (binary_expression "(this->work_list_).\n                 super__Vector_base<std" (field_expression "(this->work_list_).\n                 super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "p_Var12 = local_54;" (assignment_expression "p_Var12 = local_54" identifier = identifier) ;) (if_statement "if (p_Var7 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" if (parenthesized_expression "(p_Var7 != (_Base_ptr)0x0)" ( (binary_expression "p_Var7 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" { (do_statement "do {\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);" do (compound_statement "{\n          while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }\n          p_Var7 = p_Var13->_M_left;\n          p_Var12 = (_Rb_tree_header *)p_Var13;\n        }" { (while_statement "while ((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))) {\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }" while (parenthesized_expression "((p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second)))))" ( (parenthesized_expression "(p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))))" ( (comma_expression "p_Var13 = p_Var7, (Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second)))" (assignment_expression "p_Var13 = p_Var7" identifier = identifier) , (binary_expression "(Relobj *)p_Var13[1]._M_color < entry.first ||\n                 (((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second)))" (binary_expression "(Relobj *)p_Var13[1]._M_color < entry.first" (cast_expression "(Relobj *)p_Var13[1]._M_color" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var13[1]._M_color" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier)) < (field_expression "entry.first" identifier . field_identifier)) || (parenthesized_expression "(((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second)))" ( (parenthesized_expression "((Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second))" ( (binary_expression "(Relobj *)p_Var13[1]._M_color == entry.first &&\n                  (*(uint *)((int)(p_Var13 + 1) + 4) < entry.second)" (binary_expression "(Relobj *)p_Var13[1]._M_color == entry.first" (cast_expression "(Relobj *)p_Var13[1]._M_color" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var13[1]._M_color" (subscript_expression "p_Var13[1]" identifier [ number_literal ]) . field_identifier)) == (field_expression "entry.first" identifier . field_identifier)) && (parenthesized_expression "(*(uint *)((int)(p_Var13 + 1) + 4) < entry.second)" ( (binary_expression "*(uint *)((int)(p_Var13 + 1) + 4) < entry.second" (pointer_expression "*(uint *)((int)(p_Var13 + 1) + 4)" * (cast_expression "(uint *)((int)(p_Var13 + 1) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(p_Var13 + 1) + 4)" ( (binary_expression "(int)(p_Var13 + 1) + 4" (cast_expression "(int)(p_Var13 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var13 + 1)" ( (binary_expression "p_Var13 + 1" identifier + number_literal) ))) + number_literal) )))) < (field_expression "entry.second" identifier . field_identifier)) ))) )) )))) )) )) (compound_statement "{\n            pp_Var2 = &p_Var13->_M_right;\n            p_Var7 = *pp_Var2;\n            p_Var13 = &p_Var12->_M_header;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;\n          }" { (expression_statement "pp_Var2 = &p_Var13->_M_right;" (assignment_expression "pp_Var2 = &p_Var13->_M_right" identifier = (pointer_expression "&p_Var13->_M_right" & (field_expression "p_Var13->_M_right" identifier -> field_identifier))) ;) (expression_statement "p_Var7 = *pp_Var2;" (assignment_expression "p_Var7 = *pp_Var2" identifier = (pointer_expression "*pp_Var2" * identifier)) ;) (expression_statement "p_Var13 = &p_Var12->_M_header;" (assignment_expression "p_Var13 = &p_Var12->_M_header" identifier = (pointer_expression "&p_Var12->_M_header" & (field_expression "p_Var12->_M_header" identifier -> field_identifier))) ;) (if_statement "if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_00229cf4;" if (parenthesized_expression "(*pp_Var2 == (_Base_ptr)0x0)" ( (binary_expression "*pp_Var2 == (_Base_ptr)0x0" (pointer_expression "*pp_Var2" * identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00229cf4;" goto statement_identifier ;)) })) (expression_statement "p_Var7 = p_Var13->_M_left;" (assignment_expression "p_Var7 = p_Var13->_M_left" identifier = (field_expression "p_Var13->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var12 = (_Rb_tree_header *)p_Var13;" (assignment_expression "p_Var12 = (_Rb_tree_header *)p_Var13" identifier = (cast_expression "(_Rb_tree_header *)p_Var13" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(p_Var13->_M_left != (_Base_ptr)0x0)" ( (binary_expression "p_Var13->_M_left != (_Base_ptr)0x0" (field_expression "p_Var13->_M_left" identifier -> field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_00229cf4:\n        if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }" statement_identifier : (if_statement "if (((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))) {\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }" if (parenthesized_expression "(((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second))))" ( (binary_expression "((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))" (parenthesized_expression "((local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first))" ( (binary_expression "(local_54 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)" (parenthesized_expression "(local_54 != (_Rb_tree_header *)p_Var13)" ( (binary_expression "local_54 != (_Rb_tree_header *)p_Var13" identifier != (cast_expression "(_Rb_tree_header *)p_Var13" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) && (parenthesized_expression "((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)" ( (binary_expression "(Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first" (cast_expression "(Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((_Rb_tree_header *)p_Var13)->_M_node_count" (parenthesized_expression "((_Rb_tree_header *)p_Var13)" ( (cast_expression "(_Rb_tree_header *)p_Var13" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) <= (field_expression "entry.first" identifier . field_identifier)) ))) )) && (parenthesized_expression "((entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)))" ( (parenthesized_expression "(entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second))" ( (binary_expression "entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count ||\n            (*(uint *)((int)p_Var13 + 0x14) <= entry.second)" (binary_expression "entry.first != (Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count" (field_expression "entry.first" identifier . field_identifier) != (cast_expression "(Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((_Rb_tree_header *)p_Var13)->_M_node_count" (parenthesized_expression "((_Rb_tree_header *)p_Var13)" ( (cast_expression "(_Rb_tree_header *)p_Var13" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) || (parenthesized_expression "(*(uint *)((int)p_Var13 + 0x14) <= entry.second)" ( (binary_expression "*(uint *)((int)p_Var13 + 0x14) <= entry.second" (pointer_expression "*(uint *)((int)p_Var13 + 0x14)" * (cast_expression "(uint *)((int)p_Var13 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var13 + 0x14)" ( (binary_expression "(int)p_Var13 + 0x14" (cast_expression "(int)p_Var13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (field_expression "entry.second" identifier . field_identifier)) ))) )) ))) )) (compound_statement "{\n          piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);\njoined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }" { (expression_statement "piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc);" (assignment_expression "piVar15 = *(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc)" identifier = (pointer_expression "*(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc)" * (cast_expression "(int **)((undefined1 *)((int)p_Var13 + 0x14) + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((undefined1 *)((int)p_Var13 + 0x14) + 0xc)" ( (binary_expression "(undefined1 *)((int)p_Var13 + 0x14) + 0xc" (cast_expression "(undefined1 *)((int)p_Var13 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var13 + 0x14)" ( (binary_expression "(int)p_Var13 + 0x14" (cast_expression "(int)p_Var13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) + number_literal) ))))) ;) (labeled_statement "joined_r0x00229d0d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if (piVar15 != (int *)0x0) {\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }" if (parenthesized_expression "(piVar15 != (int *)0x0)" ( (binary_expression "piVar15 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }" { (do_statement "do {\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );" do (compound_statement "{\n              pRVar4 = (Relobj *)piVar15[1];\n              uVar14 = piVar15[2];\n              local_3c = (pointer)(piVar15 + 1);\n              uVar10 = (uint)pRVar4 ^ uVar14;\n              *(uint *)(puVar16 + -8) = uVar10;\n              *(pointer *)(puVar16 + -0xc) = local_3c;\n              *(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;\n              *(Sections_reachable **)(puVar16 + -0x14) = local_38;\n              *(undefined4 *)(puVar16 + -0x18) = 0x229d47;\n              p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));\n              if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            }" { (expression_statement "pRVar4 = (Relobj *)piVar15[1];" (assignment_expression "pRVar4 = (Relobj *)piVar15[1]" identifier = (cast_expression "(Relobj *)piVar15[1]" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar15[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar14 = piVar15[2];" (assignment_expression "uVar14 = piVar15[2]" identifier = (subscript_expression "piVar15[2]" identifier [ number_literal ])) ;) (expression_statement "local_3c = (pointer)(piVar15 + 1);" (assignment_expression "local_3c = (pointer)(piVar15 + 1)" identifier = (call_expression "(pointer)(piVar15 + 1)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "(piVar15 + 1)" ( (binary_expression "piVar15 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar10 = (uint)pRVar4 ^ uVar14;" (assignment_expression "uVar10 = (uint)pRVar4 ^ uVar14" identifier = (binary_expression "(uint)pRVar4 ^ uVar14" (cast_expression "(uint)pRVar4" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier)) ;) (expression_statement "*(uint *)(puVar16 + -8) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -8) = uVar10" (pointer_expression "*(uint *)(puVar16 + -8)" * (cast_expression "(uint *)(puVar16 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(pointer *)(puVar16 + -0xc) = local_3c;" (assignment_expression "*(pointer *)(puVar16 + -0xc) = local_3c" (pointer_expression "*(pointer *)(puVar16 + -0xc)" * (cast_expression "(pointer *)(puVar16 + -0xc)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count;" (assignment_expression "*(uint *)(puVar16 + -0x10) = uVar10 % (this->referenced_list_)._M_h._M_bucket_count" (pointer_expression "*(uint *)(puVar16 + -0x10)" * (cast_expression "(uint *)(puVar16 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (binary_expression "uVar10 % (this->referenced_list_)._M_h._M_bucket_count" identifier % (field_expression "(this->referenced_list_)._M_h._M_bucket_count" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*(Sections_reachable **)(puVar16 + -0x14) = local_38;" (assignment_expression "*(Sections_reachable **)(puVar16 + -0x14) = local_38" (pointer_expression "*(Sections_reachable **)(puVar16 + -0x14)" * (cast_expression "(Sections_reachable **)(puVar16 + -0x14)" ( (type_descriptor "Sections_reachable **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x229d47;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x229d47" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (ERROR "p_Var8 = std::\n                       _Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::" (assignment_expression "p_Var8 = std" identifier = identifier) : : (binary_expression "_Hashtable<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_std" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>,_std" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>_>,_std" (binary_expression "Relobj*,_unsigned_int>_" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold" identifier (ERROR "::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>" : : (comma_expression "_Identity,_std" identifier , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : identifier * , (binary_expression "_unsigned_int>_" identifier > identifier) >) , identifier) : : (comma_expression "Section_id_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,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));" 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,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));" 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,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8));" (comma_expression "_Hashtable_traits<true,_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8))" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8))" identifier , (binary_expression "_true>_>\n                       ::_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8))" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "_M_find_before_node\n                                 (*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8))" identifier (argument_list "(*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14),*(size_type *)(puVar16 + -0x10),\n                                  *(key_type **)(puVar16 + -0xc),*(__hash_code *)(puVar16 + -8))" ( (pointer_expression "*(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14)" * (call_expression "(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)(puVar16 + -0x14)" (parenthesized_expression "(_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                                    **)" ( (ERROR "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std::equal_to<std::pair<gold::Relobj*,_unsigned_int>_>,_gold::Section_id_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std::__detail::_Identity,_std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>,_std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold::Relobj*,_unsigned_int" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std::pair<gold" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "_Hashtable<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "_Hashtable<std::pair<gold" (binary_expression "_Hashtable<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > (ERROR "," ,) identifier) (ERROR "::__detail::_Identity" : : identifier : : identifier) , identifier) : : (binary_expression "equal_to<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (type_descriptor "Relobj*" type_identifier (abstract_pointer_declarator "*" *)) , (binary_expression "_unsigned_int>_>,_gold" (binary_expression "_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier) : : (comma_expression "Section_id_hash,_std" 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,_true,_true>_>\n                                    **" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n                                    **" identifier , (binary_expression "_true>_>\n                                    **" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))))) )) (argument_list "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) , (pointer_expression "*(size_type *)(puVar16 + -0x10)" * (cast_expression "(size_type *)(puVar16 + -0x10)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(key_type **)(puVar16 + -0xc)" * (cast_expression "(key_type **)(puVar16 + -0xc)" ( (type_descriptor "key_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(__hash_code *)(puVar16 + -8)" * (cast_expression "(__hash_code *)(puVar16 + -8)" ( (type_descriptor "__hash_code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) )))))) ;))))) (if_statement "if ((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }" if (parenthesized_expression "((p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0))" ( (binary_expression "(p_Var8 == (__node_base *)0x0) || (p_Var8->_M_nxt == (_Hash_node_base *)0x0)" (parenthesized_expression "(p_Var8 == (__node_base *)0x0)" ( (binary_expression "p_Var8 == (__node_base *)0x0" identifier == (cast_expression "(__node_base *)0x0" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var8->_M_nxt == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var8->_M_nxt == (_Hash_node_base *)0x0" (field_expression "p_Var8->_M_nxt" identifier -> field_identifier) == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;\n                *(pointer *)(puVar16 + -0xc) = local_3c;\n                *(pointer *)(puVar16 + -0x10) = local_40;\n                *(Garbage_collection **)(puVar16 + -0x14) = this;\n                *(undefined4 *)(puVar16 + -0x18) = 0x229de1;\n                std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));\n                local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;\n              }" { (if_statement "if (local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;" if (parenthesized_expression "(local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage)" ( (field_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl._M_end_of_storage" (field_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                    ._M_impl" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold" (binary_expression "local_40 !=\n                    (this->work_list_).\n                    super__Vector_base<std" identifier != (binary_expression "(this->work_list_).\n                    super__Vector_base<std" (field_expression "(this->work_list_).\n                    super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (goto_statement "goto code_r0x00229d59;" goto statement_identifier ;)) (expression_statement "*(pointer *)(puVar16 + -0xc) = local_3c;" (assignment_expression "*(pointer *)(puVar16 + -0xc) = local_3c" (pointer_expression "*(pointer *)(puVar16 + -0xc)" * (cast_expression "(pointer *)(puVar16 + -0xc)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(pointer *)(puVar16 + -0x10) = local_40;" (assignment_expression "*(pointer *)(puVar16 + -0x10) = local_40" (pointer_expression "*(pointer *)(puVar16 + -0x10)" * (cast_expression "(pointer *)(puVar16 + -0x10)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(Garbage_collection **)(puVar16 + -0x14) = this;" (assignment_expression "*(Garbage_collection **)(puVar16 + -0x14) = this" (pointer_expression "*(Garbage_collection **)(puVar16 + -0x14)" * (cast_expression "(Garbage_collection **)(puVar16 + -0x14)" ( (type_descriptor "Garbage_collection **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x229de1;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x229de1" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (ERROR "std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std::pair<gold::" (comma_expression "std::\n                vector<std::pair<gold::Relobj*,_unsigned_int>,_std" identifier (ERROR "::\n                vector<std::pair<gold::Relobj*,_unsigned_int>" : : (binary_expression "vector<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : identifier * , identifier >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<gold" identifier < identifier) : : (binary_expression "Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert<const_std" (binary_expression "Relobj*,_unsigned_int>_>_>\n                ::_M_realloc_insert" (binary_expression "Relobj*,_unsigned_int>_>_" (binary_expression "Relobj*,_unsigned_int>_" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) : : (binary_expression "pair<gold" identifier < identifier) : :) (expression_statement "Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc));" (binary_expression "Relobj*,_unsigned_int>&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc))" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (pointer_expression "&>\n                          (*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc))" & (ERROR ">" >) (parenthesized_expression "(*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc))" ( (comma_expression "*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc)" (pointer_expression "*(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14)" * (call_expression "(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)(puVar16 + -0x14)" (parenthesized_expression "(vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **)" ( (binary_expression "vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                             **" (binary_expression "vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "vector<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "vector<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "vector<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "vector<std::pair<gold" (binary_expression "vector<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) , (comma_expression "*(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10),\n                           *(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc)" (pointer_expression "*(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10)" * (call_expression "(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0x10)" (parenthesized_expression "(pair<gold::Relobj*,_unsigned_int> **)" ( (binary_expression "pair<gold::Relobj*,_unsigned_int> **" (binary_expression "pair<gold::Relobj*,_unsigned_int" (binary_expression "pair<gold" identifier < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc)" * (call_expression "(pair<gold::Relobj*,_unsigned_int> **)(puVar16 + -0xc)" (parenthesized_expression "(pair<gold::Relobj*,_unsigned_int> **)" ( (binary_expression "pair<gold::Relobj*,_unsigned_int> **" (binary_expression "pair<gold::Relobj*,_unsigned_int" (binary_expression "pair<gold" identifier < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))))) )))) ;) (expression_statement "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish;" (field_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl._M_finish" (field_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                           ._M_impl" (binary_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std::pair<gold" (assignment_expression "local_40 = (this->work_list_).\n                           super__Vector_base<std" identifier = (binary_expression "(this->work_list_).\n                           super__Vector_base<std" (field_expression "(this->work_list_).\n                           super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) })) (expression_statement "piVar15 = (int *)*piVar15;" (assignment_expression "piVar15 = (int *)*piVar15" identifier = (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) ;) (if_statement "if (piVar15 == (int *)0x0) break;" if (parenthesized_expression "(piVar15 == (int *)0x0)" ( (binary_expression "piVar15 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) })) (expression_statement "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start;" (field_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl._M_start" (field_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n                 ._M_impl" (binary_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std::pair<gold" (assignment_expression "local_3c = (this->work_list_).\n                 super__Vector_base<std" identifier = (binary_expression "(this->work_list_).\n                 super__Vector_base<std" (field_expression "(this->work_list_).\n                 super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "puVar16 = puVar16 + -4;" (assignment_expression "puVar16 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (if_statement "if (local_3c == local_40) goto LAB_00229d84;" if (parenthesized_expression "(local_3c == local_40)" ( (binary_expression "local_3c == local_40" identifier == identifier) )) (goto_statement "goto LAB_00229d84;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00229d84:\n  this->is_worklist_ready_ = true;" statement_identifier : (expression_statement "this->is_worklist_ready_ = true;" (assignment_expression "this->is_worklist_ready_ = true" (field_expression "this->is_worklist_ready_" identifier -> field_identifier) = true) ;)) (return_statement "return;" return ;) (labeled_statement "code_r0x00229d59:\n  local_40->first = pRVar4;" statement_identifier : (expression_statement "local_40->first = pRVar4;" (assignment_expression "local_40->first = pRVar4" (field_expression "local_40->first" identifier -> field_identifier) = identifier) ;)) (expression_statement "local_40->second = uVar14;" (assignment_expression "local_40->second = uVar14" (field_expression "local_40->second" identifier -> field_identifier) = identifier) ;) (expression_statement "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n  ._M_impl._M_finish = local_40 + 1;" (assignment_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n  ._M_impl._M_finish = local_40 + 1" (field_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n  ._M_impl._M_finish" (field_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n  ._M_impl" (binary_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "(this->work_list_).\n  super__Vector_base<std::pair<gold" (binary_expression "(this->work_list_).\n  super__Vector_base<std" (field_expression "(this->work_list_).\n  super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = (int *)*piVar15;" (assignment_expression "piVar15 = (int *)*piVar15" identifier = (cast_expression "(int *)*piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar15" * identifier))) ;) (expression_statement "local_40 = local_40 + 1;" (assignment_expression "local_40 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00229d0d;" goto statement_identifier ;) })))
(translation_unit "void FUN_00229ab0(undefined4 *param_1)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined1 *puVar11;\n  uint *puVar12;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  undefined4 *local_58;\n  undefined4 *local_54;\n  int *local_50;\n  undefined4 *local_4c;\n  undefined **local_48;\n  uint local_44;\n  uint *local_40;\n  uint *local_3c;\n  undefined4 *local_38;\n  char local_34 [4];\n  uint local_30;\n  uint local_24;\n  undefined4 *local_20;\n  \n  local_48 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_3c = (uint *)*param_1;\n  local_54 = param_1 + 5;\n  puVar12 = (uint *)param_1[1];\n  while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x00229d59:\n  *local_40 = uVar10;\n  local_40[1] = uVar3;\n  param_1[1] = local_40 + 2;\n  piVar4 = (int *)*piVar4;\n  local_40 = local_40 + 2;\n  goto joined_r0x00229d0d;\n}\n\n" (function_definition "void FUN_00229ab0(undefined4 *param_1)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined1 *puVar11;\n  uint *puVar12;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  undefined4 *local_58;\n  undefined4 *local_54;\n  int *local_50;\n  undefined4 *local_4c;\n  undefined **local_48;\n  uint local_44;\n  uint *local_40;\n  uint *local_3c;\n  undefined4 *local_38;\n  char local_34 [4];\n  uint local_30;\n  uint local_24;\n  undefined4 *local_20;\n  \n  local_48 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_3c = (uint *)*param_1;\n  local_54 = param_1 + 5;\n  puVar12 = (uint *)param_1[1];\n  while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x00229d59:\n  *local_40 = uVar10;\n  local_40[1] = uVar3;\n  param_1[1] = local_40 + 2;\n  piVar4 = (int *)*piVar4;\n  local_40 = local_40 + 2;\n  goto joined_r0x00229d0d;\n}" primitive_type (function_declarator "FUN_00229ab0(undefined4 *param_1)" identifier (parameter_list "(undefined4 *param_1)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined1 *puVar11;\n  uint *puVar12;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  undefined4 *local_58;\n  undefined4 *local_54;\n  int *local_50;\n  undefined4 *local_4c;\n  undefined **local_48;\n  uint local_44;\n  uint *local_40;\n  uint *local_3c;\n  undefined4 *local_38;\n  char local_34 [4];\n  uint local_30;\n  uint local_24;\n  undefined4 *local_20;\n  \n  local_48 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_3c = (uint *)*param_1;\n  local_54 = param_1 + 5;\n  puVar12 = (uint *)param_1[1];\n  while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x00229d59:\n  *local_40 = uVar10;\n  local_40[1] = uVar3;\n  param_1[1] = local_40 + 2;\n  piVar4 = (int *)*piVar4;\n  local_40 = local_40 + 2;\n  goto joined_r0x00229d0d;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int aiStack_80 [9];" primitive_type (array_declarator "aiStack_80 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_5c [4];" type_identifier (array_declarator "auStack_5c [4]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined4 *local_54;" type_identifier (pointer_declarator "*local_54" * identifier) ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined4 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined **local_48;" type_identifier (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier)) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "uint *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "undefined4 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "char local_34 [4];" primitive_type (array_declarator "local_34 [4]" identifier [ number_literal ]) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (expression_statement "local_48 = &__DT_PLTGOT;" (assignment_expression "local_48 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" identifier = identifier) ;) (expression_statement "local_3c = (uint *)*param_1;" (assignment_expression "local_3c = (uint *)*param_1" identifier = (cast_expression "(uint *)*param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_54 = param_1 + 5;" (assignment_expression "local_54 = param_1 + 5" identifier = (binary_expression "param_1 + 5" identifier + number_literal)) ;) (expression_statement "puVar12 = (uint *)param_1[1];" (assignment_expression "puVar12 = (uint *)param_1[1]" identifier = (cast_expression "(uint *)param_1[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (while_statement "while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }" while (parenthesized_expression "(local_40 = puVar12, local_3c != local_40)" ( (comma_expression "local_40 = puVar12, local_3c != local_40" (assignment_expression "local_40 = puVar12" identifier = identifier) , (binary_expression "local_3c != local_40" identifier != identifier)) )) (compound_statement "{\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }" { (while_statement "while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }" { (expression_statement "uVar10 = local_40[-2];" (assignment_expression "uVar10 = local_40[-2]" identifier = (subscript_expression "local_40[-2]" identifier [ number_literal ])) ;) (expression_statement "local_4c = (undefined4 *)local_40[-1];" (assignment_expression "local_4c = (undefined4 *)local_40[-1]" identifier = (cast_expression "(undefined4 *)local_40[-1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_40[-1]" identifier [ number_literal ]))) ;) (expression_statement "puVar12 = local_40 + -2;" (assignment_expression "puVar12 = local_40 + -2" identifier = (binary_expression "local_40 + -2" identifier + number_literal)) ;) (expression_statement "param_1[1] = puVar12;" (assignment_expression "param_1[1] = puVar12" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_38 = param_1 + 10;" (assignment_expression "local_38 = param_1 + 10" identifier = (binary_expression "param_1 + 10" identifier + number_literal)) ;) (expression_statement "local_40 = (uint *)((uint)local_4c ^ uVar10);" (assignment_expression "local_40 = (uint *)((uint)local_4c ^ uVar10)" identifier = (cast_expression "(uint *)((uint)local_4c ^ uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_4c ^ uVar10)" ( (binary_expression "(uint)local_4c ^ uVar10" (cast_expression "(uint)local_4c" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier) )))) ;) (expression_statement "local_44 = (uint)local_40 % (uint)param_1[0xb];" (assignment_expression "local_44 = (uint)local_40 % (uint)param_1[0xb]" identifier = (binary_expression "(uint)local_40 % (uint)param_1[0xb]" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) % (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ])))) ;) (expression_statement "*(uint **)(puVar11 + -4) = local_40;" (assignment_expression "*(uint **)(puVar11 + -4) = local_40" (pointer_expression "*(uint **)(puVar11 + -4)" * (cast_expression "(uint **)(puVar11 + -4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -4)" ( (binary_expression "puVar11 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar11 + -8) = &local_24;" (assignment_expression "*(uint **)(puVar11 + -8) = &local_24" (pointer_expression "*(uint **)(puVar11 + -8)" * (cast_expression "(uint **)(puVar11 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (pointer_expression "&local_24" & identifier)) ;) (expression_statement "*(uint *)(puVar11 + -0xc) = local_44;" (assignment_expression "*(uint *)(puVar11 + -0xc) = local_44" (pointer_expression "*(uint *)(puVar11 + -0xc)" * (cast_expression "(uint *)(puVar11 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = local_38;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = local_38" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" * (cast_expression "(undefined4 **)(puVar11 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x229b29;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x229b29" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_24 = uVar10;" (assignment_expression "local_24 = uVar10" identifier = identifier) ;) (expression_statement "local_20 = local_4c;" (assignment_expression "local_20 = local_4c" identifier = identifier) ;) (expression_statement "piVar4 = (int *)FUN_000a8950();" (assignment_expression "piVar4 = (int *)FUN_000a8950()" identifier = (cast_expression "(int *)FUN_000a8950()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000a8950()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;" if (parenthesized_expression "((piVar4 != (int *)0x0) && (*piVar4 != 0))" ( (binary_expression "(piVar4 != (int *)0x0) && (*piVar4 != 0)" (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar4 != 0)" ( (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" * identifier) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x10;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x10" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x229b43;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x229b43" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_50 = (int *)FUN_00246670();" (assignment_expression "local_50 = (int *)FUN_00246670()" identifier = (cast_expression "(int *)FUN_00246670()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_50[1] = uVar10;" (assignment_expression "local_50[1] = uVar10" (subscript_expression "local_50[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*local_50 = 0;" (assignment_expression "*local_50 = 0" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[2] = (int)local_4c;" (assignment_expression "local_50[2] = (int)local_4c" (subscript_expression "local_50[2]" identifier [ number_literal ]) = (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = param_1[0xd];" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = param_1[0xd]" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = param_1[0xb];" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = param_1[0xb]" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;" (assignment_expression "*(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe" (pointer_expression "*(undefined4 **)(puVar11 + -0x1c)" * (cast_expression "(undefined4 **)(puVar11 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x1c)" ( (binary_expression "puVar11 + -0x1c" identifier + number_literal) )))) = (binary_expression "param_1 + 0xe" identifier + number_literal)) ;) (expression_statement "*(char **)(puVar11 + -0x20) = local_34;" (assignment_expression "*(char **)(puVar11 + -0x20) = local_34" (pointer_expression "*(char **)(puVar11 + -0x20)" * (cast_expression "(char **)(puVar11 + -0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x20)" ( (binary_expression "puVar11 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x24) = 0x229b7b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x229b7b" (pointer_expression "*(undefined4 *)(puVar11 + -0x24)" * (cast_expression "(undefined4 *)(puVar11 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x24)" ( (binary_expression "puVar11 + -0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0028d8d0();" (call_expression "FUN_0028d8d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_3c = (uint *)local_30;" (assignment_expression "local_3c = (uint *)local_30" identifier = (cast_expression "(uint *)local_30" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" if (parenthesized_expression "(local_34[0] == '\0')" ( (binary_expression "local_34[0] == '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        puVar5 = (undefined4 *)param_1[10];\n      }" { (expression_statement "puVar5 = (undefined4 *)param_1[10];" (assignment_expression "puVar5 = (undefined4 *)param_1[10]" identifier = (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" else (compound_statement "{\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" { (if_statement "if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" if (parenthesized_expression "(local_30 == 1)" ( (binary_expression "local_30 == 1" identifier == number_literal) )) (compound_statement "{\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }" { (expression_statement "puVar5 = param_1 + 0x10;" (assignment_expression "puVar5 = param_1 + 0x10" identifier = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" else (compound_statement "{\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" { (if_statement "if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }" if (parenthesized_expression "(0x3fffffff < local_30)" ( (binary_expression "0x3fffffff < local_30" number_literal < identifier) )) (compound_statement "{\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }" { (expression_statement "*(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;" (assignment_expression "*(undefined1 **)(puVar11 + -8) = &LAB_00229e0f" (pointer_expression "*(undefined1 **)(puVar11 + -8)" * (cast_expression "(undefined1 **)(puVar11 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (pointer_expression "&LAB_00229e0f" & identifier)) ;) (expression_statement "FUN_0028da60();" (call_expression "FUN_0028da60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar2 = local_30 * 4;" (assignment_expression "iVar2 = local_30 * 4" identifier = (binary_expression "local_30 * 4" identifier * number_literal)) ;) (expression_statement "*(int *)(puVar11 + -0x14) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0x14) = iVar2" (pointer_expression "*(int *)(puVar11 + -0x14)" * (cast_expression "(int *)(puVar11 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229bba;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229bba" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar5 = (undefined4 *)FUN_00246670();" (assignment_expression "puVar5 = (undefined4 *)FUN_00246670()" identifier = (cast_expression "(undefined4 *)FUN_00246670()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246670()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(int *)(puVar11 + -0xc) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0xc) = iVar2" (pointer_expression "*(int *)(puVar11 + -0xc)" * (cast_expression "(int *)(puVar11 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = puVar5;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = puVar5" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" * (cast_expression "(undefined4 **)(puVar11 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229bcb;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229bcb" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));" (call_expression "memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc))" identifier (argument_list "(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc))" ( (pointer_expression "*(void **)(puVar11 + -0x14)" * (cast_expression "(void **)(puVar11 + -0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) , (pointer_expression "*(int *)(puVar11 + -0x10)" * (cast_expression "(int *)(puVar11 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(puVar11 + -0xc)" * (cast_expression "(size_t *)(puVar11 + -0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) ))) ;) }))) (expression_statement "local_58 = param_1 + 0x10;" (assignment_expression "local_58 = param_1 + 0x10" identifier = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)param_1[0xc];" (assignment_expression "piVar4 = (int *)param_1[0xc]" identifier = (cast_expression "(int *)param_1[0xc]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }" { (expression_statement "local_4c = param_1 + 0xc;" (assignment_expression "local_4c = param_1 + 0xc" identifier = (binary_expression "param_1 + 0xc" identifier + number_literal)) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);" do (compound_statement "{\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          }" { (while_statement "while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }" { (expression_statement "piVar7 = (int *)*piVar4;" (assignment_expression "piVar7 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "uVar10 = (uint)piVar4[3] % (uint)local_3c;" (assignment_expression "uVar10 = (uint)piVar4[3] % (uint)local_3c" identifier = (binary_expression "(uint)piVar4[3] % (uint)local_3c" (cast_expression "(uint)piVar4[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar4[3]" identifier [ number_literal ])) % (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar8 = puVar5 + uVar10;" (assignment_expression "puVar8 = puVar5 + uVar10" identifier = (binary_expression "puVar5 + uVar10" identifier + identifier)) ;) (if_statement "if ((int *)*puVar8 == (int *)0x0) break;" if (parenthesized_expression "((int *)*puVar8 == (int *)0x0)" ( (binary_expression "(int *)*puVar8 == (int *)0x0" (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier)) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "*piVar4 = *(int *)*puVar8;" (assignment_expression "*piVar4 = *(int *)*puVar8" (pointer_expression "*piVar4" * identifier) = (pointer_expression "*(int *)*puVar8" * (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier)))) ;) (expression_statement "*(int **)*puVar8 = piVar4;" (assignment_expression "*(int **)*puVar8 = piVar4" (pointer_expression "*(int **)*puVar8" * (cast_expression "(int **)*puVar8" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*puVar8" * identifier))) = identifier) ;) (expression_statement "uVar10 = local_44;" (assignment_expression "uVar10 = local_44" identifier = identifier) ;) (labeled_statement "LAB_00229c08:\n              local_44 = uVar10;" statement_identifier : (expression_statement "local_44 = uVar10;" (assignment_expression "local_44 = uVar10" identifier = identifier) ;)) (expression_statement "piVar4 = piVar7;" (assignment_expression "piVar4 = piVar7" identifier = identifier) ;) (if_statement "if (piVar7 == (int *)0x0) goto LAB_00229c50;" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229c50;" goto statement_identifier ;)) })) (expression_statement "*piVar4 = param_1[0xc];" (assignment_expression "*piVar4 = param_1[0xc]" (pointer_expression "*piVar4" * identifier) = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = piVar4;" (assignment_expression "param_1[0xc] = piVar4" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar8 = local_4c;" (assignment_expression "*puVar8 = local_4c" (pointer_expression "*puVar8" * identifier) = identifier) ;) (if_statement "if (*piVar4 == 0) goto LAB_00229c08;" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (goto_statement "goto LAB_00229c08;" goto statement_identifier ;)) (expression_statement "puVar5[local_44] = piVar4;" (assignment_expression "puVar5[local_44] = piVar4" (subscript_expression "puVar5[local_44]" identifier [ identifier ]) = identifier) ;) (expression_statement "piVar4 = piVar7;" (assignment_expression "piVar4 = piVar7" identifier = identifier) ;) (expression_statement "local_44 = uVar10;" (assignment_expression "local_44 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" statement_identifier : (if_statement "if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" if (parenthesized_expression "((undefined4 *)param_1[10] != local_58)" ( (binary_expression "(undefined4 *)param_1[10] != local_58" (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) != identifier) )) (compound_statement "{\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" { (expression_statement "*(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10]" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" * (cast_expression "(undefined4 **)(puVar11 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = (cast_expression "(undefined4 *)param_1[10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229c67;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229c67" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00248220();" (call_expression "FUN_00248220()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "param_1[0xb] = local_3c;" (assignment_expression "param_1[0xb] = local_3c" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[10] = puVar5;" (assignment_expression "param_1[10] = puVar5" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_44 = (uint)local_40 % (uint)local_3c;" (assignment_expression "local_44 = (uint)local_40 % (uint)local_3c" identifier = (binary_expression "(uint)local_40 % (uint)local_3c" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) % (cast_expression "(uint)local_3c" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "local_50[3] = (int)local_40;" (assignment_expression "local_50[3] = (int)local_40" (subscript_expression "local_50[3]" identifier [ number_literal ]) = (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar4 = puVar5 + local_44;" (assignment_expression "piVar4 = puVar5 + local_44" identifier = (binary_expression "puVar5 + local_44" identifier + identifier)) ;) (if_statement "if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" if (parenthesized_expression "((int *)*piVar4 == (int *)0x0)" ( (binary_expression "(int *)*piVar4 == (int *)0x0" (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier)) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }" { (expression_statement "iVar2 = param_1[0xc];" (assignment_expression "iVar2 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = local_50;" (assignment_expression "param_1[0xc] = local_50" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*local_50 = iVar2;" (assignment_expression "*local_50 = iVar2" (pointer_expression "*local_50" * identifier) = identifier) ;) (if_statement "if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }" { (expression_statement "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;" (assignment_expression "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50" (subscript_expression "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]]" identifier [ (binary_expression "*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]" (pointer_expression "*(uint *)(iVar2 + 0xc)" * (cast_expression "(uint *)(iVar2 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) % (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ]) = identifier) ;) })) (expression_statement "*piVar4 = (int)(param_1 + 0xc);" (assignment_expression "*piVar4 = (int)(param_1 + 0xc)" (pointer_expression "*piVar4" * identifier) = (cast_expression "(int)(param_1 + 0xc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ;) }) (else_clause "else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" else (compound_statement "{\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" { (expression_statement "*local_50 = *(int *)*piVar4;" (assignment_expression "*local_50 = *(int *)*piVar4" (pointer_expression "*local_50" * identifier) = (pointer_expression "*(int *)*piVar4" * (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier)))) ;) (expression_statement "*(int **)*piVar4 = local_50;" (assignment_expression "*(int **)*piVar4 = local_50" (pointer_expression "*(int **)*piVar4" * (cast_expression "(int **)*piVar4" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar4" * identifier))) = identifier) ;) }))) (expression_statement "param_1[0xd] = param_1[0xd] + 1;" (assignment_expression "param_1[0xd] = param_1[0xd] + 1" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "param_1[0xd] + 1" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_40 = (uint *)param_1[1];" (assignment_expression "local_40 = (uint *)param_1[1]" identifier = (cast_expression "(uint *)param_1[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = (undefined4 *)param_1[6];" (assignment_expression "puVar5 = (undefined4 *)param_1[6]" identifier = (cast_expression "(undefined4 *)param_1[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "puVar8 = local_54;" (assignment_expression "puVar8 = local_54" identifier = identifier) ;) (if_statement "if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" if (parenthesized_expression "((undefined4 *)param_1[6] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)param_1[6] != (undefined4 *)0x0" (cast_expression "(undefined4 *)param_1[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" { (do_statement "do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);" do (compound_statement "{\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        }" { (while_statement "while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }" while (parenthesized_expression "((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))))" ( (parenthesized_expression "(puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))" ( (comma_expression "puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" (assignment_expression "puVar9 = puVar5" identifier = identifier) , (binary_expression "(uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" (binary_expression "(uint)puVar9[4] < local_24" (cast_expression "(uint)puVar9[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar9[4]" identifier [ number_literal ])) < identifier) || (parenthesized_expression "((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" ( (parenthesized_expression "(puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))" ( (binary_expression "puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)" (binary_expression "puVar9[4] == local_24" (subscript_expression "puVar9[4]" identifier [ number_literal ]) == identifier) && (parenthesized_expression "((undefined4 *)puVar9[5] < local_20)" ( (binary_expression "(undefined4 *)puVar9[5] < local_20" (cast_expression "(undefined4 *)puVar9[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[5]" identifier [ number_literal ])) < identifier) ))) )) )))) )) )) (compound_statement "{\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }" { (expression_statement "puVar1 = puVar9 + 3;" (assignment_expression "puVar1 = puVar9 + 3" identifier = (binary_expression "puVar9 + 3" identifier + number_literal)) ;) (expression_statement "puVar5 = (undefined4 *)*puVar1;" (assignment_expression "puVar5 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (if_statement "if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;" if (parenthesized_expression "((undefined4 *)*puVar1 == (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)*puVar1 == (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00229cf4;" goto statement_identifier ;)) })) (expression_statement "puVar5 = (undefined4 *)puVar9[2];" (assignment_expression "puVar5 = (undefined4 *)puVar9[2]" identifier = (cast_expression "(undefined4 *)puVar9[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "((undefined4 *)puVar9[2] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)puVar9[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar9[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" statement_identifier : (if_statement "if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" if (parenthesized_expression "(((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20))))" ( (binary_expression "((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))" (parenthesized_expression "((local_54 != puVar9) && ((uint)puVar9[4] <= local_24))" ( (binary_expression "(local_54 != puVar9) && ((uint)puVar9[4] <= local_24)" (parenthesized_expression "(local_54 != puVar9)" ( (binary_expression "local_54 != puVar9" identifier != identifier) )) && (parenthesized_expression "((uint)puVar9[4] <= local_24)" ( (binary_expression "(uint)puVar9[4] <= local_24" (cast_expression "(uint)puVar9[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar9[4]" identifier [ number_literal ])) <= identifier) ))) )) && (parenthesized_expression "((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))" ( (parenthesized_expression "(local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20))" ( (binary_expression "local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)" (binary_expression "local_24 != puVar9[4]" identifier != (subscript_expression "puVar9[4]" identifier [ number_literal ])) || (parenthesized_expression "((undefined4 *)puVar9[5] <= local_20)" ( (binary_expression "(undefined4 *)puVar9[5] <= local_20" (cast_expression "(undefined4 *)puVar9[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[5]" identifier [ number_literal ])) <= identifier) ))) )) ))) )) (compound_statement "{\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" { (expression_statement "piVar4 = (int *)puVar9[8];" (assignment_expression "piVar4 = (int *)puVar9[8]" identifier = (cast_expression "(int *)puVar9[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[8]" identifier [ number_literal ]))) ;) (labeled_statement "joined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" if (parenthesized_expression "(piVar4 != (int *)0x0)" ( (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" { (do_statement "do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );" do (compound_statement "{\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            }" { (expression_statement "uVar10 = piVar4[1];" (assignment_expression "uVar10 = piVar4[1]" identifier = (subscript_expression "piVar4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = piVar4[2];" (assignment_expression "uVar3 = piVar4[2]" identifier = (subscript_expression "piVar4[2]" identifier [ number_literal ])) ;) (expression_statement "local_3c = (uint *)(piVar4 + 1);" (assignment_expression "local_3c = (uint *)(piVar4 + 1)" identifier = (cast_expression "(uint *)(piVar4 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 1)" ( (binary_expression "piVar4 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar6 = uVar10 ^ uVar3;" (assignment_expression "uVar6 = uVar10 ^ uVar3" identifier = (binary_expression "uVar10 ^ uVar3" identifier ^ identifier)) ;) (expression_statement "*(uint *)(puVar11 + -8) = uVar6;" (assignment_expression "*(uint *)(puVar11 + -8) = uVar6" (pointer_expression "*(uint *)(puVar11 + -8)" * (cast_expression "(uint *)(puVar11 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar11 + -0xc) = local_3c;" (assignment_expression "*(uint **)(puVar11 + -0xc) = local_3c" (pointer_expression "*(uint **)(puVar11 + -0xc)" * (cast_expression "(uint **)(puVar11 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];" (assignment_expression "*(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb]" (pointer_expression "*(uint *)(puVar11 + -0x10)" * (cast_expression "(uint *)(puVar11 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (binary_expression "uVar6 % (uint)param_1[0xb]" identifier % (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ])))) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = local_38;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = local_38" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" * (cast_expression "(undefined4 **)(puVar11 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229d47;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229d47" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)FUN_000a8950();" (assignment_expression "piVar7 = (int *)FUN_000a8950()" identifier = (cast_expression "(int *)FUN_000a8950()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000a8950()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }" if (parenthesized_expression "((piVar7 == (int *)0x0) || (*piVar7 == 0))" ( (binary_expression "(piVar7 == (int *)0x0) || (*piVar7 == 0)" (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*piVar7 == 0)" ( (binary_expression "*piVar7 == 0" (pointer_expression "*piVar7" * identifier) == number_literal) ))) )) (compound_statement "{\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }" { (if_statement "if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;" if (parenthesized_expression "(local_40 != (uint *)param_1[2])" ( (binary_expression "local_40 != (uint *)param_1[2]" identifier != (cast_expression "(uint *)param_1[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (goto_statement "goto code_r0x00229d59;" goto statement_identifier ;)) (expression_statement "*(uint **)(puVar11 + -0xc) = local_3c;" (assignment_expression "*(uint **)(puVar11 + -0xc) = local_3c" (pointer_expression "*(uint **)(puVar11 + -0xc)" * (cast_expression "(uint **)(puVar11 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar11 + -0x10) = local_40;" (assignment_expression "*(uint **)(puVar11 + -0x10) = local_40" (pointer_expression "*(uint **)(puVar11 + -0x10)" * (cast_expression "(uint **)(puVar11 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = param_1;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = param_1" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" * (cast_expression "(undefined4 **)(puVar11 + -0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229de1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229de1" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" * (cast_expression "(undefined4 *)(puVar11 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x18)" ( (binary_expression "puVar11 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00229e20();" (call_expression "FUN_00229e20()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_40 = (uint *)param_1[1];" (assignment_expression "local_40 = (uint *)param_1[1]" identifier = (cast_expression "(uint *)param_1[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (if_statement "if (piVar4 == (int *)0x0) break;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) })) (expression_statement "local_3c = (uint *)*param_1;" (assignment_expression "local_3c = (uint *)*param_1" identifier = (cast_expression "(uint *)*param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar11 = puVar11 + -4;" (assignment_expression "puVar11 = puVar11 + -4" identifier = (binary_expression "puVar11 + -4" identifier + number_literal)) ;) (if_statement "if (local_3c == local_40) goto LAB_00229d84;" if (parenthesized_expression "(local_3c == local_40)" ( (binary_expression "local_3c == local_40" identifier == identifier) )) (goto_statement "goto LAB_00229d84;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;" statement_identifier : (expression_statement "*(undefined1 *)(param_1 + 3) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 3) = 1" (pointer_expression "*(undefined1 *)(param_1 + 3)" * (cast_expression "(undefined1 *)(param_1 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = number_literal) ;)) (return_statement "return;" return ;) (labeled_statement "code_r0x00229d59:\n  *local_40 = uVar10;" statement_identifier : (expression_statement "*local_40 = uVar10;" (assignment_expression "*local_40 = uVar10" (pointer_expression "*local_40" * identifier) = identifier) ;)) (expression_statement "local_40[1] = uVar3;" (assignment_expression "local_40[1] = uVar3" (subscript_expression "local_40[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = local_40 + 2;" (assignment_expression "param_1[1] = local_40 + 2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "local_40 + 2" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "local_40 = local_40 + 2;" (assignment_expression "local_40 = local_40 + 2" identifier = (binary_expression "local_40 + 2" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00229d0d;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) ^ IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (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 (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_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) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) % (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) % (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ]) = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT))) = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < IDENT) ))) )) )))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (subscript_expression IDENT [ LIT ])) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) <= IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT % (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) }))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (return_statement return ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_00229ab0(undefined4 *param_1)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined1 *puVar11;\n  uint *puVar12;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  undefined4 *local_58;\n  undefined4 *local_54;\n  int *local_50;\n  undefined4 *local_4c;\n  undefined **local_48;\n  uint local_44;\n  uint *local_40;\n  uint *local_3c;\n  undefined4 *local_38;\n  char local_34 [4];\n  uint local_30;\n  uint local_24;\n  undefined4 *local_20;\n  \n  local_48 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_3c = (uint *)*param_1;\n  local_54 = param_1 + 5;\n  puVar12 = (uint *)param_1[1];\n  while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x00229d59:\n  *local_40 = uVar10;\n  local_40[1] = uVar3;\n  param_1[1] = local_40 + 2;\n  piVar4 = (int *)*piVar4;\n  local_40 = local_40 + 2;\n  goto joined_r0x00229d0d;\n}" (primitive_type "void") (function_declarator "FUN_00229ab0(undefined4 *param_1)" (identifier "FUN_00229ab0") (parameter_list "(undefined4 *param_1)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  int *piVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined1 *puVar11;\n  uint *puVar12;\n  int aiStack_80 [9];\n  undefined1 auStack_5c [4];\n  undefined4 *local_58;\n  undefined4 *local_54;\n  int *local_50;\n  undefined4 *local_4c;\n  undefined **local_48;\n  uint local_44;\n  uint *local_40;\n  uint *local_3c;\n  undefined4 *local_38;\n  char local_34 [4];\n  uint local_30;\n  uint local_24;\n  undefined4 *local_20;\n  \n  local_48 = &__DT_PLTGOT;\n  puVar11 = auStack_5c;\n  local_3c = (uint *)*param_1;\n  local_54 = param_1 + 5;\n  puVar12 = (uint *)param_1[1];\n  while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }\nLAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x00229d59:\n  *local_40 = uVar10;\n  local_40[1] = uVar3;\n  param_1[1] = local_40 + 2;\n  piVar4 = (int *)*piVar4;\n  local_40 = local_40 + 2;\n  goto joined_r0x00229d0d;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined1 *puVar11;" (type_identifier "undefined1") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint *puVar12;" (type_identifier "uint") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int aiStack_80 [9];" (primitive_type "int") (array_declarator "aiStack_80 [9]" (identifier "aiStack_80") ([ "[") (number_literal "9") (] "]")) (; ";")) (declaration "undefined1 auStack_5c [4];" (type_identifier "undefined1") (array_declarator "auStack_5c [4]" (identifier "auStack_5c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 *local_58;" (type_identifier "undefined4") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "undefined4 *local_54;" (type_identifier "undefined4") (pointer_declarator "*local_54" (* "*") (identifier "local_54")) (; ";")) (declaration "int *local_50;" (primitive_type "int") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined4 *local_4c;" (type_identifier "undefined4") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "undefined **local_48;" (type_identifier "undefined") (pointer_declarator "**local_48" (* "*") (pointer_declarator "*local_48" (* "*") (identifier "local_48"))) (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "uint *local_40;" (type_identifier "uint") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "uint *local_3c;" (type_identifier "uint") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "undefined4 *local_38;" (type_identifier "undefined4") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "char local_34 [4];" (primitive_type "char") (array_declarator "local_34 [4]" (identifier "local_34") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "undefined4 *local_20;" (type_identifier "undefined4") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "local_48 = &__DT_PLTGOT;" (assignment_expression "local_48 = &__DT_PLTGOT" (identifier "local_48") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" (identifier "puVar11") (= "=") (identifier "auStack_5c")) (; ";")) (expression_statement "local_3c = (uint *)*param_1;" (assignment_expression "local_3c = (uint *)*param_1" (identifier "local_3c") (= "=") (cast_expression "(uint *)*param_1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_54 = param_1 + 5;" (assignment_expression "local_54 = param_1 + 5" (identifier "local_54") (= "=") (binary_expression "param_1 + 5" (identifier "param_1") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "puVar12 = (uint *)param_1[1];" (assignment_expression "puVar12 = (uint *)param_1[1]" (identifier "puVar12") (= "=") (cast_expression "(uint *)param_1[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (while_statement "while (local_40 = puVar12, local_3c != local_40) {\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }" (while "while") (parenthesized_expression "(local_40 = puVar12, local_3c != local_40)" (( "(") (comma_expression "local_40 = puVar12, local_3c != local_40" (assignment_expression "local_40 = puVar12" (identifier "local_40") (= "=") (identifier "puVar12")) (, ",") (binary_expression "local_3c != local_40" (identifier "local_3c") (!= "!=") (identifier "local_40"))) () ")")) (compound_statement "{\n    while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar10 = local_40[-2];\n      local_4c = (undefined4 *)local_40[-1];\n      puVar12 = local_40 + -2;\n      param_1[1] = puVar12;\n      local_38 = param_1 + 10;\n      local_40 = (uint *)((uint)local_4c ^ uVar10);\n      local_44 = (uint)local_40 % (uint)param_1[0xb];\n      *(uint **)(puVar11 + -4) = local_40;\n      *(uint **)(puVar11 + -8) = &local_24;\n      *(uint *)(puVar11 + -0xc) = local_44;\n      *(undefined4 **)(puVar11 + -0x10) = local_38;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a8950();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;\n      local_50 = (int *)FUN_00246670();\n      local_50[1] = uVar10;\n      *local_50 = 0;\n      local_50[2] = (int)local_4c;\n      *(undefined4 *)(puVar11 + -0x10) = 1;\n      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];\n      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];\n      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;\n      *(char **)(puVar11 + -0x20) = local_34;\n      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;\n      FUN_0028d8d0();\n      local_3c = (uint *)local_30;\n      if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }\n      local_50[3] = (int)local_40;\n      piVar4 = puVar5 + local_44;\n      if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      local_40 = (uint *)param_1[1];\n      puVar5 = (undefined4 *)param_1[6];\n      puVar8 = local_54;\n      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      local_3c = (uint *)*param_1;\n      puVar11 = puVar11 + -4;\n      if (local_3c == local_40) goto LAB_00229d84;\n    }" ({ "{") (expression_statement "uVar10 = local_40[-2];" (assignment_expression "uVar10 = local_40[-2]" (identifier "uVar10") (= "=") (subscript_expression "local_40[-2]" (identifier "local_40") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "local_4c = (undefined4 *)local_40[-1];" (assignment_expression "local_4c = (undefined4 *)local_40[-1]" (identifier "local_4c") (= "=") (cast_expression "(undefined4 *)local_40[-1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_40[-1]" (identifier "local_40") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (expression_statement "puVar12 = local_40 + -2;" (assignment_expression "puVar12 = local_40 + -2" (identifier "puVar12") (= "=") (binary_expression "local_40 + -2" (identifier "local_40") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "param_1[1] = puVar12;" (assignment_expression "param_1[1] = puVar12" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar12")) (; ";")) (expression_statement "local_38 = param_1 + 10;" (assignment_expression "local_38 = param_1 + 10" (identifier "local_38") (= "=") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10"))) (; ";")) (expression_statement "local_40 = (uint *)((uint)local_4c ^ uVar10);" (assignment_expression "local_40 = (uint *)((uint)local_4c ^ uVar10)" (identifier "local_40") (= "=") (cast_expression "(uint *)((uint)local_4c ^ uVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)local_4c ^ uVar10)" (( "(") (binary_expression "(uint)local_4c ^ uVar10" (cast_expression "(uint)local_4c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_4c")) (^ "^") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "local_44 = (uint)local_40 % (uint)param_1[0xb];" (assignment_expression "local_44 = (uint)local_40 % (uint)param_1[0xb]" (identifier "local_44") (= "=") (binary_expression "(uint)local_40 % (uint)param_1[0xb]" (cast_expression "(uint)local_40" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_40")) (% "%") (cast_expression "(uint)param_1[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))))) (; ";")) (expression_statement "*(uint **)(puVar11 + -4) = local_40;" (assignment_expression "*(uint **)(puVar11 + -4) = local_40" (pointer_expression "*(uint **)(puVar11 + -4)" (* "*") (cast_expression "(uint **)(puVar11 + -4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -4)" (( "(") (binary_expression "puVar11 + -4" (identifier "puVar11") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(uint **)(puVar11 + -8) = &local_24;" (assignment_expression "*(uint **)(puVar11 + -8) = &local_24" (pointer_expression "*(uint **)(puVar11 + -8)" (* "*") (cast_expression "(uint **)(puVar11 + -8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "&local_24" (& "&") (identifier "local_24"))) (; ";")) (expression_statement "*(uint *)(puVar11 + -0xc) = local_44;" (assignment_expression "*(uint *)(puVar11 + -0xc) = local_44" (pointer_expression "*(uint *)(puVar11 + -0xc)" (* "*") (cast_expression "(uint *)(puVar11 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_44")) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + -0x10) = local_38;" (assignment_expression "*(undefined4 **)(puVar11 + -0x10) = local_38" (pointer_expression "*(undefined4 **)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 **)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x229b29;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x229b29" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x229b29")) (; ";")) (expression_statement "local_24 = uVar10;" (assignment_expression "local_24 = uVar10" (identifier "local_24") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "local_20 = local_4c;" (assignment_expression "local_20 = local_4c" (identifier "local_20") (= "=") (identifier "local_4c")) (; ";")) (expression_statement "piVar4 = (int *)FUN_000a8950();" (assignment_expression "piVar4 = (int *)FUN_000a8950()" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_000a8950()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000a8950()" (identifier "FUN_000a8950") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;" (if "if") (parenthesized_expression "((piVar4 != (int *)0x0) && (*piVar4 != 0))" (( "(") (binary_expression "(piVar4 != (int *)0x0) && (*piVar4 != 0)" (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar4 != 0)" (( "(") (binary_expression "*piVar4 != 0" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0x10;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0x10" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0x10")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x229b43;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x229b43" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x229b43")) (; ";")) (expression_statement "local_50 = (int *)FUN_00246670();" (assignment_expression "local_50 = (int *)FUN_00246670()" (identifier "local_50") (= "=") (cast_expression "(int *)FUN_00246670()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670()" (identifier "FUN_00246670") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_50[1] = uVar10;" (assignment_expression "local_50[1] = uVar10" (subscript_expression "local_50[1]" (identifier "local_50") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*local_50 = 0;" (assignment_expression "*local_50 = 0" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50[2] = (int)local_4c;" (assignment_expression "local_50[2] = (int)local_4c" (subscript_expression "local_50[2]" (identifier "local_50") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c"))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = param_1[0xd];" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = param_1[0xd]" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = param_1[0xb];" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = param_1[0xb]" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x18)" (( "(") (binary_expression "puVar11 + -0x18" (identifier "puVar11") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;" (assignment_expression "*(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe" (pointer_expression "*(undefined4 **)(puVar11 + -0x1c)" (* "*") (cast_expression "(undefined4 **)(puVar11 + -0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x1c)" (( "(") (binary_expression "puVar11 + -0x1c" (identifier "puVar11") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe"))) (; ";")) (expression_statement "*(char **)(puVar11 + -0x20) = local_34;" (assignment_expression "*(char **)(puVar11 + -0x20) = local_34" (pointer_expression "*(char **)(puVar11 + -0x20)" (* "*") (cast_expression "(char **)(puVar11 + -0x20)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x20)" (( "(") (binary_expression "puVar11 + -0x20" (identifier "puVar11") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x24) = 0x229b7b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x229b7b" (pointer_expression "*(undefined4 *)(puVar11 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x24)" (( "(") (binary_expression "puVar11 + -0x24" (identifier "puVar11") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x229b7b")) (; ";")) (expression_statement "FUN_0028d8d0();" (call_expression "FUN_0028d8d0()" (identifier "FUN_0028d8d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_3c = (uint *)local_30;" (assignment_expression "local_3c = (uint *)local_30" (identifier "local_3c") (= "=") (cast_expression "(uint *)local_30" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_30"))) (; ";")) (if_statement "if (local_34[0] == '\0') {\n        puVar5 = (undefined4 *)param_1[10];\n      }\n      else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" (if "if") (parenthesized_expression "(local_34[0] == '\0')" (( "(") (binary_expression "local_34[0] == '\0'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        puVar5 = (undefined4 *)param_1[10];\n      }" ({ "{") (expression_statement "puVar5 = (undefined4 *)param_1[10];" (assignment_expression "puVar5 = (undefined4 *)param_1[10]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)param_1[10]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" (else "else") (compound_statement "{\n        if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }\n        local_58 = param_1 + 0x10;\n        piVar4 = (int *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }\n        param_1[0xb] = local_3c;\n        param_1[10] = puVar5;\n        local_44 = (uint)local_40 % (uint)local_3c;\n      }" ({ "{") (if_statement "if (local_30 == 1) {\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" (if "if") (parenthesized_expression "(local_30 == 1)" (( "(") (binary_expression "local_30 == 1" (identifier "local_30") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          puVar5 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }" ({ "{") (expression_statement "puVar5 = param_1 + 0x10;" (assignment_expression "puVar5 = param_1 + 0x10" (identifier "puVar5") (= "=") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" (else "else") (compound_statement "{\n          if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;\n          puVar5 = (undefined4 *)FUN_00246670();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;\n          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));\n        }" ({ "{") (if_statement "if (0x3fffffff < local_30) {\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }" (if "if") (parenthesized_expression "(0x3fffffff < local_30)" (( "(") (binary_expression "0x3fffffff < local_30" (number_literal "0x3fffffff") (< "<") (identifier "local_30")) () ")")) (compound_statement "{\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;\n            FUN_0028da60();\n          }" ({ "{") (expression_statement "*(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;" (assignment_expression "*(undefined1 **)(puVar11 + -8) = &LAB_00229e0f" (pointer_expression "*(undefined1 **)(puVar11 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar11 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "&LAB_00229e0f" (& "&") (identifier "LAB_00229e0f"))) (; ";")) (expression_statement "FUN_0028da60();" (call_expression "FUN_0028da60()" (identifier "FUN_0028da60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar2 = local_30 * 4;" (assignment_expression "iVar2 = local_30 * 4" (identifier "iVar2") (= "=") (binary_expression "local_30 * 4" (identifier "local_30") (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(int *)(puVar11 + -0x14) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0x14) = iVar2" (pointer_expression "*(int *)(puVar11 + -0x14)" (* "*") (cast_expression "(int *)(puVar11 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229bba;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229bba" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x18)" (( "(") (binary_expression "puVar11 + -0x18" (identifier "puVar11") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x229bba")) (; ";")) (expression_statement "puVar5 = (undefined4 *)FUN_00246670();" (assignment_expression "puVar5 = (undefined4 *)FUN_00246670()" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)FUN_00246670()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246670()" (identifier "FUN_00246670") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(int *)(puVar11 + -0xc) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0xc) = iVar2" (pointer_expression "*(int *)(puVar11 + -0xc)" (* "*") (cast_expression "(int *)(puVar11 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = 0" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = puVar5;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = puVar5" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 **)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229bcb;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229bcb" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x18)" (( "(") (binary_expression "puVar11 + -0x18" (identifier "puVar11") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x229bcb")) (; ";")) (expression_statement "memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));" (call_expression "memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc))" (identifier "memset") (argument_list "(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc))" (( "(") (pointer_expression "*(void **)(puVar11 + -0x14)" (* "*") (cast_expression "(void **)(puVar11 + -0x14)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (, ",") (pointer_expression "*(int *)(puVar11 + -0x10)" (* "*") (cast_expression "(int *)(puVar11 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(size_t *)(puVar11 + -0xc)" (* "*") (cast_expression "(size_t *)(puVar11 + -0xc)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) () ")"))) (; ";")) (} "}")))) (expression_statement "local_58 = param_1 + 0x10;" (assignment_expression "local_58 = param_1 + 0x10" (identifier "local_58") (= "=") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "piVar4 = (int *)param_1[0xc];" (assignment_expression "piVar4 = (int *)param_1[0xc]" (identifier "piVar4") (= "=") (cast_expression "(int *)param_1[0xc]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (piVar4 != (int *)0x0) {\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }" (if "if") (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          local_4c = param_1 + 0xc;\n          local_44 = 0;\n          do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }" ({ "{") (expression_statement "local_4c = param_1 + 0xc;" (assignment_expression "local_4c = param_1 + 0xc" (identifier "local_4c") (= "=") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);" (do "do") (compound_statement "{\n            while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_00229c08;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          }" ({ "{") (while_statement "while( true ) {\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              piVar7 = (int *)*piVar4;\n              uVar10 = (uint)piVar4[3] % (uint)local_3c;\n              puVar8 = puVar5 + uVar10;\n              if ((int *)*puVar8 == (int *)0x0) break;\n              *piVar4 = *(int *)*puVar8;\n              *(int **)*puVar8 = piVar4;\n              uVar10 = local_44;\nLAB_00229c08:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_00229c50;\n            }" ({ "{") (expression_statement "piVar7 = (int *)*piVar4;" (assignment_expression "piVar7 = (int *)*piVar4" (identifier "piVar7") (= "=") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) (; ";")) (expression_statement "uVar10 = (uint)piVar4[3] % (uint)local_3c;" (assignment_expression "uVar10 = (uint)piVar4[3] % (uint)local_3c" (identifier "uVar10") (= "=") (binary_expression "(uint)piVar4[3] % (uint)local_3c" (cast_expression "(uint)piVar4[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]"))) (% "%") (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c")))) (; ";")) (expression_statement "puVar8 = puVar5 + uVar10;" (assignment_expression "puVar8 = puVar5 + uVar10" (identifier "puVar8") (= "=") (binary_expression "puVar5 + uVar10" (identifier "puVar5") (+ "+") (identifier "uVar10"))) (; ";")) (if_statement "if ((int *)*puVar8 == (int *)0x0) break;" (if "if") (parenthesized_expression "((int *)*puVar8 == (int *)0x0)" (( "(") (binary_expression "(int *)*puVar8 == (int *)0x0" (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*piVar4 = *(int *)*puVar8;" (assignment_expression "*piVar4 = *(int *)*puVar8" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (pointer_expression "*(int *)*puVar8" (* "*") (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))))) (; ";")) (expression_statement "*(int **)*puVar8 = piVar4;" (assignment_expression "*(int **)*puVar8 = piVar4" (pointer_expression "*(int **)*puVar8" (* "*") (cast_expression "(int **)*puVar8" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (= "=") (identifier "piVar4")) (; ";")) (expression_statement "uVar10 = local_44;" (assignment_expression "uVar10 = local_44" (identifier "uVar10") (= "=") (identifier "local_44")) (; ";")) (labeled_statement "LAB_00229c08:\n              local_44 = uVar10;" (statement_identifier "LAB_00229c08") (: ":") (expression_statement "local_44 = uVar10;" (assignment_expression "local_44 = uVar10" (identifier "local_44") (= "=") (identifier "uVar10")) (; ";"))) (expression_statement "piVar4 = piVar7;" (assignment_expression "piVar4 = piVar7" (identifier "piVar4") (= "=") (identifier "piVar7")) (; ";")) (if_statement "if (piVar7 == (int *)0x0) goto LAB_00229c50;" (if "if") (parenthesized_expression "(piVar7 == (int *)0x0)" (( "(") (binary_expression "piVar7 == (int *)0x0" (identifier "piVar7") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00229c50;" (goto "goto") (statement_identifier "LAB_00229c50") (; ";"))) (} "}"))) (expression_statement "*piVar4 = param_1[0xc];" (assignment_expression "*piVar4 = param_1[0xc]" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "param_1[0xc] = piVar4;" (assignment_expression "param_1[0xc] = piVar4" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "piVar4")) (; ";")) (expression_statement "*puVar8 = local_4c;" (assignment_expression "*puVar8 = local_4c" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "local_4c")) (; ";")) (if_statement "if (*piVar4 == 0) goto LAB_00229c08;" (if "if") (parenthesized_expression "(*piVar4 == 0)" (( "(") (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00229c08;" (goto "goto") (statement_identifier "LAB_00229c08") (; ";"))) (expression_statement "puVar5[local_44] = piVar4;" (assignment_expression "puVar5[local_44] = piVar4" (subscript_expression "puVar5[local_44]" (identifier "puVar5") ([ "[") (identifier "local_44") (] "]")) (= "=") (identifier "piVar4")) (; ";")) (expression_statement "piVar4 = piVar7;" (assignment_expression "piVar4 = piVar7" (identifier "piVar4") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "local_44 = uVar10;" (assignment_expression "local_44 = uVar10" (identifier "local_44") (= "=") (identifier "uVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00229c50:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" (statement_identifier "LAB_00229c50") (: ":") (if_statement "if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" (if "if") (parenthesized_expression "((undefined4 *)param_1[10] != local_58)" (( "(") (binary_expression "(undefined4 *)param_1[10] != local_58" (cast_expression "(undefined4 *)param_1[10]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (!= "!=") (identifier "local_58")) () ")")) (compound_statement "{\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;\n          FUN_00248220();\n        }" ({ "{") (expression_statement "*(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10]" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 **)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (cast_expression "(undefined4 *)param_1[10]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229c67;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229c67" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x18)" (( "(") (binary_expression "puVar11 + -0x18" (identifier "puVar11") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x229c67")) (; ";")) (expression_statement "FUN_00248220();" (call_expression "FUN_00248220()" (identifier "FUN_00248220") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "param_1[0xb] = local_3c;" (assignment_expression "param_1[0xb] = local_3c" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_3c")) (; ";")) (expression_statement "param_1[10] = puVar5;" (assignment_expression "param_1[10] = puVar5" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "local_44 = (uint)local_40 % (uint)local_3c;" (assignment_expression "local_44 = (uint)local_40 % (uint)local_3c" (identifier "local_44") (= "=") (binary_expression "(uint)local_40 % (uint)local_3c" (cast_expression "(uint)local_40" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_40")) (% "%") (cast_expression "(uint)local_3c" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_3c")))) (; ";")) (} "}")))) (expression_statement "local_50[3] = (int)local_40;" (assignment_expression "local_50[3] = (int)local_40" (subscript_expression "local_50[3]" (identifier "local_50") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40"))) (; ";")) (expression_statement "piVar4 = puVar5 + local_44;" (assignment_expression "piVar4 = puVar5 + local_44" (identifier "piVar4") (= "=") (binary_expression "puVar5 + local_44" (identifier "puVar5") (+ "+") (identifier "local_44"))) (; ";")) (if_statement "if ((int *)*piVar4 == (int *)0x0) {\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }\n      else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" (if "if") (parenthesized_expression "((int *)*piVar4 == (int *)0x0)" (( "(") (binary_expression "(int *)*piVar4 == (int *)0x0" (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar2 = param_1[0xc];\n        param_1[0xc] = local_50;\n        *local_50 = iVar2;\n        if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }\n        *piVar4 = (int)(param_1 + 0xc);\n      }" ({ "{") (expression_statement "iVar2 = param_1[0xc];" (assignment_expression "iVar2 = param_1[0xc]" (identifier "iVar2") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "param_1[0xc] = local_50;" (assignment_expression "param_1[0xc] = local_50" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*local_50 = iVar2;" (assignment_expression "*local_50 = iVar2" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 != 0) {\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;\n        }" ({ "{") (expression_statement "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;" (assignment_expression "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50" (subscript_expression "puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]]" (identifier "puVar5") ([ "[") (binary_expression "*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]" (pointer_expression "*(uint *)(iVar2 + 0xc)" (* "*") (cast_expression "(uint *)(iVar2 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (% "%") (cast_expression "(uint)param_1[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (] "]")) (= "=") (identifier "local_50")) (; ";")) (} "}"))) (expression_statement "*piVar4 = (int)(param_1 + 0xc);" (assignment_expression "*piVar4 = (int)(param_1 + 0xc)" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (cast_expression "(int)(param_1 + 0xc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" (else "else") (compound_statement "{\n        *local_50 = *(int *)*piVar4;\n        *(int **)*piVar4 = local_50;\n      }" ({ "{") (expression_statement "*local_50 = *(int *)*piVar4;" (assignment_expression "*local_50 = *(int *)*piVar4" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (pointer_expression "*(int *)*piVar4" (* "*") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))))) (; ";")) (expression_statement "*(int **)*piVar4 = local_50;" (assignment_expression "*(int **)*piVar4 = local_50" (pointer_expression "*(int **)*piVar4" (* "*") (cast_expression "(int **)*piVar4" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) (= "=") (identifier "local_50")) (; ";")) (} "}")))) (expression_statement "param_1[0xd] = param_1[0xd] + 1;" (assignment_expression "param_1[0xd] = param_1[0xd] + 1" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (binary_expression "param_1[0xd] + 1" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40 = (uint *)param_1[1];" (assignment_expression "local_40 = (uint *)param_1[1]" (identifier "local_40") (= "=") (cast_expression "(uint *)param_1[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar5 = (undefined4 *)param_1[6];" (assignment_expression "puVar5 = (undefined4 *)param_1[6]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)param_1[6]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "puVar8 = local_54;" (assignment_expression "puVar8 = local_54" (identifier "puVar8") (= "=") (identifier "local_54")) (; ";")) (if_statement "if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" (if "if") (parenthesized_expression "((undefined4 *)param_1[6] != (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)param_1[6] != (undefined4 *)0x0" (cast_expression "(undefined4 *)param_1[6]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" ({ "{") (do_statement "do {\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);" (do "do") (compound_statement "{\n          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        }" ({ "{") (while_statement "while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }" (while "while") (parenthesized_expression "((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))))" (( "(") (parenthesized_expression "(puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))" (( "(") (comma_expression "puVar9 = puVar5, (uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" (assignment_expression "puVar9 = puVar5" (identifier "puVar9") (= "=") (identifier "puVar5")) (, ",") (binary_expression "(uint)puVar9[4] < local_24 ||\n                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" (binary_expression "(uint)puVar9[4] < local_24" (cast_expression "(uint)puVar9[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]"))) (< "<") (identifier "local_24")) (|| "||") (parenthesized_expression "((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)))" (( "(") (parenthesized_expression "(puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))" (( "(") (binary_expression "puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20)" (binary_expression "puVar9[4] == local_24" (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]")) (== "==") (identifier "local_24")) (&& "&&") (parenthesized_expression "((undefined4 *)puVar9[5] < local_20)" (( "(") (binary_expression "(undefined4 *)puVar9[5] < local_20" (cast_expression "(undefined4 *)puVar9[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]"))) (< "<") (identifier "local_20")) () ")"))) () ")")) () ")")))) () ")")) () ")")) (compound_statement "{\n            puVar1 = puVar9 + 3;\n            puVar5 = (undefined4 *)*puVar1;\n            puVar9 = puVar8;\n            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;\n          }" ({ "{") (expression_statement "puVar1 = puVar9 + 3;" (assignment_expression "puVar1 = puVar9 + 3" (identifier "puVar1") (= "=") (binary_expression "puVar9 + 3" (identifier "puVar9") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)*puVar1;" (assignment_expression "puVar5 = (undefined4 *)*puVar1" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" (identifier "puVar9") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;" (if "if") (parenthesized_expression "((undefined4 *)*puVar1 == (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)*puVar1 == (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00229cf4;" (goto "goto") (statement_identifier "LAB_00229cf4") (; ";"))) (} "}"))) (expression_statement "puVar5 = (undefined4 *)puVar9[2];" (assignment_expression "puVar5 = (undefined4 *)puVar9[2]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar9[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" (identifier "puVar8") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)puVar9[2] != (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)puVar9[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar9[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (labeled_statement "LAB_00229cf4:\n        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" (statement_identifier "LAB_00229cf4") (: ":") (if_statement "if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" (if "if") (parenthesized_expression "(((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20))))" (( "(") (binary_expression "((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&\n           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))" (parenthesized_expression "((local_54 != puVar9) && ((uint)puVar9[4] <= local_24))" (( "(") (binary_expression "(local_54 != puVar9) && ((uint)puVar9[4] <= local_24)" (parenthesized_expression "(local_54 != puVar9)" (( "(") (binary_expression "local_54 != puVar9" (identifier "local_54") (!= "!=") (identifier "puVar9")) () ")")) (&& "&&") (parenthesized_expression "((uint)puVar9[4] <= local_24)" (( "(") (binary_expression "(uint)puVar9[4] <= local_24" (cast_expression "(uint)puVar9[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]"))) (<= "<=") (identifier "local_24")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))" (( "(") (parenthesized_expression "(local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20))" (( "(") (binary_expression "local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)" (binary_expression "local_24 != puVar9[4]" (identifier "local_24") (!= "!=") (subscript_expression "puVar9[4]" (identifier "puVar9") ([ "[") (number_literal "4") (] "]"))) (|| "||") (parenthesized_expression "((undefined4 *)puVar9[5] <= local_20)" (( "(") (binary_expression "(undefined4 *)puVar9[5] <= local_20" (cast_expression "(undefined4 *)puVar9[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]"))) (<= "<=") (identifier "local_20")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          piVar4 = (int *)puVar9[8];\njoined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }\n        }" ({ "{") (expression_statement "piVar4 = (int *)puVar9[8];" (assignment_expression "piVar4 = (int *)puVar9[8]" (identifier "piVar4") (= "=") (cast_expression "(int *)puVar9[8]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[8]" (identifier "puVar9") ([ "[") (number_literal "8") (] "]")))) (; ";")) (labeled_statement "joined_r0x00229d0d:\n          if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" (statement_identifier "joined_r0x00229d0d") (: ":") (if_statement "if (piVar4 != (int *)0x0) {\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" (if "if") (parenthesized_expression "(piVar4 != (int *)0x0)" (( "(") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );\n          }" ({ "{") (do_statement "do {\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            } while( true );" (do "do") (compound_statement "{\n              uVar10 = piVar4[1];\n              uVar3 = piVar4[2];\n              local_3c = (uint *)(piVar4 + 1);\n              uVar6 = uVar10 ^ uVar3;\n              *(uint *)(puVar11 + -8) = uVar6;\n              *(uint **)(puVar11 + -0xc) = local_3c;\n              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];\n              *(undefined4 **)(puVar11 + -0x14) = local_38;\n              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;\n              piVar7 = (int *)FUN_000a8950();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }\n              piVar4 = (int *)*piVar4;\n              if (piVar4 == (int *)0x0) break;\n            }" ({ "{") (expression_statement "uVar10 = piVar4[1];" (assignment_expression "uVar10 = piVar4[1]" (identifier "uVar10") (= "=") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar3 = piVar4[2];" (assignment_expression "uVar3 = piVar4[2]" (identifier "uVar3") (= "=") (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_3c = (uint *)(piVar4 + 1);" (assignment_expression "local_3c = (uint *)(piVar4 + 1)" (identifier "local_3c") (= "=") (cast_expression "(uint *)(piVar4 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 1)" (( "(") (binary_expression "piVar4 + 1" (identifier "piVar4") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar6 = uVar10 ^ uVar3;" (assignment_expression "uVar6 = uVar10 ^ uVar3" (identifier "uVar6") (= "=") (binary_expression "uVar10 ^ uVar3" (identifier "uVar10") (^ "^") (identifier "uVar3"))) (; ";")) (expression_statement "*(uint *)(puVar11 + -8) = uVar6;" (assignment_expression "*(uint *)(puVar11 + -8) = uVar6" (pointer_expression "*(uint *)(puVar11 + -8)" (* "*") (cast_expression "(uint *)(puVar11 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(uint **)(puVar11 + -0xc) = local_3c;" (assignment_expression "*(uint **)(puVar11 + -0xc) = local_3c" (pointer_expression "*(uint **)(puVar11 + -0xc)" (* "*") (cast_expression "(uint **)(puVar11 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_3c")) (; ";")) (expression_statement "*(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];" (assignment_expression "*(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb]" (pointer_expression "*(uint *)(puVar11 + -0x10)" (* "*") (cast_expression "(uint *)(puVar11 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "uVar6 % (uint)param_1[0xb]" (identifier "uVar6") (% "%") (cast_expression "(uint)param_1[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))))) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = local_38;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = local_38" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 **)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229d47;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229d47" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x18)" (( "(") (binary_expression "puVar11 + -0x18" (identifier "puVar11") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x229d47")) (; ";")) (expression_statement "piVar7 = (int *)FUN_000a8950();" (assignment_expression "piVar7 = (int *)FUN_000a8950()" (identifier "piVar7") (= "=") (cast_expression "(int *)FUN_000a8950()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000a8950()" (identifier "FUN_000a8950") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }" (if "if") (parenthesized_expression "((piVar7 == (int *)0x0) || (*piVar7 == 0))" (( "(") (binary_expression "(piVar7 == (int *)0x0) || (*piVar7 == 0)" (parenthesized_expression "(piVar7 == (int *)0x0)" (( "(") (binary_expression "piVar7 == (int *)0x0" (identifier "piVar7") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*piVar7 == 0)" (( "(") (binary_expression "*piVar7 == 0" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;\n                FUN_00229e20();\n                local_40 = (uint *)param_1[1];\n              }" ({ "{") (if_statement "if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;" (if "if") (parenthesized_expression "(local_40 != (uint *)param_1[2])" (( "(") (binary_expression "local_40 != (uint *)param_1[2]" (identifier "local_40") (!= "!=") (cast_expression "(uint *)param_1[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) () ")")) (goto_statement "goto code_r0x00229d59;" (goto "goto") (statement_identifier "code_r0x00229d59") (; ";"))) (expression_statement "*(uint **)(puVar11 + -0xc) = local_3c;" (assignment_expression "*(uint **)(puVar11 + -0xc) = local_3c" (pointer_expression "*(uint **)(puVar11 + -0xc)" (* "*") (cast_expression "(uint **)(puVar11 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_3c")) (; ";")) (expression_statement "*(uint **)(puVar11 + -0x10) = local_40;" (assignment_expression "*(uint **)(puVar11 + -0x10) = local_40" (pointer_expression "*(uint **)(puVar11 + -0x10)" (* "*") (cast_expression "(uint **)(puVar11 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(undefined4 **)(puVar11 + -0x14) = param_1;" (assignment_expression "*(undefined4 **)(puVar11 + -0x14) = param_1" (pointer_expression "*(undefined4 **)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 **)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x18) = 0x229de1;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x229de1" (pointer_expression "*(undefined4 *)(puVar11 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x18)" (( "(") (binary_expression "puVar11 + -0x18" (identifier "puVar11") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x229de1")) (; ";")) (expression_statement "FUN_00229e20();" (call_expression "FUN_00229e20()" (identifier "FUN_00229e20") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_40 = (uint *)param_1[1];" (assignment_expression "local_40 = (uint *)param_1[1]" (identifier "local_40") (= "=") (cast_expression "(uint *)param_1[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" (identifier "piVar4") (= "=") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) (; ";")) (if_statement "if (piVar4 == (int *)0x0) break;" (if "if") (parenthesized_expression "(piVar4 == (int *)0x0)" (( "(") (binary_expression "piVar4 == (int *)0x0" (identifier "piVar4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (} "}")))) (} "}"))) (expression_statement "local_3c = (uint *)*param_1;" (assignment_expression "local_3c = (uint *)*param_1" (identifier "local_3c") (= "=") (cast_expression "(uint *)*param_1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "puVar11 = puVar11 + -4;" (assignment_expression "puVar11 = puVar11 + -4" (identifier "puVar11") (= "=") (binary_expression "puVar11 + -4" (identifier "puVar11") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (local_3c == local_40) goto LAB_00229d84;" (if "if") (parenthesized_expression "(local_3c == local_40)" (( "(") (binary_expression "local_3c == local_40" (identifier "local_3c") (== "==") (identifier "local_40")) () ")")) (goto_statement "goto LAB_00229d84;" (goto "goto") (statement_identifier "LAB_00229d84") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00229d84:\n  *(undefined1 *)(param_1 + 3) = 1;" (statement_identifier "LAB_00229d84") (: ":") (expression_statement "*(undefined1 *)(param_1 + 3) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 3) = 1" (pointer_expression "*(undefined1 *)(param_1 + 3)" (* "*") (cast_expression "(undefined1 *)(param_1 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "1")) (; ";"))) (return_statement "return;" (return "return") (; ";")) (labeled_statement "code_r0x00229d59:\n  *local_40 = uVar10;" (statement_identifier "code_r0x00229d59") (: ":") (expression_statement "*local_40 = uVar10;" (assignment_expression "*local_40 = uVar10" (pointer_expression "*local_40" (* "*") (identifier "local_40")) (= "=") (identifier "uVar10")) (; ";"))) (expression_statement "local_40[1] = uVar3;" (assignment_expression "local_40[1] = uVar3" (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_1[1] = local_40 + 2;" (assignment_expression "param_1[1] = local_40 + 2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_40 + 2" (identifier "local_40") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" (identifier "piVar4") (= "=") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) (; ";")) (expression_statement "local_40 = local_40 + 2;" (assignment_expression "local_40 = local_40 + 2" (identifier "local_40") (= "=") (binary_expression "local_40 + 2" (identifier "local_40") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto joined_r0x00229d0d;" (goto "goto") (statement_identifier "joined_r0x00229d0d") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void do_transitive_closure(Garbage_collection * this) */

void __thiscall var_2::type_1::function_1(type_1 *this)

{
  type_2 *psVar1;
  type_3 *pp_Var2;
  int iVar3;
  type_4 *pRVar4;
  type_5 *var_21;
  type_6 *var_22;
  type_3 var_26;
  type_7 *var_12;
  type_6 *var_19;
  type_8 var_30;
  type_5 *var_18;
  type_9 *p_Var12;
  type_3 var_27;
  type_8 var_20;
  int *var_29;
  type_10 *var_8;
  type_11 ppVar17;
  type_8 auStack_80 [6];
  type_2 sStack_68;
  type_12 a_Stack_64 [2];
  type_10 auStack_5c [4];
  type_6 *var_23;
  type_9 *var_28;
  type_5 *local_50;
  type_7 *local_4c;
  type_13 **local_48;
  type_8 var_25;
  type_11 var_7;
  type_11 var_6;
  type_14 *local_38;
  char local_34 [4];
  type_8 var_15;
  type_15 entry;
  
  local_48 = &_GLOBAL_OFFSET_TABLE_;
  var_8 = auStack_5c;
  var_6 = (this->work_list_).
             super__Vector_base<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
             ._M_impl._M_start;
  var_28 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;
  ppVar17 = (this->work_list_).
            super__Vector_base<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
            ._M_impl._M_finish;
  while (var_7 = ppVar17, var_6 != var_7) {
    while( true ) {
      pRVar4 = var_7[-1].first;
      local_4c = (type_7 *)var_7[-1].second;
      ppVar17 = var_7 + -1;
      (this->work_list_).
      super__Vector_base<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
      ._M_impl._M_finish = ppVar17;
      local_38 = &this->referenced_list_;
      var_7 = (type_11)((type_8)local_4c ^ (type_8)pRVar4);
      var_25 = (type_8)var_7 % (this->referenced_list_)._M_h._M_bucket_count;
      *(type_11 *)(var_8 + -4) = var_7;
      *(type_15 **)(var_8 + -8) = &entry;
      *(type_8 *)(var_8 + -0xc) = var_25;
      *(type_14 **)(var_8 + -0x10) = local_38;
      *(type_16 *)(var_8 + -0x14) = 0x229b29;
      entry.first = pRVar4;
      entry.second = (type_8)local_4c;
      var_12 = var_1::
               _Hashtable<var_1::var_32<var_2::type_4*,var_3>,var_4::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::var_32<var_2::type_4*,var_3>var_5>,_gold::Section_id_hash,var_4::__detail::_Mod_range_hashing,var_4::__detail::_Default_ranged_hash,var_4::__detail::type_18,var_4::__detail::var_9<true,var_10,var_10>var_5>
               ::var_11
                         (*(_Hashtable<var_1::var_32<var_2::type_4*,var_3>,var_4::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::var_32<var_2::type_4*,var_3>var_5>,_gold::Section_id_hash,var_4::__detail::_Mod_range_hashing,var_4::__detail::_Default_ranged_hash,var_4::__detail::type_18,var_4::__detail::var_9<true,var_10,var_10>var_5>
                            **)(var_8 + -0x10),*(type_2 *)(var_8 + -0xc),
                          *(type_17 **)(var_8 + -8),*(type_12 *)(var_8 + -4));
      if ((var_12 != (type_7 *)0x0) && (var_12->_M_nxt != (type_5 *)0x0)) break;
      *(type_16 *)(var_8 + -0x10) = 0x10;
      *(type_16 *)(var_8 + -0x14) = 0x229b43;
      local_50 = (type_5 *)var_13(*(type_8 *)(var_8 + -0x10));
      local_50[1]._M_nxt = (type_5 *)pRVar4;
      local_50->_M_nxt = (type_5 *)0x0;
      local_50[2]._M_nxt = local_4c;
      *(type_16 *)(var_8 + -0x10) = 1;
      *(type_2 *)(var_8 + -0x14) = (this->referenced_list_)._M_h._M_element_count;
      *(type_2 *)(var_8 + -0x18) = (this->referenced_list_)._M_h._M_bucket_count;
      *(type_18 **)(var_8 + -0x1c) = &(this->referenced_list_)._M_h._M_rehash_policy;
      *(char **)(var_8 + -0x20) = local_34;
      *(type_16 *)(var_8 + -0x24) = 0x229b7b;
      std::__detail::_Prime_rehash_policy::var_14
                (*(type_8 *)(var_8 + -0x20),*(type_8 *)(var_8 + -0x1c),*(type_8 *)(var_8 + -0x18));
      var_6 = (type_11)var_15;
      if (local_34[0] == '\0') {
        var_19 = (this->referenced_list_)._M_h._M_buckets;
      }
      else {
        if (var_15 == 1) {
          var_19 = &(this->referenced_list_)._M_h._M_single_bucket;
          (this->referenced_list_)._M_h._M_single_bucket = (type_6)0x0;
        }
        else {
          if (0x3fffffff < var_15) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */
            *(type_10 **)(var_8 + -8) = &LAB_00229e0f;
            std::var_16();
          }
          iVar3 = var_15 * 4;
          *(int *)(var_8 + -0x14) = iVar3;
                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */
          *(type_16 *)(var_8 + -0x18) = 0x229bba;
          var_19 = (type_6 *)var_13(*(type_8 *)(var_8 + -0x14));
          *(int *)(var_8 + -0xc) = iVar3;
          *(type_16 *)(var_8 + -0x10) = 0;
          *(type_6 **)(var_8 + -0x14) = var_19;
          *(type_16 *)(var_8 + -0x18) = 0x229bcb;
          var_17(*(void **)(var_8 + -0x14),*(int *)(var_8 + -0x10),*(size_t *)(var_8 + -0xc));
        }
        var_23 = &(this->referenced_list_)._M_h._M_single_bucket;
        var_18 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (type_5 *)0x0;
        if (var_18 != (type_5 *)0x0) {
          local_4c = &(this->referenced_list_)._M_h._M_before_begin;
          var_25 = 0;
          do {
            while( true ) {
              var_21 = var_18->_M_nxt;
              var_20 = (type_8)var_18[3]._M_nxt % (type_8)var_6;
              var_22 = var_19 + var_20;
              if (*var_22 == (type_6)0x0) break;
              var_18->_M_nxt = (*var_22)->_M_nxt;
              (*var_22)->_M_nxt = var_18;
              var_20 = var_25;
LAB_00229c08:
              var_25 = var_20;
              var_18 = var_21;
              if (var_21 == (type_5 *)0x0) goto LAB_00229c50;
            }
            var_18->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
            (this->referenced_list_)._M_h._M_before_begin._M_nxt = var_18;
            *var_22 = local_4c;
            if (var_18->_M_nxt == (type_5 *)0x0) goto LAB_00229c08;
            var_19[var_25] = var_18;
            var_18 = var_21;
            var_25 = var_20;
          } while (var_21 != (type_5 *)0x0);
        }
LAB_00229c50:
        var_22 = (this->referenced_list_)._M_h._M_buckets;
        if (var_22 != var_23) {
          *(type_6 **)(var_8 + -0x14) = var_22;
          *(type_16 *)(var_8 + -0x18) = 0x229c67;
          var_24(*(void **)(var_8 + -0x14));
        }
        (this->referenced_list_)._M_h._M_bucket_count = (type_2)var_6;
        (this->referenced_list_)._M_h._M_buckets = var_19;
        var_25 = (type_8)var_7 % (type_8)var_6;
      }
      local_50[3]._M_nxt = (type_5 *)var_7;
      var_22 = var_19 + var_25;
      if (*var_22 == (type_6)0x0) {
        var_18 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
        (this->referenced_list_)._M_h._M_before_begin._M_nxt = local_50;
        local_50->_M_nxt = var_18;
        if (var_18 != (type_5 *)0x0) {
          var_19[(type_8)var_18[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] =
               local_50;
        }
        *var_22 = &(this->referenced_list_)._M_h._M_before_begin;
      }
      else {
        local_50->_M_nxt = (*var_22)->_M_nxt;
        (*var_22)->_M_nxt = local_50;
      }
      psVar1 = &(this->referenced_list_)._M_h._M_element_count;
      *psVar1 = *psVar1 + 1;
      var_26 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
      var_7 = (this->work_list_).
                 super__Vector_base<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
                 ._M_impl._M_finish;
      p_Var12 = var_28;
      if (var_26 != (type_3)0x0) {
        do {
          while ((var_27 = var_26, (type_4 *)var_27[1]._M_color < entry.first ||
                 (((type_4 *)var_27[1]._M_color == entry.first &&
                  (*(type_8 *)((int)(var_27 + 1) + 4) < entry.second))))) {
            pp_Var2 = &var_27->_M_right;
            var_26 = *pp_Var2;
            var_27 = &p_Var12->_M_header;
            if (*pp_Var2 == (type_3)0x0) goto LAB_00229cf4;
          }
          var_26 = var_27->_M_left;
          p_Var12 = (type_9 *)var_27;
        } while (var_27->_M_left != (type_3)0x0);
LAB_00229cf4:
        if (((var_28 != (type_9 *)var_27) &&
            ((type_4 *)((type_9 *)var_27)->_M_node_count <= entry.first)) &&
           ((entry.first != (type_4 *)((type_9 *)var_27)->_M_node_count ||
            (*(type_8 *)((int)var_27 + 0x14) <= entry.second)))) {
          var_29 = *(int **)((type_10 *)((int)var_27 + 0x14) + 0xc);
joined_r0x00229d0d:
          if (var_29 != (int *)0x0) {
            do {
              pRVar4 = (type_4 *)var_29[1];
              var_20 = var_29[2];
              var_6 = (type_11)(var_29 + 1);
              var_30 = (type_8)pRVar4 ^ var_20;
              *(type_8 *)(var_8 + -8) = var_30;
              *(type_11 *)(var_8 + -0xc) = var_6;
              *(type_8 *)(var_8 + -0x10) = var_30 % (this->referenced_list_)._M_h._M_bucket_count;
              *(type_14 **)(var_8 + -0x14) = local_38;
              *(type_16 *)(var_8 + -0x18) = 0x229d47;
              var_12 = var_1::
                       _Hashtable<var_1::var_32<var_2::type_4*,var_3>,var_4::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::var_32<var_2::type_4*,var_3>var_5>,_gold::Section_id_hash,var_4::__detail::_Mod_range_hashing,var_4::__detail::_Default_ranged_hash,var_4::__detail::type_18,var_4::__detail::var_9<true,var_10,var_10>var_5>
                       ::var_11
                                 (*(_Hashtable<var_1::var_32<var_2::type_4*,var_3>,var_4::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::var_32<var_2::type_4*,var_3>var_5>,_gold::Section_id_hash,var_4::__detail::_Mod_range_hashing,var_4::__detail::_Default_ranged_hash,var_4::__detail::type_18,var_4::__detail::var_9<true,var_10,var_10>var_5>
                                    **)(var_8 + -0x14),*(type_2 *)(var_8 + -0x10),
                                  *(type_17 **)(var_8 + -0xc),*(type_12 *)(var_8 + -8));
              if ((var_12 == (type_7 *)0x0) || (var_12->_M_nxt == (type_5 *)0x0)) {
                if (var_7 !=
                    (this->work_list_).
                    super__Vector_base<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
                    ._M_impl._M_end_of_storage) goto code_r0x00229d59;
                *(type_11 *)(var_8 + -0xc) = var_6;
                *(type_11 *)(var_8 + -0x10) = var_7;
                *(type_1 **)(var_8 + -0x14) = this;
                *(type_16 *)(var_8 + -0x18) = 0x229de1;
                var_1::
                var_31<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
                ::_M_realloc_insert<const_std::var_32<var_2::type_4*,var_3>&>
                          (*(var_31<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
                             **)(var_8 + -0x14),
                           *(var_32<var_2::type_4*,var_3> **)(var_8 + -0x10),
                           *(var_32<var_2::type_4*,var_3> **)(var_8 + -0xc));
                var_7 = (this->work_list_).
                           super__Vector_base<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
                           ._M_impl._M_finish;
              }
              var_29 = (int *)*var_29;
              if (var_29 == (int *)0x0) break;
            } while( true );
          }
        }
      }
      var_6 = (this->work_list_).
                 super__Vector_base<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
                 ._M_impl._M_start;
      var_8 = var_8 + -4;
      if (var_6 == var_7) goto LAB_00229d84;
    }
  }
LAB_00229d84:
  this->is_worklist_ready_ = true;
  return;
code_r0x00229d59:
  var_7->first = pRVar4;
  var_7->second = var_20;
  (this->work_list_).
  super__Vector_base<var_1::var_32<var_2::type_4*,var_3>,var_4::allocator<var_1::var_32<var_2::type_4*,var_3>var_5>var_5>
  ._M_impl._M_finish = var_7 + 1;
  var_29 = (int *)*var_29;
  var_7 = var_7 + 1;
  goto joined_r0x00229d0d;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  undefined4 *puVar5;
  uint uVar6;
  int *piVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  uint uVar10;
  undefined1 *puVar11;
  uint *puVar12;
  int aiStack_80 [9];
  undefined1 auStack_5c [4];
  undefined4 *local_58;
  undefined4 *local_54;
  int *local_50;
  undefined4 *local_4c;
  undefined **local_48;
  uint local_44;
  uint *local_40;
  uint *local_3c;
  undefined4 *local_38;
  char local_34 [4];
  uint local_30;
  uint local_24;
  undefined4 *local_20;
  
  local_48 = &__DT_PLTGOT;
  puVar11 = auStack_5c;
  local_3c = (uint *)*param_1;
  local_54 = param_1 + 5;
  puVar12 = (uint *)param_1[1];
  while (local_40 = puVar12, local_3c != local_40) {
    while( true ) {
      uVar10 = local_40[-2];
      local_4c = (undefined4 *)local_40[-1];
      puVar12 = local_40 + -2;
      param_1[1] = puVar12;
      local_38 = param_1 + 10;
      local_40 = (uint *)((uint)local_4c ^ uVar10);
      local_44 = (uint)local_40 % (uint)param_1[0xb];
      *(uint **)(puVar11 + -4) = local_40;
      *(uint **)(puVar11 + -8) = &local_24;
      *(uint *)(puVar11 + -0xc) = local_44;
      *(undefined4 **)(puVar11 + -0x10) = local_38;
      *(undefined4 *)(puVar11 + -0x14) = 0x229b29;
      local_24 = uVar10;
      local_20 = local_4c;
      piVar4 = (int *)FUN_000a8950();
      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;
      *(undefined4 *)(puVar11 + -0x10) = 0x10;
      *(undefined4 *)(puVar11 + -0x14) = 0x229b43;
      local_50 = (int *)FUN_00246670();
      local_50[1] = uVar10;
      *local_50 = 0;
      local_50[2] = (int)local_4c;
      *(undefined4 *)(puVar11 + -0x10) = 1;
      *(undefined4 *)(puVar11 + -0x14) = param_1[0xd];
      *(undefined4 *)(puVar11 + -0x18) = param_1[0xb];
      *(undefined4 **)(puVar11 + -0x1c) = param_1 + 0xe;
      *(char **)(puVar11 + -0x20) = local_34;
      *(undefined4 *)(puVar11 + -0x24) = 0x229b7b;
      FUN_0028d8d0();
      local_3c = (uint *)local_30;
      if (local_34[0] == '\0') {
        puVar5 = (undefined4 *)param_1[10];
      }
      else {
        if (local_30 == 1) {
          puVar5 = param_1 + 0x10;
          param_1[0x10] = 0;
        }
        else {
          if (0x3fffffff < local_30) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00229e0a to 00229e0e has its CatchHandler @ 00229e0f */
            *(undefined1 **)(puVar11 + -8) = &LAB_00229e0f;
            FUN_0028da60();
          }
          iVar2 = local_30 * 4;
          *(int *)(puVar11 + -0x14) = iVar2;
                    /* try { // try from 00229bb5 to 00229bb9 has its CatchHandler @ 00229e0f */
          *(undefined4 *)(puVar11 + -0x18) = 0x229bba;
          puVar5 = (undefined4 *)FUN_00246670();
          *(int *)(puVar11 + -0xc) = iVar2;
          *(undefined4 *)(puVar11 + -0x10) = 0;
          *(undefined4 **)(puVar11 + -0x14) = puVar5;
          *(undefined4 *)(puVar11 + -0x18) = 0x229bcb;
          memset(*(void **)(puVar11 + -0x14),*(int *)(puVar11 + -0x10),*(size_t *)(puVar11 + -0xc));
        }
        local_58 = param_1 + 0x10;
        piVar4 = (int *)param_1[0xc];
        param_1[0xc] = 0;
        if (piVar4 != (int *)0x0) {
          local_4c = param_1 + 0xc;
          local_44 = 0;
          do {
            while( true ) {
              piVar7 = (int *)*piVar4;
              uVar10 = (uint)piVar4[3] % (uint)local_3c;
              puVar8 = puVar5 + uVar10;
              if ((int *)*puVar8 == (int *)0x0) break;
              *piVar4 = *(int *)*puVar8;
              *(int **)*puVar8 = piVar4;
              uVar10 = local_44;
LAB_00229c08:
              local_44 = uVar10;
              piVar4 = piVar7;
              if (piVar7 == (int *)0x0) goto LAB_00229c50;
            }
            *piVar4 = param_1[0xc];
            param_1[0xc] = piVar4;
            *puVar8 = local_4c;
            if (*piVar4 == 0) goto LAB_00229c08;
            puVar5[local_44] = piVar4;
            piVar4 = piVar7;
            local_44 = uVar10;
          } while (piVar7 != (int *)0x0);
        }
LAB_00229c50:
        if ((undefined4 *)param_1[10] != local_58) {
          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];
          *(undefined4 *)(puVar11 + -0x18) = 0x229c67;
          FUN_00248220();
        }
        param_1[0xb] = local_3c;
        param_1[10] = puVar5;
        local_44 = (uint)local_40 % (uint)local_3c;
      }
      local_50[3] = (int)local_40;
      piVar4 = puVar5 + local_44;
      if ((int *)*piVar4 == (int *)0x0) {
        iVar2 = param_1[0xc];
        param_1[0xc] = local_50;
        *local_50 = iVar2;
        if (iVar2 != 0) {
          puVar5[*(uint *)(iVar2 + 0xc) % (uint)param_1[0xb]] = local_50;
        }
        *piVar4 = (int)(param_1 + 0xc);
      }
      else {
        *local_50 = *(int *)*piVar4;
        *(int **)*piVar4 = local_50;
      }
      param_1[0xd] = param_1[0xd] + 1;
      local_40 = (uint *)param_1[1];
      puVar5 = (undefined4 *)param_1[6];
      puVar8 = local_54;
      if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {
        do {
          while ((puVar9 = puVar5, (uint)puVar9[4] < local_24 ||
                 ((puVar9[4] == local_24 && ((undefined4 *)puVar9[5] < local_20))))) {
            puVar1 = puVar9 + 3;
            puVar5 = (undefined4 *)*puVar1;
            puVar9 = puVar8;
            if ((undefined4 *)*puVar1 == (undefined4 *)0x0) goto LAB_00229cf4;
          }
          puVar5 = (undefined4 *)puVar9[2];
          puVar8 = puVar9;
        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);
LAB_00229cf4:
        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&
           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {
          piVar4 = (int *)puVar9[8];
joined_r0x00229d0d:
          if (piVar4 != (int *)0x0) {
            do {
              uVar10 = piVar4[1];
              uVar3 = piVar4[2];
              local_3c = (uint *)(piVar4 + 1);
              uVar6 = uVar10 ^ uVar3;
              *(uint *)(puVar11 + -8) = uVar6;
              *(uint **)(puVar11 + -0xc) = local_3c;
              *(uint *)(puVar11 + -0x10) = uVar6 % (uint)param_1[0xb];
              *(undefined4 **)(puVar11 + -0x14) = local_38;
              *(undefined4 *)(puVar11 + -0x18) = 0x229d47;
              piVar7 = (int *)FUN_000a8950();
              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {
                if (local_40 != (uint *)param_1[2]) goto code_r0x00229d59;
                *(uint **)(puVar11 + -0xc) = local_3c;
                *(uint **)(puVar11 + -0x10) = local_40;
                *(undefined4 **)(puVar11 + -0x14) = param_1;
                *(undefined4 *)(puVar11 + -0x18) = 0x229de1;
                FUN_00229e20();
                local_40 = (uint *)param_1[1];
              }
              piVar4 = (int *)*piVar4;
              if (piVar4 == (int *)0x0) break;
            } while( true );
          }
        }
      }
      local_3c = (uint *)*param_1;
      puVar11 = puVar11 + -4;
      if (local_3c == local_40) goto LAB_00229d84;
    }
  }
LAB_00229d84:
  *(undefined1 *)(param_1 + 3) = 1;
  return;
code_r0x00229d59:
  *local_40 = uVar10;
  local_40[1] = uVar3;
  param_1[1] = local_40 + 2;
  piVar4 = (int *)*piVar4;
  local_40 = local_40 + 2;
  goto joined_r0x00229d0d;
}

