
/* 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;
  Relobj *pRVar3;
  _Hash_node_base *p_Var4;
  __bucket_type *pp_Var5;
  _Base_ptr p_Var6;
  uint uVar7;
  _Rb_tree_header *p_Var8;
  _Hash_node_base *__code;
  __node_base *p_Var9;
  _Hash_node_base *p_Var10;
  __bucket_type *__s;
  _Hash_node_base *p_Var11;
  _Base_ptr p_Var12;
  _Base_ptr p_Var13;
  uint uVar14;
  int *piVar15;
  __bucket_type *local_58;
  uint local_44;
  iterator local_40;
  pointer local_3c;
  char local_34 [4];
  uint local_30;
  Section_id entry;
  
  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_40._M_current =
       (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_Var8 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;
  while (local_3c != local_40._M_current) {
    while( true ) {
      pRVar3 = local_40._M_current[-1].first;
      p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;
      local_40._M_current = local_40._M_current + -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 = local_40._M_current;
      __code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);
      local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;
      entry.first = pRVar3;
      entry.second = (uint)p_Var11;
      p_Var9 = 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>_>
                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);
      if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;
      p_Var10 = (_Hash_node_base *)operator_new(0x10);
      p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;
      p_Var10->_M_nxt = (_Hash_node_base *)0x0;
      p_Var10[2]._M_nxt = p_Var11;
      std::__detail::_Prime_rehash_policy::_M_need_rehash
                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,
                 (this->referenced_list_)._M_h._M_bucket_count);
      uVar7 = local_30;
      if (local_34[0] == '\0') {
        __s = (this->referenced_list_)._M_h._M_buckets;
      }
      else {
        if (local_30 == 1) {
          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */
            std::__throw_bad_alloc();
          }
          uVar14 = local_30 * 4;
                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */
          __s = (__bucket_type *)operator_new(uVar14);
          memset(__s,0,uVar14);
        }
        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_44 = 0;
          do {
            while( true ) {
              p_Var4 = p_Var11->_M_nxt;
              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;
              pp_Var5 = __s + uVar14;
              if (*pp_Var5 == (__bucket_type)0x0) break;
              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;
              (*pp_Var5)->_M_nxt = p_Var11;
              uVar14 = local_44;
LAB_001c0298:
              local_44 = uVar14;
              p_Var11 = p_Var4;
              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;
            }
            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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;
            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;
            __s[local_44] = p_Var11;
            p_Var11 = p_Var4;
            local_44 = uVar14;
          } while (p_Var4 != (_Hash_node_base *)0x0);
        }
LAB_001c02e0:
        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;
        if (pp_Var5 != local_58) {
          operator_delete(pp_Var5);
        }
        (this->referenced_list_)._M_h._M_bucket_count = uVar7;
        (this->referenced_list_)._M_h._M_buckets = __s;
        local_44 = (uint)__code % uVar7;
      }
      p_Var10[3]._M_nxt = __code;
      pp_Var5 = __s + local_44;
      if (*pp_Var5 == (__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 = p_Var10;
        p_Var10->_M_nxt = p_Var11;
        if (p_Var11 != (_Hash_node_base *)0x0) {
          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;
        }
        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;
      }
      else {
        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;
        (*pp_Var5)->_M_nxt = p_Var10;
      }
      psVar1 = &(this->referenced_list_)._M_h._M_element_count;
      *psVar1 = *psVar1 + 1;
      p_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
      local_40._M_current =
           (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 = &p_Var8->_M_header;
      if (p_Var6 != (_Base_ptr)0x0) {
        do {
          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;
            p_Var13 = p_Var12;
            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;
          }
          p_Var6 = p_Var13->_M_left;
          p_Var12 = p_Var13;
        } while (p_Var13->_M_left != (_Base_ptr)0x0);
LAB_001c0384:
        if (((p_Var8 != (_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_r0x001c039d:
          if (piVar15 != (int *)0x0) {
            do {
              pRVar3 = (Relobj *)piVar15[1];
              uVar7 = piVar15[2];
              uVar14 = (uint)pRVar3 ^ uVar7;
              p_Var9 = 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>_>
                                   *)&this->referenced_list_,
                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,
                                  (key_type *)(piVar15 + 1),uVar14);
              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {
                if (local_40._M_current !=
                    (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_r0x001c03e9;
                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>&>
                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));
                local_40._M_current =
                     (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;
      if (local_3c == local_40._M_current) goto LAB_001c0414;
    }
  }
LAB_001c0414:
  this->is_worklist_ready_ = true;
  return;
code_r0x001c03e9:
  (local_40._M_current)->first = pRVar3;
  (local_40._M_current)->second = uVar7;
  (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._M_current + 1;
  piVar15 = (int *)*piVar15;
  local_40._M_current = local_40._M_current + 1;
  goto joined_r0x001c039d;
}



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

void FUN_001c0140(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) = 0x1c01b9;
      local_24 = uVar10;
      local_20 = local_4c;
      piVar4 = (int *)FUN_000a91b0();
      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;
      *(undefined4 *)(puVar11 + -0x10) = 0x10;
      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;
      local_50 = (int *)FUN_001e5200();
      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) = 0x1c020b;
      FUN_0022c460();
      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 001c049a to 001c049e has its CatchHandler @ 001c049f */
            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;
            FUN_0022c5f0();
          }
          iVar2 = local_30 * 4;
          *(int *)(puVar11 + -0x14) = iVar2;
                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */
          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;
          puVar5 = (undefined4 *)FUN_001e5200();
          *(int *)(puVar11 + -0xc) = iVar2;
          *(undefined4 *)(puVar11 + -0x10) = 0;
          *(undefined4 **)(puVar11 + -0x14) = puVar5;
          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;
          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_001c0298:
              local_44 = uVar10;
              piVar4 = piVar7;
              if (piVar7 == (int *)0x0) goto LAB_001c02e0;
            }
            *piVar4 = param_1[0xc];
            param_1[0xc] = piVar4;
            *puVar8 = local_4c;
            if (*piVar4 == 0) goto LAB_001c0298;
            puVar5[local_44] = piVar4;
            piVar4 = piVar7;
            local_44 = uVar10;
          } while (piVar7 != (int *)0x0);
        }
LAB_001c02e0:
        if ((undefined4 *)param_1[10] != local_58) {
          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];
          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;
          FUN_001e6db0();
        }
        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_001c0384;
          }
          puVar5 = (undefined4 *)puVar9[2];
          puVar8 = puVar9;
        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);
LAB_001c0384:
        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&
           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {
          piVar4 = (int *)puVar9[8];
joined_r0x001c039d:
          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) = 0x1c03d7;
              piVar7 = (int *)FUN_000a91b0();
              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {
                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;
                *(uint **)(puVar11 + -0xc) = local_3c;
                *(uint **)(puVar11 + -0x10) = local_40;
                *(undefined4 **)(puVar11 + -0x14) = param_1;
                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;
                FUN_001c04b0();
                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_001c0414;
    }
  }
LAB_001c0414:
  *(undefined1 *)(param_1 + 3) = 1;
  return;
code_r0x001c03e9:
  *local_40 = uVar10;
  local_40[1] = uVar3;
  param_1[1] = local_40 + 2;
  piVar4 = (int *)*piVar4;
  local_40 = local_40 + 2;
  goto joined_r0x001c039d;
}


CALL 0x000559e6
ADD EAX,0x1ceebb
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 0x001c0414
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 0x000a91b0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001c01c6
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x001c0170
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x44]
PUSH 0x10
CALL 0x001e5200
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 0x0022c460
MOV EAX,dword ptr [EBP + -0x2c]
ADD ESP,0x1c
CMP byte ptr [EBP + -0x30],0x0
MOV dword ptr [EBP + -0x38],EAX
JZ 0x001c0318
CMP EAX,0x1
JZ 0x001c0482
CMP dword ptr [EBP + -0x38],0x3fffffff
JA 0x001c0497
MOV EAX,dword ptr [EBP + -0x38]
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x44]
LEA EDI,[EAX*0x4 + 0x0]
PUSH EDI
CALL 0x001e5200
ADD ESP,0xc
MOV EBX,dword ptr [EBP + -0x44]
MOV ESI,EAX
PUSH EDI
PUSH 0x0
PUSH EAX
CALL 0x000292f0
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 0x001c02e0
ADD EAX,0x30
MOV dword ptr [EBP + -0x40],0x0
MOV dword ptr [EBP + -0x48],EAX
JMP 0x001c029e
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 0x001c02e0
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 0x001c0290
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 0x001c0428
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 0x001c029e
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x28]
CMP EAX,dword ptr [EBP + -0x54]
JZ 0x001c02fa
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x44]
PUSH EAX
CALL 0x001e6db0
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 0x001c031e
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 0x001c0430
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 0x001c0403
MOV EDX,dword ptr [EBP + -0x20]
MOV EBX,dword ptr [EBP + -0x1c]
MOV ECX,dword ptr [EBP + -0x50]
JMP 0x001c0378
JNZ 0x001c036f
CMP dword ptr [EAX + 0x14],EBX
JC 0x001c037d
MOV ECX,EAX
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x001c0384
CMP dword ptr [EAX + 0x10],EDX
JNC 0x001c0368
MOV EAX,dword ptr [EAX + 0xc]
TEST EAX,EAX
JNZ 0x001c0378
MOV EAX,dword ptr [EBP + 0x8]
CMP dword ptr [EBP + -0x50],ECX
JZ 0x001c0406
CMP EDX,dword ptr [ECX + 0x10]
JC 0x001c0403
JNZ 0x001c0398
CMP EBX,dword ptr [ECX + 0x14]
JC 0x001c0403
MOV EBX,dword ptr [ECX + 0x20]
TEST EBX,EBX
JZ 0x001c0403
MOV dword ptr [EBP + -0x3c],ESI
JMP 0x001c03b4
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x001c03de
MOV EBX,dword ptr [EBX]
TEST EBX,EBX
JZ 0x001c0400
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 0x000a91b0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001c03a8
MOV EDX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EBP + -0x3c]
CMP EAX,dword ptr [EDX + 0x8]
JZ 0x001c0460
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 0x001c03b4
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 0x001c0179
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 0x001c0298
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 0x001c0452
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 0x001c033f
SUB ESP,0x4
PUSH dword ptr [EBP + -0x38]
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + 0x8]
CALL 0x001c04b0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [EBP + -0x3c],EAX
JMP 0x001c03ae
MOV EAX,dword ptr [EBP + 0x8]
LEA ESI,[EAX + 0x40]
MOV dword ptr [EAX + 0x40],0x0
MOV dword ptr [EBP + -0x54],ESI
JMP 0x001c0267
MOV EBX,dword ptr [EBP + -0x44]
CALL 0x0022c5f0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_001c0140(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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\n    }\n  }\nLAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x001c03e9:\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_r0x001c039d;\n}\n\n" comment (function_definition "void FUN_001c0140(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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\n    }\n  }\nLAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x001c03e9:\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_r0x001c039d;\n}" primitive_type (function_declarator "FUN_001c0140(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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\n    }\n  }\nLAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x001c03e9:\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_r0x001c039d;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x1c01b9" (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_000a91b0();" (assignment_expression "piVar4 = (int *)FUN_000a91b0()" identifier = (cast_expression "(int *)FUN_000a91b0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000a91b0()" 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) = 0x1c01d3;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x1c01d3" (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_001e5200();" (assignment_expression "local_50 = (int *)FUN_001e5200()" identifier = (cast_expression "(int *)FUN_001e5200()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" 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) = 0x1c020b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x1c020b" (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_0022c460();" (call_expression "FUN_0022c460()" 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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }" { comment comment (expression_statement "*(undefined1 **)(puVar11 + -8) = &LAB_001c049f;" (assignment_expression "*(undefined1 **)(puVar11 + -8) = &LAB_001c049f" (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_001c049f" & identifier)) ;) (expression_statement "FUN_0022c5f0();" (call_expression "FUN_0022c5f0()" 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) = 0x1c024a;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c024a" (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_001e5200();" (assignment_expression "puVar5 = (undefined4 *)FUN_001e5200()" identifier = (cast_expression "(undefined4 *)FUN_001e5200()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" 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) = 0x1c025b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c025b" (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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\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_001c0298:\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_001c02e0;" 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_001c02e0;" 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_001c0298;" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (goto_statement "goto LAB_001c0298;" 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_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\n        }" statement_identifier : (if_statement "if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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) = 0x1c02f7;\n          FUN_001e6db0();\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) = 0x1c02f7;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c02f7" (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_001e6db0();" (call_expression "FUN_001e6db0()" 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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0384;\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_001c0384;\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_001c0384;\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_001c0384;\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_001c0384;" 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_001c0384;" 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_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c03d7" (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_000a91b0();" (assignment_expression "piVar7 = (int *)FUN_000a91b0()" identifier = (cast_expression "(int *)FUN_000a91b0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000a91b0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\n                local_40 = (uint *)param_1[1];\n              }" { (if_statement "if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;" 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_r0x001c03e9;" 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) = 0x1c0471;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c0471" (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_001c04b0();" (call_expression "FUN_001c04b0()" 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_001c0414;" if (parenthesized_expression "(local_3c == local_40)" ( (binary_expression "local_3c == local_40" identifier == identifier) )) (goto_statement "goto LAB_001c0414;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_001c0414:\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_r0x001c03e9:\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_r0x001c039d;" 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  Relobj *pRVar3;\n  _Hash_node_base *p_Var4;\n  __bucket_type *pp_Var5;\n  _Base_ptr p_Var6;\n  uint uVar7;\n  _Rb_tree_header *p_Var8;\n  _Hash_node_base *__code;\n  __node_base *p_Var9;\n  _Hash_node_base *p_Var10;\n  __bucket_type *__s;\n  _Hash_node_base *p_Var11;\n  _Base_ptr p_Var12;\n  _Base_ptr p_Var13;\n  uint uVar14;\n  int *piVar15;\n  __bucket_type *local_58;\n  uint local_44;\n  iterator local_40;\n  pointer local_3c;\n  char local_34 [4];\n  uint local_30;\n  Section_id entry;\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  local_40._M_current =\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;\n  p_Var8 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  while (local_3c != local_40._M_current) {\n    while( true ) {\n      pRVar3 = local_40._M_current[-1].first;\n      p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;\n      local_40._M_current = local_40._M_current + -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 = local_40._M_current;\n      __code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);\n      local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;\n      entry.first = pRVar3;\n      entry.second = (uint)p_Var11;\n      p_Var9 = 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);\n      if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var10 = (_Hash_node_base *)operator_new(0x10);\n      p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;\n      p_Var10->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var10[2]._M_nxt = p_Var11;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);\n      uVar7 = local_30;\n      if (local_34[0] == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }\n      p_Var10[3]._M_nxt = __code;\n      pp_Var5 = __s + local_44;\n      if (*pp_Var5 == (__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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40._M_current =\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;\n      p_Var12 = &p_Var8->_M_header;\n      if (p_Var6 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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      if (local_3c == local_40._M_current) goto LAB_001c0414;\n    }\n  }\nLAB_001c0414:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x001c03e9:\n  (local_40._M_current)->first = pRVar3;\n  (local_40._M_current)->second = uVar7;\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._M_current + 1;\n  piVar15 = (int *)*piVar15;\n  local_40._M_current = local_40._M_current + 1;\n  goto joined_r0x001c039d;\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  Relobj *pRVar3;\n  _Hash_node_base *p_Var4;\n  __bucket_type *pp_Var5;\n  _Base_ptr p_Var6;\n  uint uVar7;\n  _Rb_tree_header *p_Var8;\n  _Hash_node_base *__code;\n  __node_base *p_Var9;\n  _Hash_node_base *p_Var10;\n  __bucket_type *__s;\n  _Hash_node_base *p_Var11;\n  _Base_ptr p_Var12;\n  _Base_ptr p_Var13;\n  uint uVar14;\n  int *piVar15;\n  __bucket_type *local_58;\n  uint local_44;\n  iterator local_40;\n  pointer local_3c;\n  char local_34 [4];\n  uint local_30;\n  Section_id entry;\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  local_40._M_current =\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;\n  p_Var8 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  while (local_3c != local_40._M_current) {\n    while( true ) {\n      pRVar3 = local_40._M_current[-1].first;\n      p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;\n      local_40._M_current = local_40._M_current + -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 = local_40._M_current;\n      __code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);\n      local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;\n      entry.first = pRVar3;\n      entry.second = (uint)p_Var11;\n      p_Var9 = 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);\n      if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var10 = (_Hash_node_base *)operator_new(0x10);\n      p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;\n      p_Var10->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var10[2]._M_nxt = p_Var11;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);\n      uVar7 = local_30;\n      if (local_34[0] == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }\n      p_Var10[3]._M_nxt = __code;\n      pp_Var5 = __s + local_44;\n      if (*pp_Var5 == (__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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40._M_current =\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;\n      p_Var12 = &p_Var8->_M_header;\n      if (p_Var6 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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      if (local_3c == local_40._M_current) goto LAB_001c0414;\n    }\n  }\nLAB_001c0414:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x001c03e9:\n  (local_40._M_current)->first = pRVar3;\n  (local_40._M_current)->second = uVar7;\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._M_current + 1;\n  piVar15 = (int *)*piVar15;\n  local_40._M_current = local_40._M_current + 1;\n  goto joined_r0x001c039d;\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  Relobj *pRVar3;\n  _Hash_node_base *p_Var4;\n  __bucket_type *pp_Var5;\n  _Base_ptr p_Var6;\n  uint uVar7;\n  _Rb_tree_header *p_Var8;\n  _Hash_node_base *__code;\n  __node_base *p_Var9;\n  _Hash_node_base *p_Var10;\n  __bucket_type *__s;\n  _Hash_node_base *p_Var11;\n  _Base_ptr p_Var12;\n  _Base_ptr p_Var13;\n  uint uVar14;\n  int *piVar15;\n  __bucket_type *local_58;\n  uint local_44;\n  iterator local_40;\n  pointer local_3c;\n  char local_34 [4];\n  uint local_30;\n  Section_id entry;\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  local_40._M_current =\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;\n  p_Var8 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  while (local_3c != local_40._M_current) {\n    while( true ) {\n      pRVar3 = local_40._M_current[-1].first;\n      p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;\n      local_40._M_current = local_40._M_current + -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 = local_40._M_current;\n      __code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);\n      local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;\n      entry.first = pRVar3;\n      entry.second = (uint)p_Var11;\n      p_Var9 = 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);\n      if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var10 = (_Hash_node_base *)operator_new(0x10);\n      p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;\n      p_Var10->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var10[2]._M_nxt = p_Var11;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);\n      uVar7 = local_30;\n      if (local_34[0] == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }\n      p_Var10[3]._M_nxt = __code;\n      pp_Var5 = __s + local_44;\n      if (*pp_Var5 == (__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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40._M_current =\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;\n      p_Var12 = &p_Var8->_M_header;\n      if (p_Var6 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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      if (local_3c == local_40._M_current) goto LAB_001c0414;\n    }\n  }\nLAB_001c0414:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x001c03e9:\n  (local_40._M_current)->first = pRVar3;\n  (local_40._M_current)->second = uVar7;\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._M_current + 1;\n  piVar15 = (int *)*piVar15;\n  local_40._M_current = local_40._M_current + 1;\n  goto joined_r0x001c039d;\n}" { (declaration "size_type *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "_Base_ptr *pp_Var2;" type_identifier (pointer_declarator "*pp_Var2" * identifier) ;) (declaration "Relobj *pRVar3;" type_identifier (pointer_declarator "*pRVar3" * identifier) ;) (declaration "_Hash_node_base *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "__bucket_type *pp_Var5;" type_identifier (pointer_declarator "*pp_Var5" * identifier) ;) (declaration "_Base_ptr p_Var6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "_Rb_tree_header *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "_Hash_node_base *__code;" type_identifier (pointer_declarator "*__code" * identifier) ;) (declaration "__node_base *p_Var9;" type_identifier (pointer_declarator "*p_Var9" * identifier) ;) (declaration "_Hash_node_base *p_Var10;" type_identifier (pointer_declarator "*p_Var10" * identifier) ;) (declaration "__bucket_type *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "_Hash_node_base *p_Var11;" type_identifier (pointer_declarator "*p_Var11" * identifier) ;) (declaration "_Base_ptr p_Var12;" type_identifier 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 "__bucket_type *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "iterator local_40;" type_identifier identifier ;) (declaration "pointer local_3c;" type_identifier 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_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_40._M_current =\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;" (field_expression "local_40._M_current =\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" (field_expression "local_40._M_current =\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._M_current =\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._M_current =\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._M_current =\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._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_40._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_40._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_40._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold" (assignment_expression "local_40._M_current =\n       (this->work_list_).\n       super__Vector_base<std" (field_expression "local_40._M_current" identifier . field_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_Var8 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var8 = &(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))) ;) (while_statement "while (local_3c != local_40._M_current) {\n    while( true ) {\n      pRVar3 = local_40._M_current[-1].first;\n      p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;\n      local_40._M_current = local_40._M_current + -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 = local_40._M_current;\n      __code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);\n      local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;\n      entry.first = pRVar3;\n      entry.second = (uint)p_Var11;\n      p_Var9 = 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);\n      if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var10 = (_Hash_node_base *)operator_new(0x10);\n      p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;\n      p_Var10->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var10[2]._M_nxt = p_Var11;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);\n      uVar7 = local_30;\n      if (local_34[0] == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }\n      p_Var10[3]._M_nxt = __code;\n      pp_Var5 = __s + local_44;\n      if (*pp_Var5 == (__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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40._M_current =\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;\n      p_Var12 = &p_Var8->_M_header;\n      if (p_Var6 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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      if (local_3c == local_40._M_current) goto LAB_001c0414;\n    }\n  }" while (parenthesized_expression "(local_3c != local_40._M_current)" ( (binary_expression "local_3c != local_40._M_current" identifier != (field_expression "local_40._M_current" identifier . field_identifier)) )) (compound_statement "{\n    while( true ) {\n      pRVar3 = local_40._M_current[-1].first;\n      p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;\n      local_40._M_current = local_40._M_current + -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 = local_40._M_current;\n      __code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);\n      local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;\n      entry.first = pRVar3;\n      entry.second = (uint)p_Var11;\n      p_Var9 = 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);\n      if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var10 = (_Hash_node_base *)operator_new(0x10);\n      p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;\n      p_Var10->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var10[2]._M_nxt = p_Var11;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);\n      uVar7 = local_30;\n      if (local_34[0] == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }\n      p_Var10[3]._M_nxt = __code;\n      pp_Var5 = __s + local_44;\n      if (*pp_Var5 == (__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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40._M_current =\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;\n      p_Var12 = &p_Var8->_M_header;\n      if (p_Var6 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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      if (local_3c == local_40._M_current) goto LAB_001c0414;\n    }\n  }" { (while_statement "while( true ) {\n      pRVar3 = local_40._M_current[-1].first;\n      p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;\n      local_40._M_current = local_40._M_current + -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 = local_40._M_current;\n      __code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);\n      local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;\n      entry.first = pRVar3;\n      entry.second = (uint)p_Var11;\n      p_Var9 = 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);\n      if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var10 = (_Hash_node_base *)operator_new(0x10);\n      p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;\n      p_Var10->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var10[2]._M_nxt = p_Var11;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);\n      uVar7 = local_30;\n      if (local_34[0] == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }\n      p_Var10[3]._M_nxt = __code;\n      pp_Var5 = __s + local_44;\n      if (*pp_Var5 == (__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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40._M_current =\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;\n      p_Var12 = &p_Var8->_M_header;\n      if (p_Var6 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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      if (local_3c == local_40._M_current) goto LAB_001c0414;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pRVar3 = local_40._M_current[-1].first;\n      p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;\n      local_40._M_current = local_40._M_current + -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 = local_40._M_current;\n      __code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);\n      local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;\n      entry.first = pRVar3;\n      entry.second = (uint)p_Var11;\n      p_Var9 = 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);\n      if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var10 = (_Hash_node_base *)operator_new(0x10);\n      p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;\n      p_Var10->_M_nxt = (_Hash_node_base *)0x0;\n      p_Var10[2]._M_nxt = p_Var11;\n      std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);\n      uVar7 = local_30;\n      if (local_34[0] == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }\n      p_Var10[3]._M_nxt = __code;\n      pp_Var5 = __s + local_44;\n      if (*pp_Var5 == (__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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }\n      psVar1 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar1 = *psVar1 + 1;\n      p_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      local_40._M_current =\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;\n      p_Var12 = &p_Var8->_M_header;\n      if (p_Var6 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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      if (local_3c == local_40._M_current) goto LAB_001c0414;\n    }" { (expression_statement "pRVar3 = local_40._M_current[-1].first;" (assignment_expression "pRVar3 = local_40._M_current[-1].first" identifier = (field_expression "local_40._M_current[-1].first" (subscript_expression "local_40._M_current[-1]" (field_expression "local_40._M_current" identifier . field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second;" (assignment_expression "p_Var11 = (_Hash_node_base *)local_40._M_current[-1].second" identifier = (cast_expression "(_Hash_node_base *)local_40._M_current[-1].second" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_40._M_current[-1].second" (subscript_expression "local_40._M_current[-1]" (field_expression "local_40._M_current" identifier . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "local_40._M_current = local_40._M_current + -1;" (assignment_expression "local_40._M_current = local_40._M_current + -1" (field_expression "local_40._M_current" identifier . field_identifier) = (binary_expression "local_40._M_current + -1" (field_expression "local_40._M_current" identifier . field_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 = local_40._M_current;" (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._M_current" (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) = (field_expression "local_40._M_current" identifier . field_identifier)) ;) (expression_statement "__code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3);" (assignment_expression "__code = (_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3)" identifier = (cast_expression "(_Hash_node_base *)((uint)p_Var11 ^ (uint)pRVar3)" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)p_Var11 ^ (uint)pRVar3)" ( (binary_expression "(uint)p_Var11 ^ (uint)pRVar3" (cast_expression "(uint)p_Var11" ( (type_descriptor "uint" type_identifier) ) identifier) ^ (cast_expression "(uint)pRVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) (expression_statement "local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count;" (assignment_expression "local_44 = (uint)__code % (this->referenced_list_)._M_h._M_bucket_count" identifier = (binary_expression "(uint)__code % (this->referenced_list_)._M_h._M_bucket_count" (cast_expression "(uint)__code" ( (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 "entry.first = pRVar3;" (assignment_expression "entry.first = pRVar3" (field_expression "entry.first" identifier . field_identifier) = identifier) ;) (expression_statement "entry.second = (uint)p_Var11;" (assignment_expression "entry.second = (uint)p_Var11" (field_expression "entry.second" identifier . field_identifier) = (cast_expression "(uint)p_Var11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (ERROR "p_Var9 = 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_Var9 = 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);" 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);" 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);" 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);" 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code);" (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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code)" (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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code)" 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code)" (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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code)" 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                           *)&this->referenced_list_,local_44,&entry,(__hash_code)__code)" ( (binary_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                           *)&this->referenced_list_" (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 "*" * identifier)))) )) & (field_expression "this->referenced_list_" identifier -> field_identifier)) , identifier , (pointer_expression "&entry" & identifier) , (cast_expression "(__hash_code)__code" ( (type_descriptor "__hash_code" type_identifier) ) identifier) )))))) ;))))) (if_statement "if ((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)) break;" if (parenthesized_expression "((p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0))" ( (binary_expression "(p_Var9 != (__node_base *)0x0) && (p_Var9->_M_nxt != (_Hash_node_base *)0x0)" (parenthesized_expression "(p_Var9 != (__node_base *)0x0)" ( (binary_expression "p_Var9 != (__node_base *)0x0" identifier != (cast_expression "(__node_base *)0x0" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(p_Var9->_M_nxt != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var9->_M_nxt != (_Hash_node_base *)0x0" (field_expression "p_Var9->_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 "p_Var10 = (_Hash_node_base *)operator_new(0x10);" (assignment_expression "p_Var10 = (_Hash_node_base *)operator_new(0x10)" identifier = (cast_expression "(_Hash_node_base *)operator_new(0x10)" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3;" (assignment_expression "p_Var10[1]._M_nxt = (_Hash_node_base *)pRVar3" (field_expression "p_Var10[1]._M_nxt" (subscript_expression "p_Var10[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Hash_node_base *)pRVar3" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "p_Var10->_M_nxt = (_Hash_node_base *)0x0;" (assignment_expression "p_Var10->_M_nxt = (_Hash_node_base *)0x0" (field_expression "p_Var10->_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 "p_Var10[2]._M_nxt = p_Var11;" (assignment_expression "p_Var10[2]._M_nxt = p_Var11" (field_expression "p_Var10[2]._M_nxt" (subscript_expression "p_Var10[2]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (labeled_statement "std::__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);" statement_identifier : (ERROR ":" :) (labeled_statement "__detail::_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);" statement_identifier : (ERROR ":" :) (labeled_statement "_Prime_rehash_policy::_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);" statement_identifier : (ERROR ":" :) (expression_statement "_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count);" (call_expression "_M_need_rehash\n                ((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count)" identifier (argument_list "((uint)local_34,(uint)&(this->referenced_list_)._M_h._M_rehash_policy,\n                 (this->referenced_list_)._M_h._M_bucket_count)" ( (cast_expression "(uint)local_34" ( (type_descriptor "uint" type_identifier) ) identifier) , (binary_expression "(uint)&(this->referenced_list_)._M_h._M_rehash_policy" (parenthesized_expression "(uint)" ( identifier )) & (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)) , (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 "uVar7 = local_30;" (assignment_expression "uVar7 = local_30" identifier = identifier) ;) (if_statement "if (local_34[0] == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\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        __s = (this->referenced_list_)._M_h._M_buckets;\n      }" { (expression_statement "__s = (this->referenced_list_)._M_h._M_buckets;" (assignment_expression "__s = (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          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }" else (compound_statement "{\n        if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }\nLAB_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = uVar7;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n        local_44 = (uint)__code % uVar7;\n      }" { (if_statement "if (local_30 == 1) {\n          __s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\n        }" if (parenthesized_expression "(local_30 == 1)" ( (binary_expression "local_30 == 1" identifier == number_literal) )) (compound_statement "{\n          __s = &(this->referenced_list_)._M_h._M_single_bucket;\n          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;\n        }" { (expression_statement "__s = &(this->referenced_list_)._M_h._M_single_bucket;" (assignment_expression "__s = &(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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\n        }" else (compound_statement "{\n          if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }\n          uVar14 = local_30 * 4;\n                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */\n          __s = (__bucket_type *)operator_new(uVar14);\n          memset(__s,0,uVar14);\n        }" { (if_statement "if (0x3fffffff < local_30) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001c049a to 001c049e has its CatchHandler @ 001c049f */\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 001c049a to 001c049e has its CatchHandler @ 001c049f */\n            std::__throw_bad_alloc();\n          }" { comment comment (labeled_statement "std::__throw_bad_alloc();" statement_identifier : (ERROR ":" :) (expression_statement "__throw_bad_alloc();" (call_expression "__throw_bad_alloc()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "uVar14 = local_30 * 4;" (assignment_expression "uVar14 = local_30 * 4" identifier = (binary_expression "local_30 * 4" identifier * number_literal)) ;) comment (expression_statement "__s = (__bucket_type *)operator_new(uVar14);" (assignment_expression "__s = (__bucket_type *)operator_new(uVar14)" identifier = (cast_expression "(__bucket_type *)operator_new(uVar14)" ( (type_descriptor "__bucket_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(uVar14)" identifier (argument_list "(uVar14)" ( identifier ))))) ;) (expression_statement "memset(__s,0,uVar14);" (call_expression "memset(__s,0,uVar14)" identifier (argument_list "(__s,0,uVar14)" ( identifier , number_literal , identifier ))) ;) }))) (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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_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_44 = 0;\n          do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);\n        }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          } while (p_Var4 != (_Hash_node_base *)0x0);" do (compound_statement "{\n            while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;\n            __s[local_44] = p_Var11;\n            p_Var11 = p_Var4;\n            local_44 = uVar14;\n          }" { (while_statement "while( true ) {\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              p_Var4 = p_Var11->_M_nxt;\n              uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;\n              pp_Var5 = __s + uVar14;\n              if (*pp_Var5 == (__bucket_type)0x0) break;\n              p_Var11->_M_nxt = (*pp_Var5)->_M_nxt;\n              (*pp_Var5)->_M_nxt = p_Var11;\n              uVar14 = local_44;\nLAB_001c0298:\n              local_44 = uVar14;\n              p_Var11 = p_Var4;\n              if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;\n            }" { (expression_statement "p_Var4 = p_Var11->_M_nxt;" (assignment_expression "p_Var4 = p_Var11->_M_nxt" identifier = (field_expression "p_Var11->_M_nxt" identifier -> field_identifier)) ;) (expression_statement "uVar14 = (uint)p_Var11[3]._M_nxt % uVar7;" (assignment_expression "uVar14 = (uint)p_Var11[3]._M_nxt % uVar7" identifier = (binary_expression "(uint)p_Var11[3]._M_nxt % uVar7" (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)) % identifier)) ;) (expression_statement "pp_Var5 = __s + uVar14;" (assignment_expression "pp_Var5 = __s + uVar14" identifier = (binary_expression "__s + uVar14" identifier + identifier)) ;) (if_statement "if (*pp_Var5 == (__bucket_type)0x0) break;" if (parenthesized_expression "(*pp_Var5 == (__bucket_type)0x0)" ( (binary_expression "*pp_Var5 == (__bucket_type)0x0" (pointer_expression "*pp_Var5" * 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_Var5)->_M_nxt;" (assignment_expression "p_Var11->_M_nxt = (*pp_Var5)->_M_nxt" (field_expression "p_Var11->_M_nxt" identifier -> field_identifier) = (field_expression "(*pp_Var5)->_M_nxt" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) -> field_identifier)) ;) (expression_statement "(*pp_Var5)->_M_nxt = p_Var11;" (assignment_expression "(*pp_Var5)->_M_nxt = p_Var11" (field_expression "(*pp_Var5)->_M_nxt" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) -> field_identifier) = identifier) ;) (expression_statement "uVar14 = local_44;" (assignment_expression "uVar14 = local_44" identifier = identifier) ;) (labeled_statement "LAB_001c0298:\n              local_44 = uVar14;" statement_identifier : (expression_statement "local_44 = uVar14;" (assignment_expression "local_44 = uVar14" identifier = identifier) ;)) (expression_statement "p_Var11 = p_Var4;" (assignment_expression "p_Var11 = p_Var4" identifier = identifier) ;) (if_statement "if (p_Var4 == (_Hash_node_base *)0x0) goto LAB_001c02e0;" if (parenthesized_expression "(p_Var4 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var4 == (_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_001c02e0;" 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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;" (assignment_expression "*pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin" (pointer_expression "*pp_Var5" * 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))) ;) (if_statement "if (p_Var11->_M_nxt == (_Hash_node_base *)0x0) goto LAB_001c0298;" 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_001c0298;" goto statement_identifier ;)) (expression_statement "__s[local_44] = p_Var11;" (assignment_expression "__s[local_44] = p_Var11" (subscript_expression "__s[local_44]" identifier [ identifier ]) = identifier) ;) (expression_statement "p_Var11 = p_Var4;" (assignment_expression "p_Var11 = p_Var4" identifier = identifier) ;) (expression_statement "local_44 = uVar14;" (assignment_expression "local_44 = uVar14" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var4 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var4 != (_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_001c02e0:\n        pp_Var5 = (this->referenced_list_)._M_h._M_buckets;" statement_identifier : (expression_statement "pp_Var5 = (this->referenced_list_)._M_h._M_buckets;" (assignment_expression "pp_Var5 = (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_Var5 != local_58) {\n          operator_delete(pp_Var5);\n        }" if (parenthesized_expression "(pp_Var5 != local_58)" ( (binary_expression "pp_Var5 != local_58" identifier != identifier) )) (compound_statement "{\n          operator_delete(pp_Var5);\n        }" { (expression_statement "operator_delete(pp_Var5);" (call_expression "operator_delete(pp_Var5)" identifier (argument_list "(pp_Var5)" ( identifier ))) ;) })) (expression_statement "(this->referenced_list_)._M_h._M_bucket_count = uVar7;" (assignment_expression "(this->referenced_list_)._M_h._M_bucket_count = uVar7" (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 "(this->referenced_list_)._M_h._M_buckets = __s;" (assignment_expression "(this->referenced_list_)._M_h._M_buckets = __s" (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)__code % uVar7;" (assignment_expression "local_44 = (uint)__code % uVar7" identifier = (binary_expression "(uint)__code % uVar7" (cast_expression "(uint)__code" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier)) ;) }))) (expression_statement "p_Var10[3]._M_nxt = __code;" (assignment_expression "p_Var10[3]._M_nxt = __code" (field_expression "p_Var10[3]._M_nxt" (subscript_expression "p_Var10[3]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pp_Var5 = __s + local_44;" (assignment_expression "pp_Var5 = __s + local_44" identifier = (binary_expression "__s + local_44" identifier + identifier)) ;) (if_statement "if (*pp_Var5 == (__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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }" if (parenthesized_expression "(*pp_Var5 == (__bucket_type)0x0)" ( (binary_expression "*pp_Var5 == (__bucket_type)0x0" (pointer_expression "*pp_Var5" * 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 = p_Var10;\n        p_Var10->_M_nxt = p_Var11;\n        if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }\n        *pp_Var5 = &(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 = p_Var10;" (assignment_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var10" (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 "p_Var10->_M_nxt = p_Var11;" (assignment_expression "p_Var10->_M_nxt = p_Var11" (field_expression "p_Var10->_M_nxt" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var11 != (_Hash_node_base *)0x0) {\n          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\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          __s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;\n        }" { (expression_statement "__s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;" (assignment_expression "__s[(uint)p_Var11[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10" (subscript_expression "__s[(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_Var5 = &(this->referenced_list_)._M_h._M_before_begin;" (assignment_expression "*pp_Var5 = &(this->referenced_list_)._M_h._M_before_begin" (pointer_expression "*pp_Var5" * 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        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }" else (compound_statement "{\n        p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;\n        (*pp_Var5)->_M_nxt = p_Var10;\n      }" { (expression_statement "p_Var10->_M_nxt = (*pp_Var5)->_M_nxt;" (assignment_expression "p_Var10->_M_nxt = (*pp_Var5)->_M_nxt" (field_expression "p_Var10->_M_nxt" identifier -> field_identifier) = (field_expression "(*pp_Var5)->_M_nxt" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * identifier) )) -> field_identifier)) ;) (expression_statement "(*pp_Var5)->_M_nxt = p_Var10;" (assignment_expression "(*pp_Var5)->_M_nxt = p_Var10" (field_expression "(*pp_Var5)->_M_nxt" (parenthesized_expression "(*pp_Var5)" ( (pointer_expression "*pp_Var5" * 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_Var6 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var6 = (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._M_current =\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;" (field_expression "local_40._M_current =\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" (field_expression "local_40._M_current =\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._M_current =\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._M_current =\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._M_current =\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._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_40._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_40._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_40._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold" (assignment_expression "local_40._M_current =\n           (this->work_list_).\n           super__Vector_base<std" (field_expression "local_40._M_current" identifier . field_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 = &p_Var8->_M_header;" (assignment_expression "p_Var12 = &p_Var8->_M_header" identifier = (pointer_expression "&p_Var8->_M_header" & (field_expression "p_Var8->_M_header" identifier -> field_identifier))) ;) (if_statement "if (p_Var6 != (_Base_ptr)0x0) {\n        do {\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }\n      }" if (parenthesized_expression "(p_Var6 != (_Base_ptr)0x0)" ( (binary_expression "p_Var6 != (_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_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);\nLAB_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        } while (p_Var13->_M_left != (_Base_ptr)0x0);" do (compound_statement "{\n          while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }\n          p_Var6 = p_Var13->_M_left;\n          p_Var12 = p_Var13;\n        }" { (while_statement "while ((p_Var13 = p_Var6, (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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\n          }" while (parenthesized_expression "((p_Var13 = p_Var6, (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_Var6, (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_Var6, (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_Var6" 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_Var6 = *pp_Var2;\n            p_Var13 = p_Var12;\n            if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;\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_Var6 = *pp_Var2;" (assignment_expression "p_Var6 = *pp_Var2" identifier = (pointer_expression "*pp_Var2" * identifier)) ;) (expression_statement "p_Var13 = p_Var12;" (assignment_expression "p_Var13 = p_Var12" identifier = identifier) ;) (if_statement "if (*pp_Var2 == (_Base_ptr)0x0) goto LAB_001c0384;" 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_001c0384;" goto statement_identifier ;)) })) (expression_statement "p_Var6 = p_Var13->_M_left;" (assignment_expression "p_Var6 = p_Var13->_M_left" identifier = (field_expression "p_Var13->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var12 = p_Var13;" (assignment_expression "p_Var12 = p_Var13" identifier = 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_001c0384:\n        if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }" statement_identifier : (if_statement "if (((p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }\n        }" if (parenthesized_expression "(((p_Var8 != (_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 "((p_Var8 != (_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 "((p_Var8 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first))" ( (binary_expression "(p_Var8 != (_Rb_tree_header *)p_Var13) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var13)->_M_node_count <= entry.first)" (parenthesized_expression "(p_Var8 != (_Rb_tree_header *)p_Var13)" ( (binary_expression "p_Var8 != (_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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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_r0x001c039d:\n          if (piVar15 != (int *)0x0) {\n            do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\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              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );\n          }" { (do_statement "do {\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            } while( true );" do (compound_statement "{\n              pRVar3 = (Relobj *)piVar15[1];\n              uVar7 = piVar15[2];\n              uVar14 = (uint)pRVar3 ^ uVar7;\n              p_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);\n              if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\n              }\n              piVar15 = (int *)*piVar15;\n              if (piVar15 == (int *)0x0) break;\n            }" { (expression_statement "pRVar3 = (Relobj *)piVar15[1];" (assignment_expression "pRVar3 = (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 "uVar7 = piVar15[2];" (assignment_expression "uVar7 = piVar15[2]" identifier = (subscript_expression "piVar15[2]" identifier [ number_literal ])) ;) (expression_statement "uVar14 = (uint)pRVar3 ^ uVar7;" (assignment_expression "uVar14 = (uint)pRVar3 ^ uVar7" identifier = (binary_expression "(uint)pRVar3 ^ uVar7" (cast_expression "(uint)pRVar3" ( (type_descriptor "uint" type_identifier) ) identifier) ^ identifier)) ;) (ERROR "p_Var9 = 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_Var9 = 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);" 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);" 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);" 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);" 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14);" (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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14)" (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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14)" 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14)" (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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14)" 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                                   *)&this->referenced_list_,\n                                  uVar14 % (this->referenced_list_)._M_h._M_bucket_count,\n                                  (key_type *)(piVar15 + 1),uVar14)" ( (binary_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                                   *)&this->referenced_list_" (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 "*" * identifier)))) )) & (field_expression "this->referenced_list_" identifier -> field_identifier)) , (binary_expression "uVar14 % (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)) , (cast_expression "(key_type *)(piVar15 + 1)" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 1)" ( (binary_expression "piVar15 + 1" identifier + number_literal) ))) , identifier )))))) ;))))) (if_statement "if ((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)) {\n                if (local_40._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\n              }" if (parenthesized_expression "((p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0))" ( (binary_expression "(p_Var9 == (__node_base *)0x0) || (p_Var9->_M_nxt == (_Hash_node_base *)0x0)" (parenthesized_expression "(p_Var9 == (__node_base *)0x0)" ( (binary_expression "p_Var9 == (__node_base *)0x0" identifier == (cast_expression "(__node_base *)0x0" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var9->_M_nxt == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var9->_M_nxt == (_Hash_node_base *)0x0" (field_expression "p_Var9->_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._M_current !=\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_r0x001c03e9;\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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));\n                local_40._M_current =\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;\n              }" { (if_statement "if (local_40._M_current !=\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_r0x001c03e9;" if (parenthesized_expression "(local_40._M_current !=\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._M_current !=\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._M_current !=\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._M_current !=\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._M_current !=\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._M_current !=\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._M_current !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_40._M_current !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_40._M_current !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_40._M_current !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40._M_current !=\n                    (this->work_list_).\n                    super__Vector_base<std::pair<gold" (binary_expression "local_40._M_current !=\n                    (this->work_list_).\n                    super__Vector_base<std" (field_expression "local_40._M_current" identifier . field_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_r0x001c03e9;" goto statement_identifier ;)) (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                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1));" (binary_expression "Relobj*,_unsigned_int>&>\n                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1))" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (pointer_expression "&>\n                          (&this->work_list_,local_40,(key_type *)(piVar15 + 1))" & (ERROR ">" >) (parenthesized_expression "(&this->work_list_,local_40,(key_type *)(piVar15 + 1))" ( (comma_expression "&this->work_list_,local_40,(key_type *)(piVar15 + 1)" (pointer_expression "&this->work_list_" & (field_expression "this->work_list_" identifier -> field_identifier)) , (comma_expression "local_40,(key_type *)(piVar15 + 1)" identifier , (cast_expression "(key_type *)(piVar15 + 1)" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 1)" ( (binary_expression "piVar15 + 1" identifier + number_literal) ))))) )))) ;) (expression_statement "local_40._M_current =\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;" (field_expression "local_40._M_current =\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" (field_expression "local_40._M_current =\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._M_current =\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._M_current =\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._M_current =\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._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "local_40._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "local_40._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "local_40._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "local_40._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold" (assignment_expression "local_40._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std" (field_expression "local_40._M_current" identifier . field_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) ;) (if_statement "if (local_3c == local_40._M_current) goto LAB_001c0414;" if (parenthesized_expression "(local_3c == local_40._M_current)" ( (binary_expression "local_3c == local_40._M_current" identifier == (field_expression "local_40._M_current" identifier . field_identifier)) )) (goto_statement "goto LAB_001c0414;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_001c0414:\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_r0x001c03e9:\n  (local_40._M_current)->first = pRVar3;" statement_identifier : (expression_statement "(local_40._M_current)->first = pRVar3;" (assignment_expression "(local_40._M_current)->first = pRVar3" (field_expression "(local_40._M_current)->first" (parenthesized_expression "(local_40._M_current)" ( (field_expression "local_40._M_current" identifier . field_identifier) )) -> field_identifier) = identifier) ;)) (expression_statement "(local_40._M_current)->second = uVar7;" (assignment_expression "(local_40._M_current)->second = uVar7" (field_expression "(local_40._M_current)->second" (parenthesized_expression "(local_40._M_current)" ( (field_expression "local_40._M_current" identifier . field_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._M_current + 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._M_current + 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._M_current + 1" (field_expression "local_40._M_current" identifier . field_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._M_current = local_40._M_current + 1;" (assignment_expression "local_40._M_current = local_40._M_current + 1" (field_expression "local_40._M_current" identifier . field_identifier) = (binary_expression "local_40._M_current + 1" (field_expression "local_40._M_current" identifier . field_identifier) + number_literal)) ;) (goto_statement "goto joined_r0x001c039d;" goto statement_identifier ;) })))
(translation_unit "void FUN_001c0140(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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\n    }\n  }\nLAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x001c03e9:\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_r0x001c039d;\n}\n\n" (function_definition "void FUN_001c0140(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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\n    }\n  }\nLAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x001c03e9:\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_r0x001c039d;\n}" primitive_type (function_declarator "FUN_001c0140(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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\n    }\n  }\nLAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x001c03e9:\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_r0x001c039d;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x1c01b9" (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_000a91b0();" (assignment_expression "piVar4 = (int *)FUN_000a91b0()" identifier = (cast_expression "(int *)FUN_000a91b0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000a91b0()" 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) = 0x1c01d3;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x1c01d3" (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_001e5200();" (assignment_expression "local_50 = (int *)FUN_001e5200()" identifier = (cast_expression "(int *)FUN_001e5200()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" 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) = 0x1c020b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x1c020b" (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_0022c460();" (call_expression "FUN_0022c460()" 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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c049f;\n            FUN_0022c5f0();\n          }" if (parenthesized_expression "(0x3fffffff < local_30)" ( (binary_expression "0x3fffffff < local_30" number_literal < identifier) )) (compound_statement "{\n                    \n                    \n            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;\n            FUN_0022c5f0();\n          }" { (expression_statement "*(undefined1 **)(puVar11 + -8) = &LAB_001c049f;" (assignment_expression "*(undefined1 **)(puVar11 + -8) = &LAB_001c049f" (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_001c049f" & identifier)) ;) (expression_statement "FUN_0022c5f0();" (call_expression "FUN_0022c5f0()" 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) = 0x1c024a;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c024a" (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_001e5200();" (assignment_expression "puVar5 = (undefined4 *)FUN_001e5200()" identifier = (cast_expression "(undefined4 *)FUN_001e5200()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200()" 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) = 0x1c025b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c025b" (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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\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_001c0298:\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_001c02e0;" 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_001c02e0;" 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_001c0298;" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (goto_statement "goto LAB_001c0298;" 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_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\n        }" statement_identifier : (if_statement "if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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) = 0x1c02f7;\n          FUN_001e6db0();\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) = 0x1c02f7;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c02f7" (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_001e6db0();" (call_expression "FUN_001e6db0()" 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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0384;\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_001c0384;\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_001c0384;\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_001c0384;\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_001c0384;" 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_001c0384;" 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_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c03d7" (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_000a91b0();" (assignment_expression "piVar7 = (int *)FUN_000a91b0()" identifier = (cast_expression "(int *)FUN_000a91b0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000a91b0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\n                local_40 = (uint *)param_1[1];\n              }" { (if_statement "if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;" 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_r0x001c03e9;" 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) = 0x1c0471;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c0471" (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_001c04b0();" (call_expression "FUN_001c04b0()" 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_001c0414;" if (parenthesized_expression "(local_3c == local_40)" ( (binary_expression "local_3c == local_40" identifier == identifier) )) (goto_statement "goto LAB_001c0414;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_001c0414:\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_r0x001c03e9:\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_r0x001c039d;" 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_001c0140(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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\n    }\n  }\nLAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x001c03e9:\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_r0x001c039d;\n}" (primitive_type "void") (function_declarator "FUN_001c0140(undefined4 *param_1)" (identifier "FUN_001c0140") (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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\n    }\n  }\nLAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x001c03e9:\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_r0x001c039d;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;\n      local_24 = uVar10;\n      local_20 = local_4c;\n      piVar4 = (int *)FUN_000a91b0();\n      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;\n      *(undefined4 *)(puVar11 + -0x10) = 0x10;\n      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;\n      local_50 = (int *)FUN_001e5200();\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) = 0x1c020b;\n      FUN_0022c460();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0414;\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) = 0x1c01b9;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x1c01b9" (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 "0x1c01b9")) (; ";")) (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_000a91b0();" (assignment_expression "piVar4 = (int *)FUN_000a91b0()" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_000a91b0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000a91b0()" (identifier "FUN_000a91b0") (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) = 0x1c01d3;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x1c01d3" (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 "0x1c01d3")) (; ";")) (expression_statement "local_50 = (int *)FUN_001e5200();" (assignment_expression "local_50 = (int *)FUN_001e5200()" (identifier "local_50") (= "=") (cast_expression "(int *)FUN_001e5200()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200()" (identifier "FUN_001e5200") (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) = 0x1c020b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x24) = 0x1c020b" (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 "0x1c020b")) (; ";")) (expression_statement "FUN_0022c460();" (call_expression "FUN_0022c460()" (identifier "FUN_0022c460") (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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\n            puVar5[local_44] = piVar4;\n            piVar4 = piVar7;\n            local_44 = uVar10;\n          } while (piVar7 != (int *)0x0);\n        }\nLAB_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c049f;\n            FUN_0022c5f0();\n          }\n          iVar2 = local_30 * 4;\n          *(int *)(puVar11 + -0x14) = iVar2;\n                    \n          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;\n          puVar5 = (undefined4 *)FUN_001e5200();\n          *(int *)(puVar11 + -0xc) = iVar2;\n          *(undefined4 *)(puVar11 + -0x10) = 0;\n          *(undefined4 **)(puVar11 + -0x14) = puVar5;\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;\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_001c049f;\n            FUN_0022c5f0();\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_001c049f;\n            FUN_0022c5f0();\n          }" ({ "{") (expression_statement "*(undefined1 **)(puVar11 + -8) = &LAB_001c049f;" (assignment_expression "*(undefined1 **)(puVar11 + -8) = &LAB_001c049f" (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_001c049f" (& "&") (identifier "LAB_001c049f"))) (; ";")) (expression_statement "FUN_0022c5f0();" (call_expression "FUN_0022c5f0()" (identifier "FUN_0022c5f0") (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) = 0x1c024a;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c024a" (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 "0x1c024a")) (; ";")) (expression_statement "puVar5 = (undefined4 *)FUN_001e5200();" (assignment_expression "puVar5 = (undefined4 *)FUN_001e5200()" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)FUN_001e5200()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200()" (identifier "FUN_001e5200") (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) = 0x1c025b;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c025b" (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 "0x1c025b")) (; ";")) (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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\n            }\n            *piVar4 = param_1[0xc];\n            param_1[0xc] = piVar4;\n            *puVar8 = local_4c;\n            if (*piVar4 == 0) goto LAB_001c0298;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\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_001c0298:\n              local_44 = uVar10;\n              piVar4 = piVar7;\n              if (piVar7 == (int *)0x0) goto LAB_001c02e0;\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_001c0298:\n              local_44 = uVar10;" (statement_identifier "LAB_001c0298") (: ":") (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_001c02e0;" (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_001c02e0;" (goto "goto") (statement_identifier "LAB_001c02e0") (; ";"))) (} "}"))) (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_001c0298;" (if "if") (parenthesized_expression "(*piVar4 == 0)" (( "(") (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c0298;" (goto "goto") (statement_identifier "LAB_001c0298") (; ";"))) (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_001c02e0:\n        if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\n        }" (statement_identifier "LAB_001c02e0") (: ":") (if_statement "if ((undefined4 *)param_1[10] != local_58) {\n          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];\n          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;\n          FUN_001e6db0();\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) = 0x1c02f7;\n          FUN_001e6db0();\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) = 0x1c02f7;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c02f7" (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 "0x1c02f7")) (; ";")) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" (identifier "FUN_001e6db0") (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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0384;\n          }\n          puVar5 = (undefined4 *)puVar9[2];\n          puVar8 = puVar9;\n        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);\nLAB_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0384;\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_001c0384;\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_001c0384;\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_001c0384;\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_001c0384;" (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_001c0384;" (goto "goto") (statement_identifier "LAB_001c0384") (; ";"))) (} "}"))) (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_001c0384:\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_001c0384") (: ":") (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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d:\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c039d") (: ":") (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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;\n              piVar7 = (int *)FUN_000a91b0();\n              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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) = 0x1c03d7;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c03d7" (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 "0x1c03d7")) (; ";")) (expression_statement "piVar7 = (int *)FUN_000a91b0();" (assignment_expression "piVar7 = (int *)FUN_000a91b0()" (identifier "piVar7") (= "=") (cast_expression "(int *)FUN_000a91b0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000a91b0()" (identifier "FUN_000a91b0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {\n                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\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_r0x001c03e9;\n                *(uint **)(puVar11 + -0xc) = local_3c;\n                *(uint **)(puVar11 + -0x10) = local_40;\n                *(undefined4 **)(puVar11 + -0x14) = param_1;\n                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;\n                FUN_001c04b0();\n                local_40 = (uint *)param_1[1];\n              }" ({ "{") (if_statement "if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;" (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_r0x001c03e9;" (goto "goto") (statement_identifier "code_r0x001c03e9") (; ";"))) (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) = 0x1c0471;" (assignment_expression "*(undefined4 *)(puVar11 + -0x18) = 0x1c0471" (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 "0x1c0471")) (; ";")) (expression_statement "FUN_001c04b0();" (call_expression "FUN_001c04b0()" (identifier "FUN_001c04b0") (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_001c0414;" (if "if") (parenthesized_expression "(local_3c == local_40)" (( "(") (binary_expression "local_3c == local_40" (identifier "local_3c") (== "==") (identifier "local_40")) () ")")) (goto_statement "goto LAB_001c0414;" (goto "goto") (statement_identifier "LAB_001c0414") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_001c0414:\n  *(undefined1 *)(param_1 + 3) = 1;" (statement_identifier "LAB_001c0414") (: ":") (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_r0x001c03e9:\n  *local_40 = uVar10;" (statement_identifier "code_r0x001c03e9") (: ":") (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_r0x001c039d;" (goto "goto") (statement_identifier "joined_r0x001c039d") (; ";")) (} "}")))

/* 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;
  type_4 *pRVar3;
  type_5 *var_20;
  type_6 *var_21;
  type_3 var_25;
  type_7 var_17;
  type_8 *var_27;
  type_5 *__code;
  type_9 *var_10;
  type_5 *p_Var10;
  type_6 *var_18;
  type_5 *var_16;
  type_3 p_Var12;
  type_3 var_26;
  type_7 var_19;
  int *var_28;
  type_6 *var_22;
  type_7 var_24;
  type_10 local_40;
  type_11 var_6;
  char local_34 [4];
  type_7 var_13;
  type_12 entry;
  
  var_6 = (this->work_list_).
             super__Vector_base<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
             ._M_impl._M_start;
  local_40._M_current =
       (this->work_list_).
       super__Vector_base<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
       ._M_impl._M_finish;
  var_27 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;
  while (var_6 != local_40._M_current) {
    while( true ) {
      pRVar3 = local_40._M_current[-1].first;
      var_16 = (type_5 *)local_40._M_current[-1].second;
      local_40._M_current = local_40._M_current + -1;
      (this->work_list_).
      super__Vector_base<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
      ._M_impl._M_finish = local_40._M_current;
      __code = (type_5 *)((type_7)var_16 ^ (type_7)pRVar3);
      var_24 = (type_7)__code % (this->referenced_list_)._M_h._M_bucket_count;
      entry.first = pRVar3;
      entry.second = (type_7)var_16;
      var_10 = var_1::
               _Hashtable<var_1::pair<var_2::type_4*,var_3>,var_4::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::pair<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::_Prime_rehash_policy,var_4::__detail::var_7<true,var_8,var_8>var_5>
               ::var_9
                         ((_Hashtable<var_1::pair<var_2::type_4*,var_3>,var_4::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::pair<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::_Prime_rehash_policy,var_4::__detail::var_7<true,var_8,var_8>var_5>
                           *)&this->referenced_list_,var_24,&entry,(type_13)__code);
      if ((var_10 != (type_9 *)0x0) && (var_10->_M_nxt != (type_5 *)0x0)) break;
      p_Var10 = (type_5 *)var_11(0x10);
      p_Var10[1]._M_nxt = (type_5 *)pRVar3;
      p_Var10->_M_nxt = (type_5 *)0x0;
      p_Var10[2]._M_nxt = var_16;
      std::__detail::_Prime_rehash_policy::var_12
                ((type_7)local_34,(type_7)&(this->referenced_list_)._M_h._M_rehash_policy,
                 (this->referenced_list_)._M_h._M_bucket_count);
      var_17 = var_13;
      if (local_34[0] == '\0') {
        var_18 = (this->referenced_list_)._M_h._M_buckets;
      }
      else {
        if (var_13 == 1) {
          var_18 = &(this->referenced_list_)._M_h._M_single_bucket;
          (this->referenced_list_)._M_h._M_single_bucket = (type_6)0x0;
        }
        else {
          if (0x3fffffff < var_13) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001c049a to 001c049e has its CatchHandler @ 001c049f */
            std::var_14();
          }
          var_19 = var_13 * 4;
                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */
          var_18 = (type_6 *)var_11(var_19);
          var_15(var_18,0,var_19);
        }
        var_22 = &(this->referenced_list_)._M_h._M_single_bucket;
        var_16 = (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_16 != (type_5 *)0x0) {
          var_24 = 0;
          do {
            while( true ) {
              var_20 = var_16->_M_nxt;
              var_19 = (type_7)var_16[3]._M_nxt % var_17;
              var_21 = var_18 + var_19;
              if (*var_21 == (type_6)0x0) break;
              var_16->_M_nxt = (*var_21)->_M_nxt;
              (*var_21)->_M_nxt = var_16;
              var_19 = var_24;
LAB_001c0298:
              var_24 = var_19;
              var_16 = var_20;
              if (var_20 == (type_5 *)0x0) goto LAB_001c02e0;
            }
            var_16->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
            (this->referenced_list_)._M_h._M_before_begin._M_nxt = var_16;
            *var_21 = &(this->referenced_list_)._M_h._M_before_begin;
            if (var_16->_M_nxt == (type_5 *)0x0) goto LAB_001c0298;
            var_18[var_24] = var_16;
            var_16 = var_20;
            var_24 = var_19;
          } while (var_20 != (type_5 *)0x0);
        }
LAB_001c02e0:
        var_21 = (this->referenced_list_)._M_h._M_buckets;
        if (var_21 != var_22) {
          var_23(var_21);
        }
        (this->referenced_list_)._M_h._M_bucket_count = var_17;
        (this->referenced_list_)._M_h._M_buckets = var_18;
        var_24 = (type_7)__code % var_17;
      }
      p_Var10[3]._M_nxt = __code;
      var_21 = var_18 + var_24;
      if (*var_21 == (type_6)0x0) {
        var_16 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var10;
        p_Var10->_M_nxt = var_16;
        if (var_16 != (type_5 *)0x0) {
          var_18[(type_7)var_16[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var10;
        }
        *var_21 = &(this->referenced_list_)._M_h._M_before_begin;
      }
      else {
        p_Var10->_M_nxt = (*var_21)->_M_nxt;
        (*var_21)->_M_nxt = p_Var10;
      }
      psVar1 = &(this->referenced_list_)._M_h._M_element_count;
      *psVar1 = *psVar1 + 1;
      var_25 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
      local_40._M_current =
           (this->work_list_).
           super__Vector_base<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
           ._M_impl._M_finish;
      p_Var12 = &var_27->_M_header;
      if (var_25 != (type_3)0x0) {
        do {
          while ((var_26 = var_25, (type_4 *)var_26[1]._M_color < entry.first ||
                 (((type_4 *)var_26[1]._M_color == entry.first &&
                  (*(type_7 *)((int)(var_26 + 1) + 4) < entry.second))))) {
            pp_Var2 = &var_26->_M_right;
            var_25 = *pp_Var2;
            var_26 = p_Var12;
            if (*pp_Var2 == (type_3)0x0) goto LAB_001c0384;
          }
          var_25 = var_26->_M_left;
          p_Var12 = var_26;
        } while (var_26->_M_left != (type_3)0x0);
LAB_001c0384:
        if (((var_27 != (type_8 *)var_26) &&
            ((type_4 *)((type_8 *)var_26)->_M_node_count <= entry.first)) &&
           ((entry.first != (type_4 *)((type_8 *)var_26)->_M_node_count ||
            (*(type_7 *)((int)var_26 + 0x14) <= entry.second)))) {
          var_28 = *(int **)((type_14 *)((int)var_26 + 0x14) + 0xc);
joined_r0x001c039d:
          if (var_28 != (int *)0x0) {
            do {
              pRVar3 = (type_4 *)var_28[1];
              var_17 = var_28[2];
              var_19 = (type_7)pRVar3 ^ var_17;
              var_10 = var_1::
                       _Hashtable<var_1::pair<var_2::type_4*,var_3>,var_4::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::pair<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::_Prime_rehash_policy,var_4::__detail::var_7<true,var_8,var_8>var_5>
                       ::var_9
                                 ((_Hashtable<var_1::pair<var_2::type_4*,var_3>,var_4::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::pair<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::_Prime_rehash_policy,var_4::__detail::var_7<true,var_8,var_8>var_5>
                                   *)&this->referenced_list_,
                                  var_19 % (this->referenced_list_)._M_h._M_bucket_count,
                                  (type_15 *)(var_28 + 1),var_19);
              if ((var_10 == (type_9 *)0x0) || (var_10->_M_nxt == (type_5 *)0x0)) {
                if (local_40._M_current !=
                    (this->work_list_).
                    super__Vector_base<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
                    ._M_impl._M_end_of_storage) goto code_r0x001c03e9;
                var_1::
                vector<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
                ::_M_realloc_insert<const_std::pair<var_2::type_4*,var_3>&>
                          (&this->work_list_,local_40,(type_15 *)(var_28 + 1));
                local_40._M_current =
                     (this->work_list_).
                     super__Vector_base<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
                     ._M_impl._M_finish;
              }
              var_28 = (int *)*var_28;
              if (var_28 == (int *)0x0) break;
            } while( true );
          }
        }
      }
      var_6 = (this->work_list_).
                 super__Vector_base<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
                 ._M_impl._M_start;
      if (var_6 == local_40._M_current) goto LAB_001c0414;
    }
  }
LAB_001c0414:
  this->is_worklist_ready_ = true;
  return;
code_r0x001c03e9:
  (local_40._M_current)->first = pRVar3;
  (local_40._M_current)->second = var_17;
  (this->work_list_).
  super__Vector_base<var_1::pair<var_2::type_4*,var_3>,var_4::allocator<var_1::pair<var_2::type_4*,var_3>var_5>var_5>
  ._M_impl._M_finish = local_40._M_current + 1;
  var_28 = (int *)*var_28;
  local_40._M_current = local_40._M_current + 1;
  goto joined_r0x001c039d;
}


(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) = 0x1c01b9;
      local_24 = uVar10;
      local_20 = local_4c;
      piVar4 = (int *)FUN_000a91b0();
      if ((piVar4 != (int *)0x0) && (*piVar4 != 0)) break;
      *(undefined4 *)(puVar11 + -0x10) = 0x10;
      *(undefined4 *)(puVar11 + -0x14) = 0x1c01d3;
      local_50 = (int *)FUN_001e5200();
      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) = 0x1c020b;
      FUN_0022c460();
      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 001c049a to 001c049e has its CatchHandler @ 001c049f */
            *(undefined1 **)(puVar11 + -8) = &LAB_001c049f;
            FUN_0022c5f0();
          }
          iVar2 = local_30 * 4;
          *(int *)(puVar11 + -0x14) = iVar2;
                    /* try { // try from 001c0245 to 001c0249 has its CatchHandler @ 001c049f */
          *(undefined4 *)(puVar11 + -0x18) = 0x1c024a;
          puVar5 = (undefined4 *)FUN_001e5200();
          *(int *)(puVar11 + -0xc) = iVar2;
          *(undefined4 *)(puVar11 + -0x10) = 0;
          *(undefined4 **)(puVar11 + -0x14) = puVar5;
          *(undefined4 *)(puVar11 + -0x18) = 0x1c025b;
          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_001c0298:
              local_44 = uVar10;
              piVar4 = piVar7;
              if (piVar7 == (int *)0x0) goto LAB_001c02e0;
            }
            *piVar4 = param_1[0xc];
            param_1[0xc] = piVar4;
            *puVar8 = local_4c;
            if (*piVar4 == 0) goto LAB_001c0298;
            puVar5[local_44] = piVar4;
            piVar4 = piVar7;
            local_44 = uVar10;
          } while (piVar7 != (int *)0x0);
        }
LAB_001c02e0:
        if ((undefined4 *)param_1[10] != local_58) {
          *(undefined4 **)(puVar11 + -0x14) = (undefined4 *)param_1[10];
          *(undefined4 *)(puVar11 + -0x18) = 0x1c02f7;
          FUN_001e6db0();
        }
        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_001c0384;
          }
          puVar5 = (undefined4 *)puVar9[2];
          puVar8 = puVar9;
        } while ((undefined4 *)puVar9[2] != (undefined4 *)0x0);
LAB_001c0384:
        if (((local_54 != puVar9) && ((uint)puVar9[4] <= local_24)) &&
           ((local_24 != puVar9[4] || ((undefined4 *)puVar9[5] <= local_20)))) {
          piVar4 = (int *)puVar9[8];
joined_r0x001c039d:
          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) = 0x1c03d7;
              piVar7 = (int *)FUN_000a91b0();
              if ((piVar7 == (int *)0x0) || (*piVar7 == 0)) {
                if (local_40 != (uint *)param_1[2]) goto code_r0x001c03e9;
                *(uint **)(puVar11 + -0xc) = local_3c;
                *(uint **)(puVar11 + -0x10) = local_40;
                *(undefined4 **)(puVar11 + -0x14) = param_1;
                *(undefined4 *)(puVar11 + -0x18) = 0x1c0471;
                FUN_001c04b0();
                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_001c0414;
    }
  }
LAB_001c0414:
  *(undefined1 *)(param_1 + 3) = 1;
  return;
code_r0x001c03e9:
  *local_40 = uVar10;
  local_40[1] = uVar3;
  param_1[1] = local_40 + 2;
  piVar4 = (int *)*piVar4;
  local_40 = local_40 + 2;
  goto joined_r0x001c039d;
}

