
/* 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)

{
  _Rb_tree_header *p_Var1;
  size_type *psVar2;
  _Base_ptr *pp_Var3;
  uint uVar4;
  Relobj *pRVar5;
  _Hash_node_base *p_Var6;
  __bucket_type *pp_Var7;
  _Base_ptr p_Var8;
  char cVar9;
  _Hash_node_base *p_Var10;
  __node_base *p_Var11;
  _Hash_node_base *p_Var12;
  __bucket_type *__s;
  _Hash_node_base *p_Var13;
  _Base_ptr p_Var14;
  _Base_ptr p_Var15;
  ulong uVar16;
  ulong extraout_RDX;
  ulong uVar17;
  pointer ppVar18;
  iterator __position;
  pointer ppVar19;
  long *plVar20;
  ulong local_60;
  Section_id entry;
  
  ppVar19 = (this->work_list_).
            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
            ._M_impl._M_start;
  p_Var1 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;
  __position._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;
  while (__position._M_current != ppVar19) {
    while( true ) {
      pRVar5 = __position._M_current[-1].first;
      ppVar18 = __position._M_current + -1;
      entry.first = ppVar18->first;
      entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;
      (this->work_list_).
      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
      ._M_impl._M_finish = ppVar18;
      uVar4 = entry.second;
      p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);
      local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;
      p_Var11 = 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_60,&entry,(__hash_code)p_Var10);
      if ((p_Var11 != (__node_base *)0x0) &&
         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;
      p_Var12 = (_Hash_node_base *)operator_new(0x20);
      uVar16 = (this->referenced_list_)._M_h._M_element_count;
      uVar17 = (this->referenced_list_)._M_h._M_bucket_count;
      p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;
      *(uint *)&p_Var12[2]._M_nxt = uVar4;
      p_Var12->_M_nxt = (_Hash_node_base *)0x0;
      cVar9 = std::__detail::_Prime_rehash_policy::_M_need_rehash
                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);
      if (cVar9 == '\0') {
        __s = (this->referenced_list_)._M_h._M_buckets;
      }
      else {
        if (extraout_RDX == 1) {
          __s = &(this->referenced_list_)._M_h._M_single_bucket;
          (this->referenced_list_)._M_h._M_single_bucket = (__bucket_type)0x0;
        }
        else {
          if (0x1fffffffffffffff < extraout_RDX) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */
            std::__throw_bad_alloc();
          }
                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */
          __s = (__bucket_type *)operator_new(extraout_RDX * 8);
          memset(__s,0,extraout_RDX * 8);
        }
        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {
          uVar16 = 0;
          do {
            while( true ) {
              p_Var6 = p_Var13->_M_nxt;
              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;
              pp_Var7 = __s + uVar17;
              if (*pp_Var7 == (__bucket_type)0x0) break;
              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;
              (*pp_Var7)->_M_nxt = p_Var13;
              uVar17 = uVar16;
LAB_002b5b1c:
              p_Var13 = p_Var6;
              uVar16 = uVar17;
              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;
            }
            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;
            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;
            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;
            __s[uVar16] = p_Var13;
            p_Var13 = p_Var6;
            uVar16 = uVar17;
          } while (p_Var6 != (_Hash_node_base *)0x0);
        }
LAB_002b5b68:
        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;
        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {
          operator_delete(pp_Var7);
        }
        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;
        local_60 = (ulong)p_Var10 % extraout_RDX;
        (this->referenced_list_)._M_h._M_buckets = __s;
      }
      p_Var12[3]._M_nxt = p_Var10;
      pp_Var7 = __s + local_60;
      if (*pp_Var7 == (__bucket_type)0x0) {
        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;
        p_Var12->_M_nxt = p_Var10;
        if (p_Var10 != (_Hash_node_base *)0x0) {
          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;
        }
        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;
      }
      else {
        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;
        (*pp_Var7)->_M_nxt = p_Var12;
      }
      p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
      psVar2 = &(this->referenced_list_)._M_h._M_element_count;
      *psVar2 = *psVar2 + 1;
      __position._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;
      if (p_Var8 != (_Base_ptr)0x0) {
        p_Var14 = &p_Var1->_M_header;
        do {
          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||
                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&
                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {
            pp_Var3 = &p_Var15->_M_right;
            p_Var8 = *pp_Var3;
            p_Var15 = p_Var14;
            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;
          }
          p_Var8 = p_Var15->_M_left;
          p_Var14 = p_Var15;
        } while (p_Var15->_M_left != (_Base_ptr)0x0);
LAB_002b5c02:
        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&
            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&
           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||
            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {
          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);
joined_r0x002b5c21:
          if (plVar20 != (long *)0x0) {
            do {
              uVar4 = *(uint *)(plVar20 + 2);
              pRVar5 = (Relobj *)plVar20[1];
              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;
              p_Var11 = 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_,
                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,
                                   (key_type *)(plVar20 + 1),uVar16);
              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {
                if ((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 != __position._M_current) goto code_r0x002b5c6f;
                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_,__position,(key_type *)(plVar20 + 1));
                __position._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;
              }
              plVar20 = (long *)*plVar20;
              if (plVar20 == (long *)0x0) break;
            } while( true );
          }
        }
      }
      ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;
    }
  }
LAB_002b5c9c:
  this->is_worklist_ready_ = true;
  return;
code_r0x002b5c6f:
  (__position._M_current)->first = pRVar5;
  (__position._M_current)->second = uVar4;
  (this->work_list_).
  super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>
  ._M_impl._M_finish = __position._M_current + 1;
  plVar20 = (long *)*plVar20;
  __position._M_current = __position._M_current + 1;
  goto joined_r0x002b5c21;
}



void FUN_002b59e0(undefined8 *param_1)

{
  undefined8 *puVar1;
  long *plVar2;
  uint uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  long *plVar6;
  long lVar7;
  undefined4 uVar8;
  char cVar9;
  ulong uVar10;
  long *plVar11;
  undefined8 *puVar12;
  long *plVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  ulong extraout_RDX;
  ulong uVar16;
  ulong uVar17;
  ulong *puVar18;
  ulong *puVar19;
  ulong *puVar20;
  ulong local_60;
  ulong local_48;
  ulong uStack_40;
  
  puVar20 = (ulong *)*param_1;
  puVar19 = (ulong *)param_1[1];
  while (puVar19 != puVar20) {
    while( true ) {
      uVar17 = puVar19[-2];
      puVar18 = puVar19 + -2;
      local_48 = *puVar18;
      uStack_40 = puVar19[-1];
      param_1[1] = puVar18;
      uVar8 = (uint)uStack_40;
      uVar10 = uStack_40 & 0xffffffff ^ uVar17;
      local_60 = uVar10 % (ulong)param_1[0xb];
      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);
      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;
      plVar11 = (long *)FUN_002d94a0(0x20);
      uVar4 = param_1[0xd];
      uVar5 = param_1[0xb];
      plVar11[1] = uVar17;
      *(undefined4 *)(plVar11 + 2) = uVar8;
      *plVar11 = 0;
      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);
      if (cVar9 == '\0') {
        puVar12 = (undefined8 *)param_1[10];
      }
      else {
        if (extraout_RDX == 1) {
          puVar12 = param_1 + 0x10;
          param_1[0x10] = 0;
        }
        else {
          if (0x1fffffffffffffff < extraout_RDX) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */
            FUN_00319420();
          }
                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */
          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);
          memset(puVar12,0,extraout_RDX * 8);
        }
        plVar13 = (long *)param_1[0xc];
        param_1[0xc] = 0;
        if (plVar13 != (long *)0x0) {
          uVar17 = 0;
          do {
            while( true ) {
              plVar6 = (long *)*plVar13;
              uVar16 = (ulong)plVar13[3] % extraout_RDX;
              plVar2 = puVar12 + uVar16;
              if ((long *)*plVar2 == (long *)0x0) break;
              *plVar13 = *(long *)*plVar2;
              *(long **)*plVar2 = plVar13;
              uVar16 = uVar17;
LAB_002b5b1c:
              plVar13 = plVar6;
              uVar17 = uVar16;
              if (plVar6 == (long *)0x0) goto LAB_002b5b68;
            }
            *plVar13 = param_1[0xc];
            param_1[0xc] = plVar13;
            *plVar2 = (long)(param_1 + 0xc);
            if (*plVar13 == 0) goto LAB_002b5b1c;
            puVar12[uVar17] = plVar13;
            plVar13 = plVar6;
            uVar17 = uVar16;
          } while (plVar6 != (long *)0x0);
        }
LAB_002b5b68:
        if ((undefined8 *)param_1[10] != param_1 + 0x10) {
          FUN_002dac70();
        }
        param_1[0xb] = extraout_RDX;
        local_60 = uVar10 % extraout_RDX;
        param_1[10] = puVar12;
      }
      plVar11[3] = uVar10;
      plVar13 = puVar12 + local_60;
      if ((long *)*plVar13 == (long *)0x0) {
        lVar7 = param_1[0xc];
        param_1[0xc] = plVar11;
        *plVar11 = lVar7;
        if (lVar7 != 0) {
          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;
        }
        *plVar13 = (long)(param_1 + 0xc);
      }
      else {
        *plVar11 = *(long *)*plVar13;
        *(long **)*plVar13 = plVar11;
      }
      param_1[0xd] = param_1[0xd] + 1;
      puVar19 = (ulong *)param_1[1];
      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {
        puVar12 = (undefined8 *)param_1[6];
        puVar14 = param_1 + 5;
        do {
          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||
                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {
            puVar1 = puVar15 + 3;
            puVar12 = (undefined8 *)*puVar1;
            puVar15 = puVar14;
            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;
          }
          puVar12 = (undefined8 *)puVar15[2];
          puVar14 = puVar15;
        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);
LAB_002b5c02:
        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&
           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {
          plVar11 = (long *)puVar15[8];
joined_r0x002b5c21:
          if (plVar11 != (long *)0x0) {
            do {
              uVar3 = *(uint *)(plVar11 + 2);
              uVar17 = plVar11[1];
              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],
                                             plVar11 + 1);
              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {
                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;
                FUN_002b5d30(param_1,puVar19,plVar11 + 1);
                puVar19 = (ulong *)param_1[1];
              }
              plVar11 = (long *)*plVar11;
              if (plVar11 == (long *)0x0) break;
            } while( true );
          }
        }
      }
      puVar20 = (ulong *)*param_1;
      if (puVar19 == puVar20) goto LAB_002b5c9c;
    }
  }
LAB_002b5c9c:
  *(undefined1 *)(param_1 + 3) = 1;
  return;
code_r0x002b5c6f:
  *puVar19 = uVar17;
  *(uint *)(puVar19 + 1) = uVar3;
  param_1[1] = puVar19 + 2;
  plVar11 = (long *)*plVar11;
  puVar19 = puVar19 + 2;
  goto joined_r0x002b5c21;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x38
MOV R13,qword ptr [RDI]
MOV R12,qword ptr [RDI + 0x8]
LEA RAX,[RSP + 0x20]
MOV qword ptr [RSP + 0x10],RAX
LEA RAX,[RDI + 0x28]
MOV qword ptr [RSP + 0x18],RAX
NOP dword ptr [RAX + RAX*0x1]
CMP R12,R13
JZ 0x002b5c9c
MOV RBP,qword ptr [R12 + -0x10]
XOR EDX,EDX
SUB R12,0x10
LEA RDI,[RBX + 0x50]
MOVDQU XMM0,xmmword ptr [R12]
MOV qword ptr [RBX + 0x8],R12
MOV qword ptr [RSP],RDI
MOVAPS xmmword ptr [RSP + 0x20],XMM0
MOV EAX,dword ptr [RSP + 0x28]
MOV R15,RAX
XOR RAX,RBP
MOV R14,RAX
DIV qword ptr [RBX + 0x58]
MOV RCX,R14
MOV qword ptr [RSP + 0x8],RDX
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x8]
CALL 0x001b4d40
TEST RAX,RAX
JZ 0x002b5a6e
CMP qword ptr [RAX],0x0
JNZ 0x002b5a10
MOV EDI,0x20
CALL 0x002d94a0
MOV RDX,qword ptr [RBX + 0x68]
MOV RSI,qword ptr [RBX + 0x58]
LEA RDI,[RBX + 0x70]
MOV qword ptr [RAX + 0x8],RBP
MOV ECX,0x1
MOV R13,RAX
MOV dword ptr [RAX + 0x10],R15D
MOV R15,qword ptr [RBX + 0x78]
MOV qword ptr [RAX],0x0
CALL 0x00319200
MOV RBP,RDX
TEST AL,AL
JZ 0x002b5b90
CMP RDX,0x1
JZ 0x002b5d07
MOV RAX,0x1fffffffffffffff
CMP RDX,RAX
JA 0x002b5d21
LEA R12,[RDX*0x8]
MOV RDI,R12
CALL 0x002d94a0
MOV RDX,R12
XOR ESI,ESI
MOV RDI,RAX
MOV R15,RAX
CALL 0x00147100
LEA R9,[RBX + 0x80]
MOV RCX,qword ptr [RBX + 0x60]
MOV qword ptr [RBX + 0x60],0x0
TEST RCX,RCX
JZ 0x002b5b68
XOR EDI,EDI
LEA R8,[RBX + 0x60]
JMP 0x002b5b24
MOV RDX,qword ptr [RSI]
MOV qword ptr [RCX],RDX
MOV RAX,qword ptr [RAX]
MOV qword ptr [RAX],RCX
MOV RCX,R10
TEST R10,R10
JZ 0x002b5b68
MOV RAX,qword ptr [RCX + 0x18]
XOR EDX,EDX
MOV R10,qword ptr [RCX]
DIV RBP
LEA RAX,[R15 + RDX*0x8]
MOV RSI,qword ptr [RAX]
TEST RSI,RSI
JNZ 0x002b5b10
MOV RSI,qword ptr [RBX + 0x60]
MOV qword ptr [RCX],RSI
MOV qword ptr [RBX + 0x60],RCX
MOV qword ptr [RAX],R8
CMP qword ptr [RCX],0x0
JZ 0x002b5cb0
MOV qword ptr [R15 + RDI*0x8],RCX
MOV RDI,RDX
MOV RCX,R10
TEST R10,R10
JNZ 0x002b5b24
NOP dword ptr [RAX + RAX*0x1]
MOV RDI,qword ptr [RBX + 0x50]
CMP RDI,R9
JZ 0x002b5b76
CALL 0x002dac70
MOV RAX,R14
XOR EDX,EDX
MOV qword ptr [RBX + 0x58],RBP
DIV RBP
MOV qword ptr [RBX + 0x50],R15
MOV qword ptr [RSP + 0x8],RDX
JMP 0x002b5b94
MOV R15,qword ptr [RBX + 0x50]
MOV RAX,qword ptr [RSP + 0x8]
MOV qword ptr [R13 + 0x18],R14
LEA RCX,[R15 + RAX*0x8]
MOV RAX,qword ptr [RCX]
TEST RAX,RAX
JZ 0x002b5cc0
MOV RAX,qword ptr [RAX]
MOV qword ptr [R13],RAX
MOV RAX,qword ptr [RCX]
MOV qword ptr [RAX],R13
MOV RAX,qword ptr [RBX + 0x30]
ADD qword ptr [RBX + 0x68],0x1
MOV R12,qword ptr [RBX + 0x8]
TEST RAX,RAX
JZ 0x002b5c90
MOV RDX,qword ptr [RSP + 0x20]
MOV ESI,dword ptr [RSP + 0x28]
MOV RCX,qword ptr [RSP + 0x18]
JMP 0x002b5bf3
JNZ 0x002b5be7
CMP dword ptr [RAX + 0x28],ESI
JC 0x002b5bf9
MOV RCX,RAX
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x002b5c02
CMP qword ptr [RAX + 0x20],RDX
JNC 0x002b5be0
MOV RAX,qword ptr [RAX + 0x18]
TEST RAX,RAX
JNZ 0x002b5bf3
CMP qword ptr [RSP + 0x18],RCX
JZ 0x002b5c90
CMP RDX,qword ptr [RCX + 0x20]
JC 0x002b5c90
JNZ 0x002b5c1a
CMP ESI,dword ptr [RCX + 0x28]
JC 0x002b5c90
MOV R15,qword ptr [RCX + 0x40]
TEST R15,R15
JNZ 0x002b5c36
JMP 0x002b5c90
CMP qword ptr [RAX],0x0
JZ 0x002b5c65
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x002b5c90
MOV ECX,dword ptr [R15 + 0x10]
MOV R13,qword ptr [R15 + 0x8]
XOR EDX,EDX
LEA R14,[R15 + 0x8]
MOV RDI,qword ptr [RSP]
MOV RBP,RCX
XOR RCX,R13
MOV RAX,RCX
DIV qword ptr [RBX + 0x58]
MOV RSI,RDX
MOV RDX,R14
CALL 0x001b4d40
TEST RAX,RAX
JNZ 0x002b5c28
CMP qword ptr [RBX + 0x10],R12
JZ 0x002b5cf0
MOV qword ptr [R12],R13
ADD R12,0x10
MOV dword ptr [R12 + -0x8],EBP
MOV qword ptr [RBX + 0x8],R12
MOV R15,qword ptr [R15]
TEST R15,R15
JNZ 0x002b5c36
NOP dword ptr [RAX + RAX*0x1]
MOV R13,qword ptr [RBX]
CMP R12,R13
JNZ 0x002b5a19
MOV byte ptr [RBX + 0x18],0x1
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,RDX
JMP 0x002b5b1c
MOV RAX,qword ptr [RBX + 0x60]
MOV qword ptr [RBX + 0x60],R13
MOV qword ptr [R13],RAX
TEST RAX,RAX
JZ 0x002b5cdf
MOV RAX,qword ptr [RAX + 0x18]
XOR EDX,EDX
DIV qword ptr [RBX + 0x58]
MOV qword ptr [R15 + RDX*0x8],R13
LEA RAX,[RBX + 0x60]
MOV qword ptr [RCX],RAX
JMP 0x002b5bba
MOV RSI,R12
MOV RDX,R14
MOV RDI,RBX
CALL 0x002b5d30
MOV R12,qword ptr [RBX + 0x8]
JMP 0x002b5c2e
LEA R15,[RBX + 0x80]
MOV qword ptr [RBX + 0x80],0x0
MOV R9,R15
JMP 0x002b5af3
CALL 0x00319420
(translation_unit "void FUN_002b59e0(undefined8 *param_1)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  long lVar7;\n  undefined4 uVar8;\n  char cVar9;\n  ulong uVar10;\n  long *plVar11;\n  undefined8 *puVar12;\n  long *plVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  ulong extraout_RDX;\n  ulong uVar16;\n  ulong uVar17;\n  ulong *puVar18;\n  ulong *puVar19;\n  ulong *puVar20;\n  ulong local_60;\n  ulong local_48;\n  ulong uStack_40;\n  \n  puVar20 = (ulong *)*param_1;\n  puVar19 = (ulong *)param_1[1];\n  while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x002b5c6f:\n  *puVar19 = uVar17;\n  *(uint *)(puVar19 + 1) = uVar3;\n  param_1[1] = puVar19 + 2;\n  plVar11 = (long *)*plVar11;\n  puVar19 = puVar19 + 2;\n  goto joined_r0x002b5c21;\n}\n\n" (function_definition "void FUN_002b59e0(undefined8 *param_1)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  long lVar7;\n  undefined4 uVar8;\n  char cVar9;\n  ulong uVar10;\n  long *plVar11;\n  undefined8 *puVar12;\n  long *plVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  ulong extraout_RDX;\n  ulong uVar16;\n  ulong uVar17;\n  ulong *puVar18;\n  ulong *puVar19;\n  ulong *puVar20;\n  ulong local_60;\n  ulong local_48;\n  ulong uStack_40;\n  \n  puVar20 = (ulong *)*param_1;\n  puVar19 = (ulong *)param_1[1];\n  while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x002b5c6f:\n  *puVar19 = uVar17;\n  *(uint *)(puVar19 + 1) = uVar3;\n  param_1[1] = puVar19 + 2;\n  plVar11 = (long *)*plVar11;\n  puVar19 = puVar19 + 2;\n  goto joined_r0x002b5c21;\n}" primitive_type (function_declarator "FUN_002b59e0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined8 *puVar1;\n  long *plVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  long lVar7;\n  undefined4 uVar8;\n  char cVar9;\n  ulong uVar10;\n  long *plVar11;\n  undefined8 *puVar12;\n  long *plVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  ulong extraout_RDX;\n  ulong uVar16;\n  ulong uVar17;\n  ulong *puVar18;\n  ulong *puVar19;\n  ulong *puVar20;\n  ulong local_60;\n  ulong local_48;\n  ulong uStack_40;\n  \n  puVar20 = (ulong *)*param_1;\n  puVar19 = (ulong *)param_1[1];\n  while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x002b5c6f:\n  *puVar19 = uVar17;\n  *(uint *)(puVar19 + 1) = uVar3;\n  param_1[1] = puVar19 + 2;\n  plVar11 = (long *)*plVar11;\n  puVar19 = puVar19 + 2;\n  goto joined_r0x002b5c21;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "undefined8 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "ulong extraout_RDX;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "ulong *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "ulong *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "ulong *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "ulong local_48;" type_identifier identifier ;) (declaration "ulong uStack_40;" type_identifier identifier ;) (expression_statement "puVar20 = (ulong *)*param_1;" (assignment_expression "puVar20 = (ulong *)*param_1" identifier = (cast_expression "(ulong *)*param_1" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" identifier = (cast_expression "(ulong *)param_1[1]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (while_statement "while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }" while (parenthesized_expression "(puVar19 != puVar20)" ( (binary_expression "puVar19 != puVar20" identifier != identifier) )) (compound_statement "{\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }" { (while_statement "while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }" { (expression_statement "uVar17 = puVar19[-2];" (assignment_expression "uVar17 = puVar19[-2]" identifier = (subscript_expression "puVar19[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar19 + -2;" (assignment_expression "puVar18 = puVar19 + -2" identifier = (binary_expression "puVar19 + -2" identifier + number_literal)) ;) (expression_statement "local_48 = *puVar18;" (assignment_expression "local_48 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "uStack_40 = puVar19[-1];" (assignment_expression "uStack_40 = puVar19[-1]" identifier = (subscript_expression "puVar19[-1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = puVar18;" (assignment_expression "param_1[1] = puVar18" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar8 = (uint)uStack_40;" (assignment_expression "uVar8 = (uint)uStack_40" identifier = (cast_expression "(uint)uStack_40" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uStack_40 & 0xffffffff ^ uVar17;" (assignment_expression "uVar10 = uStack_40 & 0xffffffff ^ uVar17" identifier = (binary_expression "uStack_40 & 0xffffffff ^ uVar17" (binary_expression "uStack_40 & 0xffffffff" identifier & number_literal) ^ identifier)) ;) (expression_statement "local_60 = uVar10 % (ulong)param_1[0xb];" (assignment_expression "local_60 = uVar10 % (ulong)param_1[0xb]" identifier = (binary_expression "uVar10 % (ulong)param_1[0xb]" identifier % (cast_expression "(ulong)param_1[0xb]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ])))) ;) (expression_statement "plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);" (assignment_expression "plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" identifier = (cast_expression "(long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" identifier (argument_list "(param_1 + 10,local_60,&local_48,uVar10)" ( (binary_expression "param_1 + 10" identifier + number_literal) , identifier , (pointer_expression "&local_48" & identifier) , identifier ))))) ;) (if_statement "if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;" if (parenthesized_expression "((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0))" ( (binary_expression "(plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)" (parenthesized_expression "(plVar11 != (long *)0x0)" ( (binary_expression "plVar11 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar19 = puVar18, *plVar11 != 0)" ( (comma_expression "puVar19 = puVar18, *plVar11 != 0" (assignment_expression "puVar19 = puVar18" identifier = identifier) , (binary_expression "*plVar11 != 0" (pointer_expression "*plVar11" * identifier) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "plVar11 = (long *)FUN_002d94a0(0x20);" (assignment_expression "plVar11 = (long *)FUN_002d94a0(0x20)" identifier = (cast_expression "(long *)FUN_002d94a0(0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "uVar4 = param_1[0xd];" (assignment_expression "uVar4 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[0xb];" (assignment_expression "uVar5 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "plVar11[1] = uVar17;" (assignment_expression "plVar11[1] = uVar17" (subscript_expression "plVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(plVar11 + 2) = uVar8;" (assignment_expression "*(undefined4 *)(plVar11 + 2) = uVar8" (pointer_expression "*(undefined4 *)(plVar11 + 2)" * (cast_expression "(undefined4 *)(plVar11 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11 + 2)" ( (binary_expression "plVar11 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*plVar11 = 0;" (assignment_expression "*plVar11 = 0" (pointer_expression "*plVar11" * identifier) = number_literal) ;) (expression_statement "cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);" (assignment_expression "cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1)" identifier = (call_expression "FUN_00319200(param_1 + 0xe,uVar5,uVar4,1)" identifier (argument_list "(param_1 + 0xe,uVar5,uVar4,1)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , identifier , identifier , number_literal )))) ;) (if_statement "if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        puVar12 = (undefined8 *)param_1[10];\n      }" { (expression_statement "puVar12 = (undefined8 *)param_1[10];" (assignment_expression "puVar12 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" else (compound_statement "{\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" { (if_statement "if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" if (parenthesized_expression "(extraout_RDX == 1)" ( (binary_expression "extraout_RDX == 1" identifier == number_literal) )) (compound_statement "{\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }" { (expression_statement "puVar12 = param_1 + 0x10;" (assignment_expression "puVar12 = 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" else (compound_statement "{\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" { (if_statement "if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }" if (parenthesized_expression "(0x1fffffffffffffff < extraout_RDX)" ( (binary_expression "0x1fffffffffffffff < extraout_RDX" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            FUN_00319420();\n          }" { comment comment (expression_statement "FUN_00319420();" (call_expression "FUN_00319420()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);" (assignment_expression "puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(extraout_RDX * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(extraout_RDX * 8)" identifier (argument_list "(extraout_RDX * 8)" ( (binary_expression "extraout_RDX * 8" identifier * number_literal) ))))) ;) (expression_statement "memset(puVar12,0,extraout_RDX * 8);" (call_expression "memset(puVar12,0,extraout_RDX * 8)" identifier (argument_list "(puVar12,0,extraout_RDX * 8)" ( identifier , number_literal , (binary_expression "extraout_RDX * 8" identifier * number_literal) ))) ;) }))) (expression_statement "plVar13 = (long *)param_1[0xc];" (assignment_expression "plVar13 = (long *)param_1[0xc]" identifier = (cast_expression "(long *)param_1[0xc]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (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 (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }" if (parenthesized_expression "(plVar13 != (long *)0x0)" ( (binary_expression "plVar13 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);" do (compound_statement "{\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          }" { (while_statement "while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }" { (expression_statement "plVar6 = (long *)*plVar13;" (assignment_expression "plVar6 = (long *)*plVar13" identifier = (cast_expression "(long *)*plVar13" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar13" * identifier))) ;) (expression_statement "uVar16 = (ulong)plVar13[3] % extraout_RDX;" (assignment_expression "uVar16 = (ulong)plVar13[3] % extraout_RDX" identifier = (binary_expression "(ulong)plVar13[3] % extraout_RDX" (cast_expression "(ulong)plVar13[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar13[3]" identifier [ number_literal ])) % identifier)) ;) (expression_statement "plVar2 = puVar12 + uVar16;" (assignment_expression "plVar2 = puVar12 + uVar16" identifier = (binary_expression "puVar12 + uVar16" identifier + identifier)) ;) (if_statement "if ((long *)*plVar2 == (long *)0x0) break;" if (parenthesized_expression "((long *)*plVar2 == (long *)0x0)" ( (binary_expression "(long *)*plVar2 == (long *)0x0" (cast_expression "(long *)*plVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar2" * identifier)) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "*plVar13 = *(long *)*plVar2;" (assignment_expression "*plVar13 = *(long *)*plVar2" (pointer_expression "*plVar13" * identifier) = (pointer_expression "*(long *)*plVar2" * (cast_expression "(long *)*plVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar2" * identifier)))) ;) (expression_statement "*(long **)*plVar2 = plVar13;" (assignment_expression "*(long **)*plVar2 = plVar13" (pointer_expression "*(long **)*plVar2" * (cast_expression "(long **)*plVar2" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*plVar2" * identifier))) = identifier) ;) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) (labeled_statement "LAB_002b5b1c:\n              plVar13 = plVar6;" statement_identifier : (expression_statement "plVar13 = plVar6;" (assignment_expression "plVar13 = plVar6" identifier = identifier) ;)) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" identifier = identifier) ;) (if_statement "if (plVar6 == (long *)0x0) goto LAB_002b5b68;" if (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002b5b68;" goto statement_identifier ;)) })) (expression_statement "*plVar13 = param_1[0xc];" (assignment_expression "*plVar13 = param_1[0xc]" (pointer_expression "*plVar13" * identifier) = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = plVar13;" (assignment_expression "param_1[0xc] = plVar13" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*plVar2 = (long)(param_1 + 0xc);" (assignment_expression "*plVar2 = (long)(param_1 + 0xc)" (pointer_expression "*plVar2" * identifier) = (cast_expression "(long)(param_1 + 0xc)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ;) (if_statement "if (*plVar13 == 0) goto LAB_002b5b1c;" if (parenthesized_expression "(*plVar13 == 0)" ( (binary_expression "*plVar13 == 0" (pointer_expression "*plVar13" * identifier) == number_literal) )) (goto_statement "goto LAB_002b5b1c;" goto statement_identifier ;)) (expression_statement "puVar12[uVar17] = plVar13;" (assignment_expression "puVar12[uVar17] = plVar13" (subscript_expression "puVar12[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "plVar13 = plVar6;" (assignment_expression "plVar13 = plVar6" identifier = identifier) ;) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" identifier = identifier) ;) }) while (parenthesized_expression "(plVar6 != (long *)0x0)" ( (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }" statement_identifier : (if_statement "if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }" if (parenthesized_expression "((undefined8 *)param_1[10] != param_1 + 0x10)" ( (binary_expression "(undefined8 *)param_1[10] != param_1 + 0x10" (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) != (binary_expression "param_1 + 0x10" identifier + number_literal)) )) (compound_statement "{\n          FUN_002dac70();\n        }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "param_1[0xb] = extraout_RDX;" (assignment_expression "param_1[0xb] = extraout_RDX" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_60 = uVar10 % extraout_RDX;" (assignment_expression "local_60 = uVar10 % extraout_RDX" identifier = (binary_expression "uVar10 % extraout_RDX" identifier % identifier)) ;) (expression_statement "param_1[10] = puVar12;" (assignment_expression "param_1[10] = puVar12" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "plVar11[3] = uVar10;" (assignment_expression "plVar11[3] = uVar10" (subscript_expression "plVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar13 = puVar12 + local_60;" (assignment_expression "plVar13 = puVar12 + local_60" identifier = (binary_expression "puVar12 + local_60" identifier + identifier)) ;) (if_statement "if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" if (parenthesized_expression "((long *)*plVar13 == (long *)0x0)" ( (binary_expression "(long *)*plVar13 == (long *)0x0" (cast_expression "(long *)*plVar13" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar13" * identifier)) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }" { (expression_statement "lVar7 = param_1[0xc];" (assignment_expression "lVar7 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = plVar11;" (assignment_expression "param_1[0xc] = plVar11" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*plVar11 = lVar7;" (assignment_expression "*plVar11 = lVar7" (pointer_expression "*plVar11" * identifier) = identifier) ;) (if_statement "if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }" if (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }" { (expression_statement "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;" (assignment_expression "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11" (subscript_expression "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]]" identifier [ (binary_expression "*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]" (pointer_expression "*(ulong *)(lVar7 + 0x18)" * (cast_expression "(ulong *)(lVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x18)" ( (binary_expression "lVar7 + 0x18" identifier + number_literal) )))) % (cast_expression "(ulong)param_1[0xb]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ]) = identifier) ;) })) (expression_statement "*plVar13 = (long)(param_1 + 0xc);" (assignment_expression "*plVar13 = (long)(param_1 + 0xc)" (pointer_expression "*plVar13" * identifier) = (cast_expression "(long)(param_1 + 0xc)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ;) }) (else_clause "else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" else (compound_statement "{\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" { (expression_statement "*plVar11 = *(long *)*plVar13;" (assignment_expression "*plVar11 = *(long *)*plVar13" (pointer_expression "*plVar11" * identifier) = (pointer_expression "*(long *)*plVar13" * (cast_expression "(long *)*plVar13" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar13" * identifier)))) ;) (expression_statement "*(long **)*plVar13 = plVar11;" (assignment_expression "*(long **)*plVar13 = plVar11" (pointer_expression "*(long **)*plVar13" * (cast_expression "(long **)*plVar13" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*plVar13" * 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 "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" identifier = (cast_expression "(ulong *)param_1[1]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }" if (parenthesized_expression "((undefined8 *)param_1[6] != (undefined8 *)0x0)" ( (binary_expression "(undefined8 *)param_1[6] != (undefined8 *)0x0" (cast_expression "(undefined8 *)param_1[6]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }" { (expression_statement "puVar12 = (undefined8 *)param_1[6];" (assignment_expression "puVar12 = (undefined8 *)param_1[6]" identifier = (cast_expression "(undefined8 *)param_1[6]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = param_1 + 5;" (assignment_expression "puVar14 = param_1 + 5" identifier = (binary_expression "param_1 + 5" identifier + number_literal)) ;) (do_statement "do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);" do (compound_statement "{\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        }" { (while_statement "while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }" while (parenthesized_expression "((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))))" ( (parenthesized_expression "(puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))" ( (comma_expression "puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" (assignment_expression "puVar15 = puVar12" identifier = identifier) , (binary_expression "(ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" (binary_expression "(ulong)puVar15[4] < local_48" (cast_expression "(ulong)puVar15[4]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar15[4]" identifier [ number_literal ])) < identifier) || (parenthesized_expression "((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" ( (parenthesized_expression "(puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))" ( (binary_expression "puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)" (binary_expression "puVar15[4] == local_48" (subscript_expression "puVar15[4]" identifier [ number_literal ]) == identifier) && (parenthesized_expression "(*(uint *)(puVar15 + 5) < (uint)uStack_40)" ( (binary_expression "*(uint *)(puVar15 + 5) < (uint)uStack_40" (pointer_expression "*(uint *)(puVar15 + 5)" * (cast_expression "(uint *)(puVar15 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 5)" ( (binary_expression "puVar15 + 5" identifier + number_literal) )))) < (cast_expression "(uint)uStack_40" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) )))) )) )) (compound_statement "{\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }" { (expression_statement "puVar1 = puVar15 + 3;" (assignment_expression "puVar1 = puVar15 + 3" identifier = (binary_expression "puVar15 + 3" identifier + number_literal)) ;) (expression_statement "puVar12 = (undefined8 *)*puVar1;" (assignment_expression "puVar12 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" identifier = identifier) ;) (if_statement "if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;" if (parenthesized_expression "((undefined8 *)*puVar1 == (undefined8 *)0x0)" ( (binary_expression "(undefined8 *)*puVar1 == (undefined8 *)0x0" (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002b5c02;" goto statement_identifier ;)) })) (expression_statement "puVar12 = (undefined8 *)puVar15[2];" (assignment_expression "puVar12 = (undefined8 *)puVar15[2]" identifier = (cast_expression "(undefined8 *)puVar15[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar15[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "((undefined8 *)puVar15[2] != (undefined8 *)0x0)" ( (binary_expression "(undefined8 *)puVar15[2] != (undefined8 *)0x0" (cast_expression "(undefined8 *)puVar15[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar15[2]" identifier [ number_literal ])) != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" statement_identifier : (if_statement "if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" if (parenthesized_expression "(((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40))))" ( (binary_expression "((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))" (parenthesized_expression "((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48))" ( (binary_expression "(param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)" (parenthesized_expression "(param_1 + 5 != puVar15)" ( (binary_expression "param_1 + 5 != puVar15" (binary_expression "param_1 + 5" identifier + number_literal) != identifier) )) && (parenthesized_expression "((ulong)puVar15[4] <= local_48)" ( (binary_expression "(ulong)puVar15[4] <= local_48" (cast_expression "(ulong)puVar15[4]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar15[4]" identifier [ number_literal ])) <= identifier) ))) )) && (parenthesized_expression "((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))" ( (parenthesized_expression "(local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40))" ( (binary_expression "local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)" (binary_expression "local_48 != puVar15[4]" identifier != (subscript_expression "puVar15[4]" identifier [ number_literal ])) || (parenthesized_expression "(*(uint *)(puVar15 + 5) <= (uint)uStack_40)" ( (binary_expression "*(uint *)(puVar15 + 5) <= (uint)uStack_40" (pointer_expression "*(uint *)(puVar15 + 5)" * (cast_expression "(uint *)(puVar15 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 5)" ( (binary_expression "puVar15 + 5" identifier + number_literal) )))) <= (cast_expression "(uint)uStack_40" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" { (expression_statement "plVar11 = (long *)puVar15[8];" (assignment_expression "plVar11 = (long *)puVar15[8]" identifier = (cast_expression "(long *)puVar15[8]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar15[8]" identifier [ number_literal ]))) ;) (labeled_statement "joined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" if (parenthesized_expression "(plVar11 != (long *)0x0)" ( (binary_expression "plVar11 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" { (do_statement "do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );" do (compound_statement "{\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            }" { (expression_statement "uVar3 = *(uint *)(plVar11 + 2);" (assignment_expression "uVar3 = *(uint *)(plVar11 + 2)" identifier = (pointer_expression "*(uint *)(plVar11 + 2)" * (cast_expression "(uint *)(plVar11 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11 + 2)" ( (binary_expression "plVar11 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = plVar11[1];" (assignment_expression "uVar17 = plVar11[1]" identifier = (subscript_expression "plVar11[1]" identifier [ number_literal ])) ;) (expression_statement "plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);" (assignment_expression "plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" identifier = (cast_expression "(long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" identifier (argument_list "(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" ( (binary_expression "param_1 + 10" identifier + number_literal) , (binary_expression "(uVar3 ^ uVar17) % (ulong)param_1[0xb]" (parenthesized_expression "(uVar3 ^ uVar17)" ( (binary_expression "uVar3 ^ uVar17" identifier ^ identifier) )) % (cast_expression "(ulong)param_1[0xb]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) , (binary_expression "plVar11 + 1" identifier + number_literal) ))))) ;) (if_statement "if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }" if (parenthesized_expression "((plVar13 == (long *)0x0) || (*plVar13 == 0))" ( (binary_expression "(plVar13 == (long *)0x0) || (*plVar13 == 0)" (parenthesized_expression "(plVar13 == (long *)0x0)" ( (binary_expression "plVar13 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*plVar13 == 0)" ( (binary_expression "*plVar13 == 0" (pointer_expression "*plVar13" * identifier) == number_literal) ))) )) (compound_statement "{\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }" { (if_statement "if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;" if (parenthesized_expression "((ulong *)param_1[2] != puVar19)" ( (binary_expression "(ulong *)param_1[2] != puVar19" (cast_expression "(ulong *)param_1[2]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) != identifier) )) (goto_statement "goto code_r0x002b5c6f;" goto statement_identifier ;)) (expression_statement "FUN_002b5d30(param_1,puVar19,plVar11 + 1);" (call_expression "FUN_002b5d30(param_1,puVar19,plVar11 + 1)" identifier (argument_list "(param_1,puVar19,plVar11 + 1)" ( identifier , identifier , (binary_expression "plVar11 + 1" identifier + number_literal) ))) ;) (expression_statement "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" identifier = (cast_expression "(ulong *)param_1[1]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "plVar11 = (long *)*plVar11;" (assignment_expression "plVar11 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (plVar11 == (long *)0x0) break;" if (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) })) (expression_statement "puVar20 = (ulong *)*param_1;" (assignment_expression "puVar20 = (ulong *)*param_1" identifier = (cast_expression "(ulong *)*param_1" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar19 == puVar20) goto LAB_002b5c9c;" if (parenthesized_expression "(puVar19 == puVar20)" ( (binary_expression "puVar19 == puVar20" identifier == identifier) )) (goto_statement "goto LAB_002b5c9c;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_002b5c9c:\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_r0x002b5c6f:\n  *puVar19 = uVar17;" statement_identifier : (expression_statement "*puVar19 = uVar17;" (assignment_expression "*puVar19 = uVar17" (pointer_expression "*puVar19" * identifier) = identifier) ;)) (expression_statement "*(uint *)(puVar19 + 1) = uVar3;" (assignment_expression "*(uint *)(puVar19 + 1) = uVar3" (pointer_expression "*(uint *)(puVar19 + 1)" * (cast_expression "(uint *)(puVar19 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + 1)" ( (binary_expression "puVar19 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[1] = puVar19 + 2;" (assignment_expression "param_1[1] = puVar19 + 2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (expression_statement "plVar11 = (long *)*plVar11;" (assignment_expression "plVar11 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (expression_statement "puVar19 = puVar19 + 2;" (assignment_expression "puVar19 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (goto_statement "goto joined_r0x002b5c21;" goto statement_identifier ;) })))
(translation_unit "/* 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  _Rb_tree_header *p_Var1;\n  size_type *psVar2;\n  _Base_ptr *pp_Var3;\n  uint uVar4;\n  Relobj *pRVar5;\n  _Hash_node_base *p_Var6;\n  __bucket_type *pp_Var7;\n  _Base_ptr p_Var8;\n  char cVar9;\n  _Hash_node_base *p_Var10;\n  __node_base *p_Var11;\n  _Hash_node_base *p_Var12;\n  __bucket_type *__s;\n  _Hash_node_base *p_Var13;\n  _Base_ptr p_Var14;\n  _Base_ptr p_Var15;\n  ulong uVar16;\n  ulong extraout_RDX;\n  ulong uVar17;\n  pointer ppVar18;\n  iterator __position;\n  pointer ppVar19;\n  long *plVar20;\n  ulong local_60;\n  Section_id entry;\n  \n  ppVar19 = (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  p_Var1 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  __position._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  while (__position._M_current != ppVar19) {\n    while( true ) {\n      pRVar5 = __position._M_current[-1].first;\n      ppVar18 = __position._M_current + -1;\n      entry.first = ppVar18->first;\n      entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;\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 = ppVar18;\n      uVar4 = entry.second;\n      p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);\n      local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var11 = 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_60,&entry,(__hash_code)p_Var10);\n      if ((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var12 = (_Hash_node_base *)operator_new(0x20);\n      uVar16 = (this->referenced_list_)._M_h._M_element_count;\n      uVar17 = (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;\n      *(uint *)&p_Var12[2]._M_nxt = uVar4;\n      p_Var12->_M_nxt = (_Hash_node_base *)0x0;\n      cVar9 = std::__detail::_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);\n      if (cVar9 == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }\n      p_Var12[3]._M_nxt = p_Var10;\n      pp_Var7 = __s + local_60;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }\n      p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      psVar2 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar2 = *psVar2 + 1;\n      __position._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 (p_Var8 != (_Base_ptr)0x0) {\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x002b5c6f:\n  (__position._M_current)->first = pRVar5;\n  (__position._M_current)->second = uVar4;\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 = __position._M_current + 1;\n  plVar20 = (long *)*plVar20;\n  __position._M_current = __position._M_current + 1;\n  goto joined_r0x002b5c21;\n}\n\n" comment comment (function_definition "void __thiscall gold::Garbage_collection::do_transitive_closure(Garbage_collection *this)\n\n{\n  _Rb_tree_header *p_Var1;\n  size_type *psVar2;\n  _Base_ptr *pp_Var3;\n  uint uVar4;\n  Relobj *pRVar5;\n  _Hash_node_base *p_Var6;\n  __bucket_type *pp_Var7;\n  _Base_ptr p_Var8;\n  char cVar9;\n  _Hash_node_base *p_Var10;\n  __node_base *p_Var11;\n  _Hash_node_base *p_Var12;\n  __bucket_type *__s;\n  _Hash_node_base *p_Var13;\n  _Base_ptr p_Var14;\n  _Base_ptr p_Var15;\n  ulong uVar16;\n  ulong extraout_RDX;\n  ulong uVar17;\n  pointer ppVar18;\n  iterator __position;\n  pointer ppVar19;\n  long *plVar20;\n  ulong local_60;\n  Section_id entry;\n  \n  ppVar19 = (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  p_Var1 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  __position._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  while (__position._M_current != ppVar19) {\n    while( true ) {\n      pRVar5 = __position._M_current[-1].first;\n      ppVar18 = __position._M_current + -1;\n      entry.first = ppVar18->first;\n      entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;\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 = ppVar18;\n      uVar4 = entry.second;\n      p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);\n      local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var11 = 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_60,&entry,(__hash_code)p_Var10);\n      if ((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var12 = (_Hash_node_base *)operator_new(0x20);\n      uVar16 = (this->referenced_list_)._M_h._M_element_count;\n      uVar17 = (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;\n      *(uint *)&p_Var12[2]._M_nxt = uVar4;\n      p_Var12->_M_nxt = (_Hash_node_base *)0x0;\n      cVar9 = std::__detail::_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);\n      if (cVar9 == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }\n      p_Var12[3]._M_nxt = p_Var10;\n      pp_Var7 = __s + local_60;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }\n      p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      psVar2 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar2 = *psVar2 + 1;\n      __position._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 (p_Var8 != (_Base_ptr)0x0) {\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x002b5c6f:\n  (__position._M_current)->first = pRVar5;\n  (__position._M_current)->second = uVar4;\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 = __position._M_current + 1;\n  plVar20 = (long *)*plVar20;\n  __position._M_current = __position._M_current + 1;\n  goto joined_r0x002b5c21;\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  _Rb_tree_header *p_Var1;\n  size_type *psVar2;\n  _Base_ptr *pp_Var3;\n  uint uVar4;\n  Relobj *pRVar5;\n  _Hash_node_base *p_Var6;\n  __bucket_type *pp_Var7;\n  _Base_ptr p_Var8;\n  char cVar9;\n  _Hash_node_base *p_Var10;\n  __node_base *p_Var11;\n  _Hash_node_base *p_Var12;\n  __bucket_type *__s;\n  _Hash_node_base *p_Var13;\n  _Base_ptr p_Var14;\n  _Base_ptr p_Var15;\n  ulong uVar16;\n  ulong extraout_RDX;\n  ulong uVar17;\n  pointer ppVar18;\n  iterator __position;\n  pointer ppVar19;\n  long *plVar20;\n  ulong local_60;\n  Section_id entry;\n  \n  ppVar19 = (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  p_Var1 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;\n  __position._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  while (__position._M_current != ppVar19) {\n    while( true ) {\n      pRVar5 = __position._M_current[-1].first;\n      ppVar18 = __position._M_current + -1;\n      entry.first = ppVar18->first;\n      entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;\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 = ppVar18;\n      uVar4 = entry.second;\n      p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);\n      local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var11 = 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_60,&entry,(__hash_code)p_Var10);\n      if ((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var12 = (_Hash_node_base *)operator_new(0x20);\n      uVar16 = (this->referenced_list_)._M_h._M_element_count;\n      uVar17 = (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;\n      *(uint *)&p_Var12[2]._M_nxt = uVar4;\n      p_Var12->_M_nxt = (_Hash_node_base *)0x0;\n      cVar9 = std::__detail::_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);\n      if (cVar9 == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }\n      p_Var12[3]._M_nxt = p_Var10;\n      pp_Var7 = __s + local_60;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }\n      p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      psVar2 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar2 = *psVar2 + 1;\n      __position._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 (p_Var8 != (_Base_ptr)0x0) {\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  this->is_worklist_ready_ = true;\n  return;\ncode_r0x002b5c6f:\n  (__position._M_current)->first = pRVar5;\n  (__position._M_current)->second = uVar4;\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 = __position._M_current + 1;\n  plVar20 = (long *)*plVar20;\n  __position._M_current = __position._M_current + 1;\n  goto joined_r0x002b5c21;\n}" { (declaration "_Rb_tree_header *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "size_type *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "_Base_ptr *pp_Var3;" type_identifier (pointer_declarator "*pp_Var3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "Relobj *pRVar5;" type_identifier (pointer_declarator "*pRVar5" * identifier) ;) (declaration "_Hash_node_base *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "__bucket_type *pp_Var7;" type_identifier (pointer_declarator "*pp_Var7" * identifier) ;) (declaration "_Base_ptr p_Var8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "_Hash_node_base *p_Var10;" type_identifier (pointer_declarator "*p_Var10" * identifier) ;) (declaration "__node_base *p_Var11;" type_identifier (pointer_declarator "*p_Var11" * identifier) ;) (declaration "_Hash_node_base *p_Var12;" type_identifier (pointer_declarator "*p_Var12" * identifier) ;) (declaration "__bucket_type *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "_Hash_node_base *p_Var13;" type_identifier (pointer_declarator "*p_Var13" * identifier) ;) (declaration "_Base_ptr p_Var14;" type_identifier identifier ;) (declaration "_Base_ptr p_Var15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "ulong extraout_RDX;" type_identifier identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "pointer ppVar18;" type_identifier identifier ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "pointer ppVar19;" type_identifier identifier ;) (declaration "long *plVar20;" (sized_type_specifier "long" long) (pointer_declarator "*plVar20" * identifier) ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "Section_id entry;" type_identifier identifier ;) (expression_statement "ppVar19 = (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 "ppVar19 = (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 "ppVar19 = (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 "ppVar19 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "ppVar19 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "ppVar19 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "ppVar19 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "ppVar19 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "ppVar19 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "ppVar19 = (this->work_list_).\n            super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "ppVar19 = (this->work_list_).\n            super__Vector_base<std::pair<gold" (assignment_expression "ppVar19 = (this->work_list_).\n            super__Vector_base<std" identifier = (binary_expression "(this->work_list_).\n            super__Vector_base<std" (field_expression "(this->work_list_).\n            super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "p_Var1 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "p_Var1 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header" identifier = (pointer_expression "&(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->section_reloc_map_)._M_t._M_impl" (field_expression "(this->section_reloc_map_)._M_t" (parenthesized_expression "(this->section_reloc_map_)" ( (field_expression "this->section_reloc_map_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "__position._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 "__position._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 "__position._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 "__position._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 "__position._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 "__position._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 "__position._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "__position._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "__position._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "__position._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "__position._M_current =\n       (this->work_list_).\n       super__Vector_base<std::pair<gold" (assignment_expression "__position._M_current =\n       (this->work_list_).\n       super__Vector_base<std" (field_expression "__position._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) ;) (while_statement "while (__position._M_current != ppVar19) {\n    while( true ) {\n      pRVar5 = __position._M_current[-1].first;\n      ppVar18 = __position._M_current + -1;\n      entry.first = ppVar18->first;\n      entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;\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 = ppVar18;\n      uVar4 = entry.second;\n      p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);\n      local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var11 = 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_60,&entry,(__hash_code)p_Var10);\n      if ((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var12 = (_Hash_node_base *)operator_new(0x20);\n      uVar16 = (this->referenced_list_)._M_h._M_element_count;\n      uVar17 = (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;\n      *(uint *)&p_Var12[2]._M_nxt = uVar4;\n      p_Var12->_M_nxt = (_Hash_node_base *)0x0;\n      cVar9 = std::__detail::_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);\n      if (cVar9 == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }\n      p_Var12[3]._M_nxt = p_Var10;\n      pp_Var7 = __s + local_60;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }\n      p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      psVar2 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar2 = *psVar2 + 1;\n      __position._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 (p_Var8 != (_Base_ptr)0x0) {\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;\n    }\n  }" while (parenthesized_expression "(__position._M_current != ppVar19)" ( (binary_expression "__position._M_current != ppVar19" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n    while( true ) {\n      pRVar5 = __position._M_current[-1].first;\n      ppVar18 = __position._M_current + -1;\n      entry.first = ppVar18->first;\n      entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;\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 = ppVar18;\n      uVar4 = entry.second;\n      p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);\n      local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var11 = 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_60,&entry,(__hash_code)p_Var10);\n      if ((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var12 = (_Hash_node_base *)operator_new(0x20);\n      uVar16 = (this->referenced_list_)._M_h._M_element_count;\n      uVar17 = (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;\n      *(uint *)&p_Var12[2]._M_nxt = uVar4;\n      p_Var12->_M_nxt = (_Hash_node_base *)0x0;\n      cVar9 = std::__detail::_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);\n      if (cVar9 == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }\n      p_Var12[3]._M_nxt = p_Var10;\n      pp_Var7 = __s + local_60;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }\n      p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      psVar2 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar2 = *psVar2 + 1;\n      __position._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 (p_Var8 != (_Base_ptr)0x0) {\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;\n    }\n  }" { (while_statement "while( true ) {\n      pRVar5 = __position._M_current[-1].first;\n      ppVar18 = __position._M_current + -1;\n      entry.first = ppVar18->first;\n      entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;\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 = ppVar18;\n      uVar4 = entry.second;\n      p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);\n      local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var11 = 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_60,&entry,(__hash_code)p_Var10);\n      if ((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var12 = (_Hash_node_base *)operator_new(0x20);\n      uVar16 = (this->referenced_list_)._M_h._M_element_count;\n      uVar17 = (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;\n      *(uint *)&p_Var12[2]._M_nxt = uVar4;\n      p_Var12->_M_nxt = (_Hash_node_base *)0x0;\n      cVar9 = std::__detail::_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);\n      if (cVar9 == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }\n      p_Var12[3]._M_nxt = p_Var10;\n      pp_Var7 = __s + local_60;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }\n      p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      psVar2 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar2 = *psVar2 + 1;\n      __position._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 (p_Var8 != (_Base_ptr)0x0) {\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pRVar5 = __position._M_current[-1].first;\n      ppVar18 = __position._M_current + -1;\n      entry.first = ppVar18->first;\n      entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;\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 = ppVar18;\n      uVar4 = entry.second;\n      p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);\n      local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var11 = 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_60,&entry,(__hash_code)p_Var10);\n      if ((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;\n      p_Var12 = (_Hash_node_base *)operator_new(0x20);\n      uVar16 = (this->referenced_list_)._M_h._M_element_count;\n      uVar17 = (this->referenced_list_)._M_h._M_bucket_count;\n      p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;\n      *(uint *)&p_Var12[2]._M_nxt = uVar4;\n      p_Var12->_M_nxt = (_Hash_node_base *)0x0;\n      cVar9 = std::__detail::_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);\n      if (cVar9 == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }\n      p_Var12[3]._M_nxt = p_Var10;\n      pp_Var7 = __s + local_60;\n      if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }\n      p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;\n      psVar2 = &(this->referenced_list_)._M_h._M_element_count;\n      *psVar2 = *psVar2 + 1;\n      __position._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 (p_Var8 != (_Base_ptr)0x0) {\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;\n    }" { (expression_statement "pRVar5 = __position._M_current[-1].first;" (assignment_expression "pRVar5 = __position._M_current[-1].first" identifier = (field_expression "__position._M_current[-1].first" (subscript_expression "__position._M_current[-1]" (field_expression "__position._M_current" identifier . field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "ppVar18 = __position._M_current + -1;" (assignment_expression "ppVar18 = __position._M_current + -1" identifier = (binary_expression "__position._M_current + -1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (expression_statement "entry.first = ppVar18->first;" (assignment_expression "entry.first = ppVar18->first" (field_expression "entry.first" identifier . field_identifier) = (field_expression "ppVar18->first" identifier -> field_identifier)) ;) (expression_statement "entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second;" (assignment_expression "entry._8_8_ = *(undefined8 *)&__position._M_current[-1].second" (field_expression "entry._8_8_" identifier . field_identifier) = (pointer_expression "*(undefined8 *)&__position._M_current[-1].second" * (cast_expression "(undefined8 *)&__position._M_current[-1].second" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__position._M_current[-1].second" & (field_expression "__position._M_current[-1].second" (subscript_expression "__position._M_current[-1]" (field_expression "__position._M_current" identifier . field_identifier) [ number_literal ]) . field_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 = ppVar18;" (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 = ppVar18" (field_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl._M_finish" (field_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_>\n      ._M_impl" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "(this->work_list_).\n      super__Vector_base<std::pair<gold" (binary_expression "(this->work_list_).\n      super__Vector_base<std" (field_expression "(this->work_list_).\n      super__Vector_base" (parenthesized_expression "(this->work_list_)" ( (field_expression "this->work_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Relobj" : : identifier) * (ERROR "," ,) identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "uVar4 = entry.second;" (assignment_expression "uVar4 = entry.second" identifier = (field_expression "entry.second" identifier . field_identifier)) ;) (expression_statement "p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5);" (assignment_expression "p_Var10 = (_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5)" identifier = (cast_expression "(_Hash_node_base *)(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5)" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(entry._8_8_ & 0xffffffff ^ (ulong)pRVar5)" ( (binary_expression "entry._8_8_ & 0xffffffff ^ (ulong)pRVar5" (binary_expression "entry._8_8_ & 0xffffffff" (field_expression "entry._8_8_" identifier . field_identifier) & number_literal) ^ (cast_expression "(ulong)pRVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) ;) (expression_statement "local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count;" (assignment_expression "local_60 = (ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count" identifier = (binary_expression "(ulong)p_Var10 % (this->referenced_list_)._M_h._M_bucket_count" (cast_expression "(ulong)p_Var10" ( (type_descriptor "ulong" 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))) ;) (ERROR "p_Var11 = 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_Var11 = 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_60,&entry,(__hash_code)p_Var10);" 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_60,&entry,(__hash_code)p_Var10);" 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_60,&entry,(__hash_code)p_Var10);" 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_60,&entry,(__hash_code)p_Var10);" 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_60,&entry,(__hash_code)p_Var10);" (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_60,&entry,(__hash_code)p_Var10)" (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_60,&entry,(__hash_code)p_Var10)" 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_60,&entry,(__hash_code)p_Var10)" (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_60,&entry,(__hash_code)p_Var10)" 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_60,&entry,(__hash_code)p_Var10)" ( (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)p_Var10" ( (type_descriptor "__hash_code" type_identifier) ) identifier) )))))) ;))))) (if_statement "if ((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)) break;" if (parenthesized_expression "((p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0))" ( (binary_expression "(p_Var11 != (__node_base *)0x0) &&\n         (__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)" (parenthesized_expression "(p_Var11 != (__node_base *)0x0)" ( (binary_expression "p_Var11 != (__node_base *)0x0" identifier != (cast_expression "(__node_base *)0x0" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0)" ( (comma_expression "__position._M_current = ppVar18, p_Var11->_M_nxt != (_Hash_node_base *)0x0" (assignment_expression "__position._M_current = ppVar18" (field_expression "__position._M_current" identifier . field_identifier) = identifier) , (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))) ))) )) (break_statement "break;" break ;)) (expression_statement "p_Var12 = (_Hash_node_base *)operator_new(0x20);" (assignment_expression "p_Var12 = (_Hash_node_base *)operator_new(0x20)" identifier = (cast_expression "(_Hash_node_base *)operator_new(0x20)" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "uVar16 = (this->referenced_list_)._M_h._M_element_count;" (assignment_expression "uVar16 = (this->referenced_list_)._M_h._M_element_count" identifier = (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 "uVar17 = (this->referenced_list_)._M_h._M_bucket_count;" (assignment_expression "uVar17 = (this->referenced_list_)._M_h._M_bucket_count" identifier = (field_expression "(this->referenced_list_)._M_h._M_bucket_count" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5;" (assignment_expression "p_Var12[1]._M_nxt = (_Hash_node_base *)pRVar5" (field_expression "p_Var12[1]._M_nxt" (subscript_expression "p_Var12[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_Hash_node_base *)pRVar5" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(uint *)&p_Var12[2]._M_nxt = uVar4;" (assignment_expression "*(uint *)&p_Var12[2]._M_nxt = uVar4" (pointer_expression "*(uint *)&p_Var12[2]._M_nxt" * (cast_expression "(uint *)&p_Var12[2]._M_nxt" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var12[2]._M_nxt" & (field_expression "p_Var12[2]._M_nxt" (subscript_expression "p_Var12[2]" identifier [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "p_Var12->_M_nxt = (_Hash_node_base *)0x0;" (assignment_expression "p_Var12->_M_nxt = (_Hash_node_base *)0x0" (field_expression "p_Var12->_M_nxt" identifier -> field_identifier) = (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (ERROR "cVar9 = std::" (assignment_expression "cVar9 = std" identifier = identifier) : :) (labeled_statement "__detail::_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);" statement_identifier : (ERROR ":" :) (labeled_statement "_Prime_rehash_policy::_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1);" (call_expression "_M_need_rehash\n                        (&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1)" identifier (argument_list "(&(this->referenced_list_)._M_h._M_rehash_policy,uVar17,uVar16,1)" ( (pointer_expression "&(this->referenced_list_)._M_h._M_rehash_policy" & (field_expression "(this->referenced_list_)._M_h._M_rehash_policy" (field_expression "(this->referenced_list_)._M_h" (parenthesized_expression "(this->referenced_list_)" ( (field_expression "this->referenced_list_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , identifier , identifier , number_literal ))) ;))) (if_statement "if (cVar9 == '\0') {\n        __s = (this->referenced_list_)._M_h._M_buckets;\n      }\n      else {\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (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 (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }" else (compound_statement "{\n        if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }\n        p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }\nLAB_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;\n        if (pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }\n        (this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;\n        local_60 = (ulong)p_Var10 % extraout_RDX;\n        (this->referenced_list_)._M_h._M_buckets = __s;\n      }" { (if_statement "if (extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }" if (parenthesized_expression "(extraout_RDX == 1)" ( (binary_expression "extraout_RDX == 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 (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }" else (compound_statement "{\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */\n          __s = (__bucket_type *)operator_new(extraout_RDX * 8);\n          memset(__s,0,extraout_RDX * 8);\n        }" { (if_statement "if (0x1fffffffffffffff < extraout_RDX) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\n            std::__throw_bad_alloc();\n          }" if (parenthesized_expression "(0x1fffffffffffffff < extraout_RDX)" ( (binary_expression "0x1fffffffffffffff < extraout_RDX" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */\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 "()" ( ))) ;)) })) comment (expression_statement "__s = (__bucket_type *)operator_new(extraout_RDX * 8);" (assignment_expression "__s = (__bucket_type *)operator_new(extraout_RDX * 8)" identifier = (cast_expression "(__bucket_type *)operator_new(extraout_RDX * 8)" ( (type_descriptor "__bucket_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(extraout_RDX * 8)" identifier (argument_list "(extraout_RDX * 8)" ( (binary_expression "extraout_RDX * 8" identifier * number_literal) ))))) ;) (expression_statement "memset(__s,0,extraout_RDX * 8);" (call_expression "memset(__s,0,extraout_RDX * 8)" identifier (argument_list "(__s,0,extraout_RDX * 8)" ( identifier , number_literal , (binary_expression "extraout_RDX * 8" identifier * number_literal) ))) ;) }))) (expression_statement "p_Var13 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;" (assignment_expression "p_Var13 = (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_Var13 != (_Hash_node_base *)0x0) {\n          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }" if (parenthesized_expression "(p_Var13 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var13 != (_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          uVar16 = 0;\n          do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);\n        }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          } while (p_Var6 != (_Hash_node_base *)0x0);" do (compound_statement "{\n            while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }\n            p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n            (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13;\n            *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n            if (p_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;\n            __s[uVar16] = p_Var13;\n            p_Var13 = p_Var6;\n            uVar16 = uVar17;\n          }" { (while_statement "while( true ) {\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              p_Var6 = p_Var13->_M_nxt;\n              uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;\n              pp_Var7 = __s + uVar17;\n              if (*pp_Var7 == (__bucket_type)0x0) break;\n              p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;\n              (*pp_Var7)->_M_nxt = p_Var13;\n              uVar17 = uVar16;\nLAB_002b5b1c:\n              p_Var13 = p_Var6;\n              uVar16 = uVar17;\n              if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;\n            }" { (expression_statement "p_Var6 = p_Var13->_M_nxt;" (assignment_expression "p_Var6 = p_Var13->_M_nxt" identifier = (field_expression "p_Var13->_M_nxt" identifier -> field_identifier)) ;) (expression_statement "uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX;" (assignment_expression "uVar17 = (ulong)p_Var13[3]._M_nxt % extraout_RDX" identifier = (binary_expression "(ulong)p_Var13[3]._M_nxt % extraout_RDX" (cast_expression "(ulong)p_Var13[3]._M_nxt" ( (type_descriptor "ulong" type_identifier) ) (field_expression "p_Var13[3]._M_nxt" (subscript_expression "p_Var13[3]" identifier [ number_literal ]) . field_identifier)) % identifier)) ;) (expression_statement "pp_Var7 = __s + uVar17;" (assignment_expression "pp_Var7 = __s + uVar17" identifier = (binary_expression "__s + uVar17" identifier + identifier)) ;) (if_statement "if (*pp_Var7 == (__bucket_type)0x0) break;" if (parenthesized_expression "(*pp_Var7 == (__bucket_type)0x0)" ( (binary_expression "*pp_Var7 == (__bucket_type)0x0" (pointer_expression "*pp_Var7" * identifier) == (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "p_Var13->_M_nxt = (*pp_Var7)->_M_nxt;" (assignment_expression "p_Var13->_M_nxt = (*pp_Var7)->_M_nxt" (field_expression "p_Var13->_M_nxt" identifier -> field_identifier) = (field_expression "(*pp_Var7)->_M_nxt" (parenthesized_expression "(*pp_Var7)" ( (pointer_expression "*pp_Var7" * identifier) )) -> field_identifier)) ;) (expression_statement "(*pp_Var7)->_M_nxt = p_Var13;" (assignment_expression "(*pp_Var7)->_M_nxt = p_Var13" (field_expression "(*pp_Var7)->_M_nxt" (parenthesized_expression "(*pp_Var7)" ( (pointer_expression "*pp_Var7" * identifier) )) -> field_identifier) = identifier) ;) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" identifier = identifier) ;) (labeled_statement "LAB_002b5b1c:\n              p_Var13 = p_Var6;" statement_identifier : (expression_statement "p_Var13 = p_Var6;" (assignment_expression "p_Var13 = p_Var6" identifier = identifier) ;)) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) (if_statement "if (p_Var6 == (_Hash_node_base *)0x0) goto LAB_002b5b68;" if (parenthesized_expression "(p_Var6 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var6 == (_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_002b5b68;" goto statement_identifier ;)) })) (expression_statement "p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;" (assignment_expression "p_Var13->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt" (field_expression "p_Var13->_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_Var13;" (assignment_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var13" (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_Var7 = &(this->referenced_list_)._M_h._M_before_begin;" (assignment_expression "*pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin" (pointer_expression "*pp_Var7" * 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_Var13->_M_nxt == (_Hash_node_base *)0x0) goto LAB_002b5b1c;" if (parenthesized_expression "(p_Var13->_M_nxt == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var13->_M_nxt == (_Hash_node_base *)0x0" (field_expression "p_Var13->_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_002b5b1c;" goto statement_identifier ;)) (expression_statement "__s[uVar16] = p_Var13;" (assignment_expression "__s[uVar16] = p_Var13" (subscript_expression "__s[uVar16]" identifier [ identifier ]) = identifier) ;) (expression_statement "p_Var13 = p_Var6;" (assignment_expression "p_Var13 = p_Var6" identifier = identifier) ;) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var6 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var6 != (_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_002b5b68:\n        pp_Var7 = (this->referenced_list_)._M_h._M_buckets;" statement_identifier : (expression_statement "pp_Var7 = (this->referenced_list_)._M_h._M_buckets;" (assignment_expression "pp_Var7 = (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_Var7 != &(this->referenced_list_)._M_h._M_single_bucket) {\n          operator_delete(pp_Var7);\n        }" if (parenthesized_expression "(pp_Var7 != &(this->referenced_list_)._M_h._M_single_bucket)" ( (binary_expression "pp_Var7 != &(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))) )) (compound_statement "{\n          operator_delete(pp_Var7);\n        }" { (expression_statement "operator_delete(pp_Var7);" (call_expression "operator_delete(pp_Var7)" identifier (argument_list "(pp_Var7)" ( identifier ))) ;) })) (expression_statement "(this->referenced_list_)._M_h._M_bucket_count = extraout_RDX;" (assignment_expression "(this->referenced_list_)._M_h._M_bucket_count = extraout_RDX" (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 "local_60 = (ulong)p_Var10 % extraout_RDX;" (assignment_expression "local_60 = (ulong)p_Var10 % extraout_RDX" identifier = (binary_expression "(ulong)p_Var10 % extraout_RDX" (cast_expression "(ulong)p_Var10" ( (type_descriptor "ulong" type_identifier) ) 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 "p_Var12[3]._M_nxt = p_Var10;" (assignment_expression "p_Var12[3]._M_nxt = p_Var10" (field_expression "p_Var12[3]._M_nxt" (subscript_expression "p_Var12[3]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pp_Var7 = __s + local_60;" (assignment_expression "pp_Var7 = __s + local_60" identifier = (binary_expression "__s + local_60" identifier + identifier)) ;) (if_statement "if (*pp_Var7 == (__bucket_type)0x0) {\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }\n      else {\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }" if (parenthesized_expression "(*pp_Var7 == (__bucket_type)0x0)" ( (binary_expression "*pp_Var7 == (__bucket_type)0x0" (pointer_expression "*pp_Var7" * identifier) == (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;\n        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;\n        p_Var12->_M_nxt = p_Var10;\n        if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }\n        *pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin;\n      }" { (expression_statement "p_Var10 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;" (assignment_expression "p_Var10 = (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_Var12;" (assignment_expression "(this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12" (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_Var12->_M_nxt = p_Var10;" (assignment_expression "p_Var12->_M_nxt = p_Var10" (field_expression "p_Var12->_M_nxt" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var10 != (_Hash_node_base *)0x0) {\n          __s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }" if (parenthesized_expression "(p_Var10 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var10 != (_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[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;\n        }" { (expression_statement "__s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;" (assignment_expression "__s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12" (subscript_expression "__s[(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count]" identifier [ (binary_expression "(ulong)p_Var10[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count" (cast_expression "(ulong)p_Var10[3]._M_nxt" ( (type_descriptor "ulong" type_identifier) ) (field_expression "p_Var10[3]._M_nxt" (subscript_expression "p_Var10[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_Var7 = &(this->referenced_list_)._M_h._M_before_begin;" (assignment_expression "*pp_Var7 = &(this->referenced_list_)._M_h._M_before_begin" (pointer_expression "*pp_Var7" * 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_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }" else (compound_statement "{\n        p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;\n        (*pp_Var7)->_M_nxt = p_Var12;\n      }" { (expression_statement "p_Var12->_M_nxt = (*pp_Var7)->_M_nxt;" (assignment_expression "p_Var12->_M_nxt = (*pp_Var7)->_M_nxt" (field_expression "p_Var12->_M_nxt" identifier -> field_identifier) = (field_expression "(*pp_Var7)->_M_nxt" (parenthesized_expression "(*pp_Var7)" ( (pointer_expression "*pp_Var7" * identifier) )) -> field_identifier)) ;) (expression_statement "(*pp_Var7)->_M_nxt = p_Var12;" (assignment_expression "(*pp_Var7)->_M_nxt = p_Var12" (field_expression "(*pp_Var7)->_M_nxt" (parenthesized_expression "(*pp_Var7)" ( (pointer_expression "*pp_Var7" * identifier) )) -> field_identifier) = identifier) ;) }))) (expression_statement "p_Var8 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;" (assignment_expression "p_Var8 = (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 "psVar2 = &(this->referenced_list_)._M_h._M_element_count;" (assignment_expression "psVar2 = &(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 "*psVar2 = *psVar2 + 1;" (assignment_expression "*psVar2 = *psVar2 + 1" (pointer_expression "*psVar2" * identifier) = (binary_expression "*psVar2 + 1" (pointer_expression "*psVar2" * identifier) + number_literal)) ;) (expression_statement "__position._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 "__position._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 "__position._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 "__position._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 "__position._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 "__position._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 "__position._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "__position._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "__position._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "__position._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "__position._M_current =\n           (this->work_list_).\n           super__Vector_base<std::pair<gold" (assignment_expression "__position._M_current =\n           (this->work_list_).\n           super__Vector_base<std" (field_expression "__position._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) ;) (if_statement "if (p_Var8 != (_Base_ptr)0x0) {\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }" if (parenthesized_expression "(p_Var8 != (_Base_ptr)0x0)" ( (binary_expression "p_Var8 != (_Base_ptr)0x0" identifier != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        p_Var14 = &p_Var1->_M_header;\n        do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);\nLAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }" { (expression_statement "p_Var14 = &p_Var1->_M_header;" (assignment_expression "p_Var14 = &p_Var1->_M_header" identifier = (pointer_expression "&p_Var1->_M_header" & (field_expression "p_Var1->_M_header" identifier -> field_identifier))) ;) (do_statement "do {\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        } while (p_Var15->_M_left != (_Base_ptr)0x0);" do (compound_statement "{\n          while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }\n          p_Var8 = p_Var15->_M_left;\n          p_Var14 = p_Var15;\n        }" { (while_statement "while ((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))) {\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }" while (parenthesized_expression "((p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second)))))" ( (parenthesized_expression "(p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))))" ( (comma_expression "p_Var15 = p_Var8, *(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second)))" (assignment_expression "p_Var15 = p_Var8" identifier = identifier) , (binary_expression "*(Relobj **)(p_Var15 + 1) < entry.first ||\n                 ((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second)))" (binary_expression "*(Relobj **)(p_Var15 + 1) < entry.first" (pointer_expression "*(Relobj **)(p_Var15 + 1)" * (cast_expression "(Relobj **)(p_Var15 + 1)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var15 + 1)" ( (binary_expression "p_Var15 + 1" identifier + number_literal) )))) < (field_expression "entry.first" identifier . field_identifier)) || (parenthesized_expression "((*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second)))" ( (parenthesized_expression "(*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second))" ( (binary_expression "*(Relobj **)(p_Var15 + 1) == entry.first &&\n                  (*(uint *)((long)(p_Var15 + 1) + 8) < entry.second)" (binary_expression "*(Relobj **)(p_Var15 + 1) == entry.first" (pointer_expression "*(Relobj **)(p_Var15 + 1)" * (cast_expression "(Relobj **)(p_Var15 + 1)" ( (type_descriptor "Relobj **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var15 + 1)" ( (binary_expression "p_Var15 + 1" identifier + number_literal) )))) == (field_expression "entry.first" identifier . field_identifier)) && (parenthesized_expression "(*(uint *)((long)(p_Var15 + 1) + 8) < entry.second)" ( (binary_expression "*(uint *)((long)(p_Var15 + 1) + 8) < entry.second" (pointer_expression "*(uint *)((long)(p_Var15 + 1) + 8)" * (cast_expression "(uint *)((long)(p_Var15 + 1) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)(p_Var15 + 1) + 8)" ( (binary_expression "(long)(p_Var15 + 1) + 8" (cast_expression "(long)(p_Var15 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(p_Var15 + 1)" ( (binary_expression "p_Var15 + 1" identifier + number_literal) ))) + number_literal) )))) < (field_expression "entry.second" identifier . field_identifier)) ))) )) )))) )) )) (compound_statement "{\n            pp_Var3 = &p_Var15->_M_right;\n            p_Var8 = *pp_Var3;\n            p_Var15 = p_Var14;\n            if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;\n          }" { (expression_statement "pp_Var3 = &p_Var15->_M_right;" (assignment_expression "pp_Var3 = &p_Var15->_M_right" identifier = (pointer_expression "&p_Var15->_M_right" & (field_expression "p_Var15->_M_right" identifier -> field_identifier))) ;) (expression_statement "p_Var8 = *pp_Var3;" (assignment_expression "p_Var8 = *pp_Var3" identifier = (pointer_expression "*pp_Var3" * identifier)) ;) (expression_statement "p_Var15 = p_Var14;" (assignment_expression "p_Var15 = p_Var14" identifier = identifier) ;) (if_statement "if (*pp_Var3 == (_Base_ptr)0x0) goto LAB_002b5c02;" if (parenthesized_expression "(*pp_Var3 == (_Base_ptr)0x0)" ( (binary_expression "*pp_Var3 == (_Base_ptr)0x0" (pointer_expression "*pp_Var3" * identifier) == (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_002b5c02;" goto statement_identifier ;)) })) (expression_statement "p_Var8 = p_Var15->_M_left;" (assignment_expression "p_Var8 = p_Var15->_M_left" identifier = (field_expression "p_Var15->_M_left" identifier -> field_identifier)) ;) (expression_statement "p_Var14 = p_Var15;" (assignment_expression "p_Var14 = p_Var15" identifier = identifier) ;) }) while (parenthesized_expression "(p_Var15->_M_left != (_Base_ptr)0x0)" ( (binary_expression "p_Var15->_M_left != (_Base_ptr)0x0" (field_expression "p_Var15->_M_left" identifier -> field_identifier) != (cast_expression "(_Base_ptr)0x0" ( (type_descriptor "_Base_ptr" type_identifier) ) number_literal)) )) ;) (labeled_statement "LAB_002b5c02:\n        if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }" statement_identifier : (if_statement "if (((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))) {\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }" if (parenthesized_expression "(((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second))))" ( (binary_expression "((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)) &&\n           ((entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))" (parenthesized_expression "((p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first))" ( (binary_expression "(p_Var1 != (_Rb_tree_header *)p_Var15) &&\n            ((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)" (parenthesized_expression "(p_Var1 != (_Rb_tree_header *)p_Var15)" ( (binary_expression "p_Var1 != (_Rb_tree_header *)p_Var15" identifier != (cast_expression "(_Rb_tree_header *)p_Var15" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) && (parenthesized_expression "((Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first)" ( (binary_expression "(Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count <= entry.first" (cast_expression "(Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((_Rb_tree_header *)p_Var15)->_M_node_count" (parenthesized_expression "((_Rb_tree_header *)p_Var15)" ( (cast_expression "(_Rb_tree_header *)p_Var15" ( (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_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)))" ( (parenthesized_expression "(entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second))" ( (binary_expression "entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count ||\n            (*(uint *)((long)p_Var15 + 0x28) <= entry.second)" (binary_expression "entry.first != (Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count" (field_expression "entry.first" identifier . field_identifier) != (cast_expression "(Relobj *)((_Rb_tree_header *)p_Var15)->_M_node_count" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((_Rb_tree_header *)p_Var15)->_M_node_count" (parenthesized_expression "((_Rb_tree_header *)p_Var15)" ( (cast_expression "(_Rb_tree_header *)p_Var15" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) || (parenthesized_expression "(*(uint *)((long)p_Var15 + 0x28) <= entry.second)" ( (binary_expression "*(uint *)((long)p_Var15 + 0x28) <= entry.second" (pointer_expression "*(uint *)((long)p_Var15 + 0x28)" * (cast_expression "(uint *)((long)p_Var15 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p_Var15 + 0x28)" ( (binary_expression "(long)p_Var15 + 0x28" (cast_expression "(long)p_Var15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) <= (field_expression "entry.second" identifier . field_identifier)) ))) )) ))) )) (compound_statement "{\n          plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);\njoined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }\n        }" { (expression_statement "plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18);" (assignment_expression "plVar20 = *(long **)((long)p_Var15 + 0x28 + 0x18)" identifier = (pointer_expression "*(long **)((long)p_Var15 + 0x28 + 0x18)" * (cast_expression "(long **)((long)p_Var15 + 0x28 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)p_Var15 + 0x28 + 0x18)" ( (binary_expression "(long)p_Var15 + 0x28 + 0x18" (binary_expression "(long)p_Var15 + 0x28" (cast_expression "(long)p_Var15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) + number_literal) ))))) ;) (labeled_statement "joined_r0x002b5c21:\n          if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if (plVar20 != (long *)0x0) {\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }" if (parenthesized_expression "(plVar20 != (long *)0x0)" ( (binary_expression "plVar20 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );\n          }" { (do_statement "do {\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            } while( true );" do (compound_statement "{\n              uVar4 = *(uint *)(plVar20 + 2);\n              pRVar5 = (Relobj *)plVar20[1];\n              uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;\n              p_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);\n              if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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              plVar20 = (long *)*plVar20;\n              if (plVar20 == (long *)0x0) break;\n            }" { (expression_statement "uVar4 = *(uint *)(plVar20 + 2);" (assignment_expression "uVar4 = *(uint *)(plVar20 + 2)" identifier = (pointer_expression "*(uint *)(plVar20 + 2)" * (cast_expression "(uint *)(plVar20 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar20 + 2)" ( (binary_expression "plVar20 + 2" identifier + number_literal) ))))) ;) (expression_statement "pRVar5 = (Relobj *)plVar20[1];" (assignment_expression "pRVar5 = (Relobj *)plVar20[1]" identifier = (cast_expression "(Relobj *)plVar20[1]" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar16 = (ulong)uVar4 ^ (ulong)pRVar5;" (assignment_expression "uVar16 = (ulong)uVar4 ^ (ulong)pRVar5" identifier = (binary_expression "(ulong)uVar4 ^ (ulong)pRVar5" (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) ^ (cast_expression "(ulong)pRVar5" ( (type_descriptor "ulong" type_identifier) ) identifier))) ;) (ERROR "p_Var11 = 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_Var11 = 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);" 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);" 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);" 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);" 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16);" (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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16)" (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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16)" 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16)" (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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16)" 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                                   uVar16 % (this->referenced_list_)._M_h._M_bucket_count,\n                                   (key_type *)(plVar20 + 1),uVar16)" ( (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 "uVar16 % (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 *)(plVar20 + 1)" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar20 + 1)" ( (binary_expression "plVar20 + 1" identifier + number_literal) ))) , identifier )))))) ;))))) (if_statement "if ((p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)) {\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0))" ( (binary_expression "(p_Var11 == (__node_base *)0x0) || (p_Var11->_M_nxt == (_Hash_node_base *)0x0)" (parenthesized_expression "(p_Var11 == (__node_base *)0x0)" ( (binary_expression "p_Var11 == (__node_base *)0x0" identifier == (cast_expression "(__node_base *)0x0" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (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)) ))) )) (compound_statement "{\n                if ((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 != __position._M_current) goto code_r0x002b5c6f;\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_,__position,(key_type *)(plVar20 + 1));\n                __position._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 ((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 != __position._M_current) goto code_r0x002b5c6f;" if (parenthesized_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_end_of_storage != __position._M_current)" ( (binary_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_end_of_storage != __position._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_end_of_storage" (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 "__position._M_current" identifier . field_identifier)) )) (goto_statement "goto code_r0x002b5c6f;" 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_,__position,(key_type *)(plVar20 + 1));" (binary_expression "Relobj*,_unsigned_int>&>\n                          (&this->work_list_,__position,(key_type *)(plVar20 + 1))" (binary_expression "Relobj*,_unsigned_int" identifier * (ERROR "," ,) identifier) > (pointer_expression "&>\n                          (&this->work_list_,__position,(key_type *)(plVar20 + 1))" & (ERROR ">" >) (parenthesized_expression "(&this->work_list_,__position,(key_type *)(plVar20 + 1))" ( (comma_expression "&this->work_list_,__position,(key_type *)(plVar20 + 1)" (pointer_expression "&this->work_list_" & (field_expression "this->work_list_" identifier -> field_identifier)) , (comma_expression "__position,(key_type *)(plVar20 + 1)" identifier , (cast_expression "(key_type *)(plVar20 + 1)" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar20 + 1)" ( (binary_expression "plVar20 + 1" identifier + number_literal) ))))) )))) ;) (expression_statement "__position._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 "__position._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 "__position._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 "__position._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 "__position._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 "__position._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 "__position._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "__position._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "__position._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "__position._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "__position._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std::pair<gold" (assignment_expression "__position._M_current =\n                     (this->work_list_).\n                     super__Vector_base<std" (field_expression "__position._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 "plVar20 = (long *)*plVar20;" (assignment_expression "plVar20 = (long *)*plVar20" identifier = (cast_expression "(long *)*plVar20" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar20" * identifier))) ;) (if_statement "if (plVar20 == (long *)0x0) break;" if (parenthesized_expression "(plVar20 == (long *)0x0)" ( (binary_expression "plVar20 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) })) (expression_statement "ppVar19 = (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 "ppVar19 = (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 "ppVar19 = (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 "ppVar19 = (this->work_list_).\n                super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_>_" (binary_expression "ppVar19 = (this->work_list_).\n                super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int>_" (binary_expression "ppVar19 = (this->work_list_).\n                super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "ppVar19 = (this->work_list_).\n                super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std::pair<gold" (binary_expression "ppVar19 = (this->work_list_).\n                super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std::allocator<std" (binary_expression "ppVar19 = (this->work_list_).\n                super__Vector_base<std::pair<gold::Relobj*,_unsigned_int>,_std" (binary_expression "ppVar19 = (this->work_list_).\n                super__Vector_base<std::pair<gold::Relobj*,_unsigned_int" (binary_expression "ppVar19 = (this->work_list_).\n                super__Vector_base<std::pair<gold" (assignment_expression "ppVar19 = (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 (__position._M_current == ppVar19) goto LAB_002b5c9c;" if (parenthesized_expression "(__position._M_current == ppVar19)" ( (binary_expression "__position._M_current == ppVar19" (field_expression "__position._M_current" identifier . field_identifier) == identifier) )) (goto_statement "goto LAB_002b5c9c;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_002b5c9c:\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_r0x002b5c6f:\n  (__position._M_current)->first = pRVar5;" statement_identifier : (expression_statement "(__position._M_current)->first = pRVar5;" (assignment_expression "(__position._M_current)->first = pRVar5" (field_expression "(__position._M_current)->first" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = identifier) ;)) (expression_statement "(__position._M_current)->second = uVar4;" (assignment_expression "(__position._M_current)->second = uVar4" (field_expression "(__position._M_current)->second" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._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 = __position._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 = __position._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 "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (expression_statement "plVar20 = (long *)*plVar20;" (assignment_expression "plVar20 = (long *)*plVar20" identifier = (cast_expression "(long *)*plVar20" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar20" * identifier))) ;) (expression_statement "__position._M_current = __position._M_current + 1;" (assignment_expression "__position._M_current = __position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (goto_statement "goto joined_r0x002b5c21;" goto statement_identifier ;) })))
(translation_unit "void FUN_002b59e0(undefined8 *param_1)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  long lVar7;\n  undefined4 uVar8;\n  char cVar9;\n  ulong uVar10;\n  long *plVar11;\n  undefined8 *puVar12;\n  long *plVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  ulong extraout_RDX;\n  ulong uVar16;\n  ulong uVar17;\n  ulong *puVar18;\n  ulong *puVar19;\n  ulong *puVar20;\n  ulong local_60;\n  ulong local_48;\n  ulong uStack_40;\n  \n  puVar20 = (ulong *)*param_1;\n  puVar19 = (ulong *)param_1[1];\n  while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x002b5c6f:\n  *puVar19 = uVar17;\n  *(uint *)(puVar19 + 1) = uVar3;\n  param_1[1] = puVar19 + 2;\n  plVar11 = (long *)*plVar11;\n  puVar19 = puVar19 + 2;\n  goto joined_r0x002b5c21;\n}\n\n" (function_definition "void FUN_002b59e0(undefined8 *param_1)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  long lVar7;\n  undefined4 uVar8;\n  char cVar9;\n  ulong uVar10;\n  long *plVar11;\n  undefined8 *puVar12;\n  long *plVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  ulong extraout_RDX;\n  ulong uVar16;\n  ulong uVar17;\n  ulong *puVar18;\n  ulong *puVar19;\n  ulong *puVar20;\n  ulong local_60;\n  ulong local_48;\n  ulong uStack_40;\n  \n  puVar20 = (ulong *)*param_1;\n  puVar19 = (ulong *)param_1[1];\n  while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x002b5c6f:\n  *puVar19 = uVar17;\n  *(uint *)(puVar19 + 1) = uVar3;\n  param_1[1] = puVar19 + 2;\n  plVar11 = (long *)*plVar11;\n  puVar19 = puVar19 + 2;\n  goto joined_r0x002b5c21;\n}" primitive_type (function_declarator "FUN_002b59e0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined8 *puVar1;\n  long *plVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  long lVar7;\n  undefined4 uVar8;\n  char cVar9;\n  ulong uVar10;\n  long *plVar11;\n  undefined8 *puVar12;\n  long *plVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  ulong extraout_RDX;\n  ulong uVar16;\n  ulong uVar17;\n  ulong *puVar18;\n  ulong *puVar19;\n  ulong *puVar20;\n  ulong local_60;\n  ulong local_48;\n  ulong uStack_40;\n  \n  puVar20 = (ulong *)*param_1;\n  puVar19 = (ulong *)param_1[1];\n  while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x002b5c6f:\n  *puVar19 = uVar17;\n  *(uint *)(puVar19 + 1) = uVar3;\n  param_1[1] = puVar19 + 2;\n  plVar11 = (long *)*plVar11;\n  puVar19 = puVar19 + 2;\n  goto joined_r0x002b5c21;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "undefined8 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "ulong extraout_RDX;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "ulong *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "ulong *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "ulong *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "ulong local_60;" type_identifier identifier ;) (declaration "ulong local_48;" type_identifier identifier ;) (declaration "ulong uStack_40;" type_identifier identifier ;) (expression_statement "puVar20 = (ulong *)*param_1;" (assignment_expression "puVar20 = (ulong *)*param_1" identifier = (cast_expression "(ulong *)*param_1" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" identifier = (cast_expression "(ulong *)param_1[1]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (while_statement "while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }" while (parenthesized_expression "(puVar19 != puVar20)" ( (binary_expression "puVar19 != puVar20" identifier != identifier) )) (compound_statement "{\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }" { (while_statement "while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }" { (expression_statement "uVar17 = puVar19[-2];" (assignment_expression "uVar17 = puVar19[-2]" identifier = (subscript_expression "puVar19[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar19 + -2;" (assignment_expression "puVar18 = puVar19 + -2" identifier = (binary_expression "puVar19 + -2" identifier + number_literal)) ;) (expression_statement "local_48 = *puVar18;" (assignment_expression "local_48 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "uStack_40 = puVar19[-1];" (assignment_expression "uStack_40 = puVar19[-1]" identifier = (subscript_expression "puVar19[-1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = puVar18;" (assignment_expression "param_1[1] = puVar18" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar8 = (uint)uStack_40;" (assignment_expression "uVar8 = (uint)uStack_40" identifier = (cast_expression "(uint)uStack_40" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uStack_40 & 0xffffffff ^ uVar17;" (assignment_expression "uVar10 = uStack_40 & 0xffffffff ^ uVar17" identifier = (binary_expression "uStack_40 & 0xffffffff ^ uVar17" (binary_expression "uStack_40 & 0xffffffff" identifier & number_literal) ^ identifier)) ;) (expression_statement "local_60 = uVar10 % (ulong)param_1[0xb];" (assignment_expression "local_60 = uVar10 % (ulong)param_1[0xb]" identifier = (binary_expression "uVar10 % (ulong)param_1[0xb]" identifier % (cast_expression "(ulong)param_1[0xb]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ])))) ;) (expression_statement "plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);" (assignment_expression "plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" identifier = (cast_expression "(long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" identifier (argument_list "(param_1 + 10,local_60,&local_48,uVar10)" ( (binary_expression "param_1 + 10" identifier + number_literal) , identifier , (pointer_expression "&local_48" & identifier) , identifier ))))) ;) (if_statement "if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;" if (parenthesized_expression "((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0))" ( (binary_expression "(plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)" (parenthesized_expression "(plVar11 != (long *)0x0)" ( (binary_expression "plVar11 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar19 = puVar18, *plVar11 != 0)" ( (comma_expression "puVar19 = puVar18, *plVar11 != 0" (assignment_expression "puVar19 = puVar18" identifier = identifier) , (binary_expression "*plVar11 != 0" (pointer_expression "*plVar11" * identifier) != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "plVar11 = (long *)FUN_002d94a0(0x20);" (assignment_expression "plVar11 = (long *)FUN_002d94a0(0x20)" identifier = (cast_expression "(long *)FUN_002d94a0(0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "uVar4 = param_1[0xd];" (assignment_expression "uVar4 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[0xb];" (assignment_expression "uVar5 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "plVar11[1] = uVar17;" (assignment_expression "plVar11[1] = uVar17" (subscript_expression "plVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(plVar11 + 2) = uVar8;" (assignment_expression "*(undefined4 *)(plVar11 + 2) = uVar8" (pointer_expression "*(undefined4 *)(plVar11 + 2)" * (cast_expression "(undefined4 *)(plVar11 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11 + 2)" ( (binary_expression "plVar11 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*plVar11 = 0;" (assignment_expression "*plVar11 = 0" (pointer_expression "*plVar11" * identifier) = number_literal) ;) (expression_statement "cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);" (assignment_expression "cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1)" identifier = (call_expression "FUN_00319200(param_1 + 0xe,uVar5,uVar4,1)" identifier (argument_list "(param_1 + 0xe,uVar5,uVar4,1)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) , identifier , identifier , number_literal )))) ;) (if_statement "if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" if (parenthesized_expression "(cVar9 == '\0')" ( (binary_expression "cVar9 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        puVar12 = (undefined8 *)param_1[10];\n      }" { (expression_statement "puVar12 = (undefined8 *)param_1[10];" (assignment_expression "puVar12 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" else (compound_statement "{\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" { (if_statement "if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" if (parenthesized_expression "(extraout_RDX == 1)" ( (binary_expression "extraout_RDX == 1" identifier == number_literal) )) (compound_statement "{\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }" { (expression_statement "puVar12 = param_1 + 0x10;" (assignment_expression "puVar12 = 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 (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" else (compound_statement "{\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" { (if_statement "if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }" if (parenthesized_expression "(0x1fffffffffffffff < extraout_RDX)" ( (binary_expression "0x1fffffffffffffff < extraout_RDX" number_literal < identifier) )) (compound_statement "{\n                    \n                    \n            FUN_00319420();\n          }" { (expression_statement "FUN_00319420();" (call_expression "FUN_00319420()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);" (assignment_expression "puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(extraout_RDX * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(extraout_RDX * 8)" identifier (argument_list "(extraout_RDX * 8)" ( (binary_expression "extraout_RDX * 8" identifier * number_literal) ))))) ;) (expression_statement "memset(puVar12,0,extraout_RDX * 8);" (call_expression "memset(puVar12,0,extraout_RDX * 8)" identifier (argument_list "(puVar12,0,extraout_RDX * 8)" ( identifier , number_literal , (binary_expression "extraout_RDX * 8" identifier * number_literal) ))) ;) }))) (expression_statement "plVar13 = (long *)param_1[0xc];" (assignment_expression "plVar13 = (long *)param_1[0xc]" identifier = (cast_expression "(long *)param_1[0xc]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (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 (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }" if (parenthesized_expression "(plVar13 != (long *)0x0)" ( (binary_expression "plVar13 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);" do (compound_statement "{\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          }" { (while_statement "while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }" { (expression_statement "plVar6 = (long *)*plVar13;" (assignment_expression "plVar6 = (long *)*plVar13" identifier = (cast_expression "(long *)*plVar13" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar13" * identifier))) ;) (expression_statement "uVar16 = (ulong)plVar13[3] % extraout_RDX;" (assignment_expression "uVar16 = (ulong)plVar13[3] % extraout_RDX" identifier = (binary_expression "(ulong)plVar13[3] % extraout_RDX" (cast_expression "(ulong)plVar13[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar13[3]" identifier [ number_literal ])) % identifier)) ;) (expression_statement "plVar2 = puVar12 + uVar16;" (assignment_expression "plVar2 = puVar12 + uVar16" identifier = (binary_expression "puVar12 + uVar16" identifier + identifier)) ;) (if_statement "if ((long *)*plVar2 == (long *)0x0) break;" if (parenthesized_expression "((long *)*plVar2 == (long *)0x0)" ( (binary_expression "(long *)*plVar2 == (long *)0x0" (cast_expression "(long *)*plVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar2" * identifier)) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "*plVar13 = *(long *)*plVar2;" (assignment_expression "*plVar13 = *(long *)*plVar2" (pointer_expression "*plVar13" * identifier) = (pointer_expression "*(long *)*plVar2" * (cast_expression "(long *)*plVar2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar2" * identifier)))) ;) (expression_statement "*(long **)*plVar2 = plVar13;" (assignment_expression "*(long **)*plVar2 = plVar13" (pointer_expression "*(long **)*plVar2" * (cast_expression "(long **)*plVar2" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*plVar2" * identifier))) = identifier) ;) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) (labeled_statement "LAB_002b5b1c:\n              plVar13 = plVar6;" statement_identifier : (expression_statement "plVar13 = plVar6;" (assignment_expression "plVar13 = plVar6" identifier = identifier) ;)) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" identifier = identifier) ;) (if_statement "if (plVar6 == (long *)0x0) goto LAB_002b5b68;" if (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002b5b68;" goto statement_identifier ;)) })) (expression_statement "*plVar13 = param_1[0xc];" (assignment_expression "*plVar13 = param_1[0xc]" (pointer_expression "*plVar13" * identifier) = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = plVar13;" (assignment_expression "param_1[0xc] = plVar13" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*plVar2 = (long)(param_1 + 0xc);" (assignment_expression "*plVar2 = (long)(param_1 + 0xc)" (pointer_expression "*plVar2" * identifier) = (cast_expression "(long)(param_1 + 0xc)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ;) (if_statement "if (*plVar13 == 0) goto LAB_002b5b1c;" if (parenthesized_expression "(*plVar13 == 0)" ( (binary_expression "*plVar13 == 0" (pointer_expression "*plVar13" * identifier) == number_literal) )) (goto_statement "goto LAB_002b5b1c;" goto statement_identifier ;)) (expression_statement "puVar12[uVar17] = plVar13;" (assignment_expression "puVar12[uVar17] = plVar13" (subscript_expression "puVar12[uVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "plVar13 = plVar6;" (assignment_expression "plVar13 = plVar6" identifier = identifier) ;) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" identifier = identifier) ;) }) while (parenthesized_expression "(plVar6 != (long *)0x0)" ( (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }" statement_identifier : (if_statement "if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }" if (parenthesized_expression "((undefined8 *)param_1[10] != param_1 + 0x10)" ( (binary_expression "(undefined8 *)param_1[10] != param_1 + 0x10" (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) != (binary_expression "param_1 + 0x10" identifier + number_literal)) )) (compound_statement "{\n          FUN_002dac70();\n        }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "param_1[0xb] = extraout_RDX;" (assignment_expression "param_1[0xb] = extraout_RDX" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_60 = uVar10 % extraout_RDX;" (assignment_expression "local_60 = uVar10 % extraout_RDX" identifier = (binary_expression "uVar10 % extraout_RDX" identifier % identifier)) ;) (expression_statement "param_1[10] = puVar12;" (assignment_expression "param_1[10] = puVar12" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "plVar11[3] = uVar10;" (assignment_expression "plVar11[3] = uVar10" (subscript_expression "plVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar13 = puVar12 + local_60;" (assignment_expression "plVar13 = puVar12 + local_60" identifier = (binary_expression "puVar12 + local_60" identifier + identifier)) ;) (if_statement "if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" if (parenthesized_expression "((long *)*plVar13 == (long *)0x0)" ( (binary_expression "(long *)*plVar13 == (long *)0x0" (cast_expression "(long *)*plVar13" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar13" * identifier)) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }" { (expression_statement "lVar7 = param_1[0xc];" (assignment_expression "lVar7 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[0xc] = plVar11;" (assignment_expression "param_1[0xc] = plVar11" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*plVar11 = lVar7;" (assignment_expression "*plVar11 = lVar7" (pointer_expression "*plVar11" * identifier) = identifier) ;) (if_statement "if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }" if (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }" { (expression_statement "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;" (assignment_expression "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11" (subscript_expression "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]]" identifier [ (binary_expression "*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]" (pointer_expression "*(ulong *)(lVar7 + 0x18)" * (cast_expression "(ulong *)(lVar7 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x18)" ( (binary_expression "lVar7 + 0x18" identifier + number_literal) )))) % (cast_expression "(ulong)param_1[0xb]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ]) = identifier) ;) })) (expression_statement "*plVar13 = (long)(param_1 + 0xc);" (assignment_expression "*plVar13 = (long)(param_1 + 0xc)" (pointer_expression "*plVar13" * identifier) = (cast_expression "(long)(param_1 + 0xc)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ;) }) (else_clause "else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" else (compound_statement "{\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" { (expression_statement "*plVar11 = *(long *)*plVar13;" (assignment_expression "*plVar11 = *(long *)*plVar13" (pointer_expression "*plVar11" * identifier) = (pointer_expression "*(long *)*plVar13" * (cast_expression "(long *)*plVar13" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar13" * identifier)))) ;) (expression_statement "*(long **)*plVar13 = plVar11;" (assignment_expression "*(long **)*plVar13 = plVar11" (pointer_expression "*(long **)*plVar13" * (cast_expression "(long **)*plVar13" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*plVar13" * 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 "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" identifier = (cast_expression "(ulong *)param_1[1]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }" if (parenthesized_expression "((undefined8 *)param_1[6] != (undefined8 *)0x0)" ( (binary_expression "(undefined8 *)param_1[6] != (undefined8 *)0x0" (cast_expression "(undefined8 *)param_1[6]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }" { (expression_statement "puVar12 = (undefined8 *)param_1[6];" (assignment_expression "puVar12 = (undefined8 *)param_1[6]" identifier = (cast_expression "(undefined8 *)param_1[6]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = param_1 + 5;" (assignment_expression "puVar14 = param_1 + 5" identifier = (binary_expression "param_1 + 5" identifier + number_literal)) ;) (do_statement "do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);" do (compound_statement "{\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        }" { (while_statement "while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }" while (parenthesized_expression "((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))))" ( (parenthesized_expression "(puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))" ( (comma_expression "puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" (assignment_expression "puVar15 = puVar12" identifier = identifier) , (binary_expression "(ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" (binary_expression "(ulong)puVar15[4] < local_48" (cast_expression "(ulong)puVar15[4]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar15[4]" identifier [ number_literal ])) < identifier) || (parenthesized_expression "((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" ( (parenthesized_expression "(puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))" ( (binary_expression "puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)" (binary_expression "puVar15[4] == local_48" (subscript_expression "puVar15[4]" identifier [ number_literal ]) == identifier) && (parenthesized_expression "(*(uint *)(puVar15 + 5) < (uint)uStack_40)" ( (binary_expression "*(uint *)(puVar15 + 5) < (uint)uStack_40" (pointer_expression "*(uint *)(puVar15 + 5)" * (cast_expression "(uint *)(puVar15 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 5)" ( (binary_expression "puVar15 + 5" identifier + number_literal) )))) < (cast_expression "(uint)uStack_40" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) )))) )) )) (compound_statement "{\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }" { (expression_statement "puVar1 = puVar15 + 3;" (assignment_expression "puVar1 = puVar15 + 3" identifier = (binary_expression "puVar15 + 3" identifier + number_literal)) ;) (expression_statement "puVar12 = (undefined8 *)*puVar1;" (assignment_expression "puVar12 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" identifier = identifier) ;) (if_statement "if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;" if (parenthesized_expression "((undefined8 *)*puVar1 == (undefined8 *)0x0)" ( (binary_expression "(undefined8 *)*puVar1 == (undefined8 *)0x0" (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002b5c02;" goto statement_identifier ;)) })) (expression_statement "puVar12 = (undefined8 *)puVar15[2];" (assignment_expression "puVar12 = (undefined8 *)puVar15[2]" identifier = (cast_expression "(undefined8 *)puVar15[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar15[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "((undefined8 *)puVar15[2] != (undefined8 *)0x0)" ( (binary_expression "(undefined8 *)puVar15[2] != (undefined8 *)0x0" (cast_expression "(undefined8 *)puVar15[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar15[2]" identifier [ number_literal ])) != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" statement_identifier : (if_statement "if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" if (parenthesized_expression "(((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40))))" ( (binary_expression "((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))" (parenthesized_expression "((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48))" ( (binary_expression "(param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)" (parenthesized_expression "(param_1 + 5 != puVar15)" ( (binary_expression "param_1 + 5 != puVar15" (binary_expression "param_1 + 5" identifier + number_literal) != identifier) )) && (parenthesized_expression "((ulong)puVar15[4] <= local_48)" ( (binary_expression "(ulong)puVar15[4] <= local_48" (cast_expression "(ulong)puVar15[4]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar15[4]" identifier [ number_literal ])) <= identifier) ))) )) && (parenthesized_expression "((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))" ( (parenthesized_expression "(local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40))" ( (binary_expression "local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)" (binary_expression "local_48 != puVar15[4]" identifier != (subscript_expression "puVar15[4]" identifier [ number_literal ])) || (parenthesized_expression "(*(uint *)(puVar15 + 5) <= (uint)uStack_40)" ( (binary_expression "*(uint *)(puVar15 + 5) <= (uint)uStack_40" (pointer_expression "*(uint *)(puVar15 + 5)" * (cast_expression "(uint *)(puVar15 + 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 5)" ( (binary_expression "puVar15 + 5" identifier + number_literal) )))) <= (cast_expression "(uint)uStack_40" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" { (expression_statement "plVar11 = (long *)puVar15[8];" (assignment_expression "plVar11 = (long *)puVar15[8]" identifier = (cast_expression "(long *)puVar15[8]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar15[8]" identifier [ number_literal ]))) ;) (labeled_statement "joined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" statement_identifier : (if_statement "if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" if (parenthesized_expression "(plVar11 != (long *)0x0)" ( (binary_expression "plVar11 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" { (do_statement "do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );" do (compound_statement "{\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            }" { (expression_statement "uVar3 = *(uint *)(plVar11 + 2);" (assignment_expression "uVar3 = *(uint *)(plVar11 + 2)" identifier = (pointer_expression "*(uint *)(plVar11 + 2)" * (cast_expression "(uint *)(plVar11 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11 + 2)" ( (binary_expression "plVar11 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = plVar11[1];" (assignment_expression "uVar17 = plVar11[1]" identifier = (subscript_expression "plVar11[1]" identifier [ number_literal ])) ;) (expression_statement "plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);" (assignment_expression "plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" identifier = (cast_expression "(long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" identifier (argument_list "(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" ( (binary_expression "param_1 + 10" identifier + number_literal) , (binary_expression "(uVar3 ^ uVar17) % (ulong)param_1[0xb]" (parenthesized_expression "(uVar3 ^ uVar17)" ( (binary_expression "uVar3 ^ uVar17" identifier ^ identifier) )) % (cast_expression "(ulong)param_1[0xb]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) , (binary_expression "plVar11 + 1" identifier + number_literal) ))))) ;) (if_statement "if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }" if (parenthesized_expression "((plVar13 == (long *)0x0) || (*plVar13 == 0))" ( (binary_expression "(plVar13 == (long *)0x0) || (*plVar13 == 0)" (parenthesized_expression "(plVar13 == (long *)0x0)" ( (binary_expression "plVar13 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*plVar13 == 0)" ( (binary_expression "*plVar13 == 0" (pointer_expression "*plVar13" * identifier) == number_literal) ))) )) (compound_statement "{\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }" { (if_statement "if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;" if (parenthesized_expression "((ulong *)param_1[2] != puVar19)" ( (binary_expression "(ulong *)param_1[2] != puVar19" (cast_expression "(ulong *)param_1[2]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) != identifier) )) (goto_statement "goto code_r0x002b5c6f;" goto statement_identifier ;)) (expression_statement "FUN_002b5d30(param_1,puVar19,plVar11 + 1);" (call_expression "FUN_002b5d30(param_1,puVar19,plVar11 + 1)" identifier (argument_list "(param_1,puVar19,plVar11 + 1)" ( identifier , identifier , (binary_expression "plVar11 + 1" identifier + number_literal) ))) ;) (expression_statement "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" identifier = (cast_expression "(ulong *)param_1[1]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "plVar11 = (long *)*plVar11;" (assignment_expression "plVar11 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (plVar11 == (long *)0x0) break;" if (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) })) (expression_statement "puVar20 = (ulong *)*param_1;" (assignment_expression "puVar20 = (ulong *)*param_1" identifier = (cast_expression "(ulong *)*param_1" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar19 == puVar20) goto LAB_002b5c9c;" if (parenthesized_expression "(puVar19 == puVar20)" ( (binary_expression "puVar19 == puVar20" identifier == identifier) )) (goto_statement "goto LAB_002b5c9c;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_002b5c9c:\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_r0x002b5c6f:\n  *puVar19 = uVar17;" statement_identifier : (expression_statement "*puVar19 = uVar17;" (assignment_expression "*puVar19 = uVar17" (pointer_expression "*puVar19" * identifier) = identifier) ;)) (expression_statement "*(uint *)(puVar19 + 1) = uVar3;" (assignment_expression "*(uint *)(puVar19 + 1) = uVar3" (pointer_expression "*(uint *)(puVar19 + 1)" * (cast_expression "(uint *)(puVar19 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + 1)" ( (binary_expression "puVar19 + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[1] = puVar19 + 2;" (assignment_expression "param_1[1] = puVar19 + 2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (expression_statement "plVar11 = (long *)*plVar11;" (assignment_expression "plVar11 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (expression_statement "puVar19 = puVar19 + 2;" (assignment_expression "puVar19 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (goto_statement "goto joined_r0x002b5c21;" 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 (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) ^ IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * IDENT) != LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (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 (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT * LIT) ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) % IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long) (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) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (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 (sized_type_specifier long) (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 ])) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % IDENT)) ;) (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 IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 ]))) ;) (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 { (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)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) 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 (binary_expression IDENT + LIT) != 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ IDENT) )) % (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , 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 IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (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))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_002b59e0(undefined8 *param_1)\n\n{\n  undefined8 *puVar1;\n  long *plVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  long lVar7;\n  undefined4 uVar8;\n  char cVar9;\n  ulong uVar10;\n  long *plVar11;\n  undefined8 *puVar12;\n  long *plVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  ulong extraout_RDX;\n  ulong uVar16;\n  ulong uVar17;\n  ulong *puVar18;\n  ulong *puVar19;\n  ulong *puVar20;\n  ulong local_60;\n  ulong local_48;\n  ulong uStack_40;\n  \n  puVar20 = (ulong *)*param_1;\n  puVar19 = (ulong *)param_1[1];\n  while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x002b5c6f:\n  *puVar19 = uVar17;\n  *(uint *)(puVar19 + 1) = uVar3;\n  param_1[1] = puVar19 + 2;\n  plVar11 = (long *)*plVar11;\n  puVar19 = puVar19 + 2;\n  goto joined_r0x002b5c21;\n}" (primitive_type "void") (function_declarator "FUN_002b59e0(undefined8 *param_1)" (identifier "FUN_002b59e0") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  long *plVar2;\n  uint uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  long lVar7;\n  undefined4 uVar8;\n  char cVar9;\n  ulong uVar10;\n  long *plVar11;\n  undefined8 *puVar12;\n  long *plVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  ulong extraout_RDX;\n  ulong uVar16;\n  ulong uVar17;\n  ulong *puVar18;\n  ulong *puVar19;\n  ulong *puVar20;\n  ulong local_60;\n  ulong local_48;\n  ulong uStack_40;\n  \n  puVar20 = (ulong *)*param_1;\n  puVar19 = (ulong *)param_1[1];\n  while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }\nLAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;\n  return;\ncode_r0x002b5c6f:\n  *puVar19 = uVar17;\n  *(uint *)(puVar19 + 1) = uVar3;\n  param_1[1] = puVar19 + 2;\n  plVar11 = (long *)*plVar11;\n  puVar19 = puVar19 + 2;\n  goto joined_r0x002b5c21;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "long *plVar6;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar6" (* "*") (identifier "plVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "char cVar9;" (primitive_type "char") (identifier "cVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "long *plVar11;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar11" (* "*") (identifier "plVar11")) (; ";")) (declaration "undefined8 *puVar12;" (type_identifier "undefined8") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "long *plVar13;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar13" (* "*") (identifier "plVar13")) (; ";")) (declaration "undefined8 *puVar14;" (type_identifier "undefined8") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined8 *puVar15;" (type_identifier "undefined8") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "ulong extraout_RDX;" (type_identifier "ulong") (identifier "extraout_RDX") (; ";")) (declaration "ulong uVar16;" (type_identifier "ulong") (identifier "uVar16") (; ";")) (declaration "ulong uVar17;" (type_identifier "ulong") (identifier "uVar17") (; ";")) (declaration "ulong *puVar18;" (type_identifier "ulong") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "ulong *puVar19;" (type_identifier "ulong") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "ulong *puVar20;" (type_identifier "ulong") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "ulong local_60;" (type_identifier "ulong") (identifier "local_60") (; ";")) (declaration "ulong local_48;" (type_identifier "ulong") (identifier "local_48") (; ";")) (declaration "ulong uStack_40;" (type_identifier "ulong") (identifier "uStack_40") (; ";")) (expression_statement "puVar20 = (ulong *)*param_1;" (assignment_expression "puVar20 = (ulong *)*param_1" (identifier "puVar20") (= "=") (cast_expression "(ulong *)*param_1" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" (identifier "puVar19") (= "=") (cast_expression "(ulong *)param_1[1]" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (while_statement "while (puVar19 != puVar20) {\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }" (while "while") (parenthesized_expression "(puVar19 != puVar20)" (( "(") (binary_expression "puVar19 != puVar20" (identifier "puVar19") (!= "!=") (identifier "puVar20")) () ")")) (compound_statement "{\n    while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar17 = puVar19[-2];\n      puVar18 = puVar19 + -2;\n      local_48 = *puVar18;\n      uStack_40 = puVar19[-1];\n      param_1[1] = puVar18;\n      uVar8 = (uint)uStack_40;\n      uVar10 = uStack_40 & 0xffffffff ^ uVar17;\n      local_60 = uVar10 % (ulong)param_1[0xb];\n      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);\n      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;\n      plVar11 = (long *)FUN_002d94a0(0x20);\n      uVar4 = param_1[0xd];\n      uVar5 = param_1[0xb];\n      plVar11[1] = uVar17;\n      *(undefined4 *)(plVar11 + 2) = uVar8;\n      *plVar11 = 0;\n      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);\n      if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }\n      plVar11[3] = uVar10;\n      plVar13 = puVar12 + local_60;\n      if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }\n      param_1[0xd] = param_1[0xd] + 1;\n      puVar19 = (ulong *)param_1[1];\n      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }\n      puVar20 = (ulong *)*param_1;\n      if (puVar19 == puVar20) goto LAB_002b5c9c;\n    }" ({ "{") (expression_statement "uVar17 = puVar19[-2];" (assignment_expression "uVar17 = puVar19[-2]" (identifier "uVar17") (= "=") (subscript_expression "puVar19[-2]" (identifier "puVar19") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "puVar18 = puVar19 + -2;" (assignment_expression "puVar18 = puVar19 + -2" (identifier "puVar18") (= "=") (binary_expression "puVar19 + -2" (identifier "puVar19") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "local_48 = *puVar18;" (assignment_expression "local_48 = *puVar18" (identifier "local_48") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "uStack_40 = puVar19[-1];" (assignment_expression "uStack_40 = puVar19[-1]" (identifier "uStack_40") (= "=") (subscript_expression "puVar19[-1]" (identifier "puVar19") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "param_1[1] = puVar18;" (assignment_expression "param_1[1] = puVar18" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar18")) (; ";")) (expression_statement "uVar8 = (uint)uStack_40;" (assignment_expression "uVar8 = (uint)uStack_40" (identifier "uVar8") (= "=") (cast_expression "(uint)uStack_40" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uStack_40"))) (; ";")) (expression_statement "uVar10 = uStack_40 & 0xffffffff ^ uVar17;" (assignment_expression "uVar10 = uStack_40 & 0xffffffff ^ uVar17" (identifier "uVar10") (= "=") (binary_expression "uStack_40 & 0xffffffff ^ uVar17" (binary_expression "uStack_40 & 0xffffffff" (identifier "uStack_40") (& "&") (number_literal "0xffffffff")) (^ "^") (identifier "uVar17"))) (; ";")) (expression_statement "local_60 = uVar10 % (ulong)param_1[0xb];" (assignment_expression "local_60 = uVar10 % (ulong)param_1[0xb]" (identifier "local_60") (= "=") (binary_expression "uVar10 % (ulong)param_1[0xb]" (identifier "uVar10") (% "%") (cast_expression "(ulong)param_1[0xb]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))))) (; ";")) (expression_statement "plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);" (assignment_expression "plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" (identifier "plVar11") (= "=") (cast_expression "(long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10)" (identifier "FUN_001b4d40") (argument_list "(param_1 + 10,local_60,&local_48,uVar10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) (, ",") (identifier "local_60") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "uVar10") () ")"))))) (; ";")) (if_statement "if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;" (if "if") (parenthesized_expression "((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0))" (( "(") (binary_expression "(plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)" (parenthesized_expression "(plVar11 != (long *)0x0)" (( "(") (binary_expression "plVar11 != (long *)0x0" (identifier "plVar11") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(puVar19 = puVar18, *plVar11 != 0)" (( "(") (comma_expression "puVar19 = puVar18, *plVar11 != 0" (assignment_expression "puVar19 = puVar18" (identifier "puVar19") (= "=") (identifier "puVar18")) (, ",") (binary_expression "*plVar11 != 0" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "plVar11 = (long *)FUN_002d94a0(0x20);" (assignment_expression "plVar11 = (long *)FUN_002d94a0(0x20)" (identifier "plVar11") (= "=") (cast_expression "(long *)FUN_002d94a0(0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(0x20)" (identifier "FUN_002d94a0") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (expression_statement "uVar4 = param_1[0xd];" (assignment_expression "uVar4 = param_1[0xd]" (identifier "uVar4") (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "uVar5 = param_1[0xb];" (assignment_expression "uVar5 = param_1[0xb]" (identifier "uVar5") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "plVar11[1] = uVar17;" (assignment_expression "plVar11[1] = uVar17" (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "*(undefined4 *)(plVar11 + 2) = uVar8;" (assignment_expression "*(undefined4 *)(plVar11 + 2) = uVar8" (pointer_expression "*(undefined4 *)(plVar11 + 2)" (* "*") (cast_expression "(undefined4 *)(plVar11 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar11 + 2)" (( "(") (binary_expression "plVar11 + 2" (identifier "plVar11") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*plVar11 = 0;" (assignment_expression "*plVar11 = 0" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (= "=") (number_literal "0")) (; ";")) (expression_statement "cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);" (assignment_expression "cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1)" (identifier "cVar9") (= "=") (call_expression "FUN_00319200(param_1 + 0xe,uVar5,uVar4,1)" (identifier "FUN_00319200") (argument_list "(param_1 + 0xe,uVar5,uVar4,1)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) (, ",") (identifier "uVar5") (, ",") (identifier "uVar4") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (cVar9 == '\0') {\n        puVar12 = (undefined8 *)param_1[10];\n      }\n      else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" (if "if") (parenthesized_expression "(cVar9 == '\0')" (( "(") (binary_expression "cVar9 == '\0'" (identifier "cVar9") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        puVar12 = (undefined8 *)param_1[10];\n      }" ({ "{") (expression_statement "puVar12 = (undefined8 *)param_1[10];" (assignment_expression "puVar12 = (undefined8 *)param_1[10]" (identifier "puVar12") (= "=") (cast_expression "(undefined8 *)param_1[10]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" (else "else") (compound_statement "{\n        if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }\n        plVar13 = (long *)param_1[0xc];\n        param_1[0xc] = 0;\n        if (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }\nLAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }\n        param_1[0xb] = extraout_RDX;\n        local_60 = uVar10 % extraout_RDX;\n        param_1[10] = puVar12;\n      }" ({ "{") (if_statement "if (extraout_RDX == 1) {\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }\n        else {\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" (if "if") (parenthesized_expression "(extraout_RDX == 1)" (( "(") (binary_expression "extraout_RDX == 1" (identifier "extraout_RDX") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          puVar12 = param_1 + 0x10;\n          param_1[0x10] = 0;\n        }" ({ "{") (expression_statement "puVar12 = param_1 + 0x10;" (assignment_expression "puVar12 = param_1 + 0x10" (identifier "puVar12") (= "=") (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 (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" (else "else") (compound_statement "{\n          if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }\n                    \n          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);\n          memset(puVar12,0,extraout_RDX * 8);\n        }" ({ "{") (if_statement "if (0x1fffffffffffffff < extraout_RDX) {\n                    \n                    \n            FUN_00319420();\n          }" (if "if") (parenthesized_expression "(0x1fffffffffffffff < extraout_RDX)" (( "(") (binary_expression "0x1fffffffffffffff < extraout_RDX" (number_literal "0x1fffffffffffffff") (< "<") (identifier "extraout_RDX")) () ")")) (compound_statement "{\n                    \n                    \n            FUN_00319420();\n          }" ({ "{") (expression_statement "FUN_00319420();" (call_expression "FUN_00319420()" (identifier "FUN_00319420") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);" (assignment_expression "puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8)" (identifier "puVar12") (= "=") (cast_expression "(undefined8 *)FUN_002d94a0(extraout_RDX * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(extraout_RDX * 8)" (identifier "FUN_002d94a0") (argument_list "(extraout_RDX * 8)" (( "(") (binary_expression "extraout_RDX * 8" (identifier "extraout_RDX") (* "*") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "memset(puVar12,0,extraout_RDX * 8);" (call_expression "memset(puVar12,0,extraout_RDX * 8)" (identifier "memset") (argument_list "(puVar12,0,extraout_RDX * 8)" (( "(") (identifier "puVar12") (, ",") (number_literal "0") (, ",") (binary_expression "extraout_RDX * 8" (identifier "extraout_RDX") (* "*") (number_literal "8")) () ")"))) (; ";")) (} "}")))) (expression_statement "plVar13 = (long *)param_1[0xc];" (assignment_expression "plVar13 = (long *)param_1[0xc]" (identifier "plVar13") (= "=") (cast_expression "(long *)param_1[0xc]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (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 (plVar13 != (long *)0x0) {\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }" (if "if") (parenthesized_expression "(plVar13 != (long *)0x0)" (( "(") (binary_expression "plVar13 != (long *)0x0" (identifier "plVar13") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          uVar17 = 0;\n          do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);\n        }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          } while (plVar6 != (long *)0x0);" (do "do") (compound_statement "{\n            while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }\n            *plVar13 = param_1[0xc];\n            param_1[0xc] = plVar13;\n            *plVar2 = (long)(param_1 + 0xc);\n            if (*plVar13 == 0) goto LAB_002b5b1c;\n            puVar12[uVar17] = plVar13;\n            plVar13 = plVar6;\n            uVar17 = uVar16;\n          }" ({ "{") (while_statement "while( true ) {\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              plVar6 = (long *)*plVar13;\n              uVar16 = (ulong)plVar13[3] % extraout_RDX;\n              plVar2 = puVar12 + uVar16;\n              if ((long *)*plVar2 == (long *)0x0) break;\n              *plVar13 = *(long *)*plVar2;\n              *(long **)*plVar2 = plVar13;\n              uVar16 = uVar17;\nLAB_002b5b1c:\n              plVar13 = plVar6;\n              uVar17 = uVar16;\n              if (plVar6 == (long *)0x0) goto LAB_002b5b68;\n            }" ({ "{") (expression_statement "plVar6 = (long *)*plVar13;" (assignment_expression "plVar6 = (long *)*plVar13" (identifier "plVar6") (= "=") (cast_expression "(long *)*plVar13" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar13" (* "*") (identifier "plVar13")))) (; ";")) (expression_statement "uVar16 = (ulong)plVar13[3] % extraout_RDX;" (assignment_expression "uVar16 = (ulong)plVar13[3] % extraout_RDX" (identifier "uVar16") (= "=") (binary_expression "(ulong)plVar13[3] % extraout_RDX" (cast_expression "(ulong)plVar13[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "plVar13[3]" (identifier "plVar13") ([ "[") (number_literal "3") (] "]"))) (% "%") (identifier "extraout_RDX"))) (; ";")) (expression_statement "plVar2 = puVar12 + uVar16;" (assignment_expression "plVar2 = puVar12 + uVar16" (identifier "plVar2") (= "=") (binary_expression "puVar12 + uVar16" (identifier "puVar12") (+ "+") (identifier "uVar16"))) (; ";")) (if_statement "if ((long *)*plVar2 == (long *)0x0) break;" (if "if") (parenthesized_expression "((long *)*plVar2 == (long *)0x0)" (( "(") (binary_expression "(long *)*plVar2 == (long *)0x0" (cast_expression "(long *)*plVar2" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))) (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*plVar13 = *(long *)*plVar2;" (assignment_expression "*plVar13 = *(long *)*plVar2" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (= "=") (pointer_expression "*(long *)*plVar2" (* "*") (cast_expression "(long *)*plVar2" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar2" (* "*") (identifier "plVar2"))))) (; ";")) (expression_statement "*(long **)*plVar2 = plVar13;" (assignment_expression "*(long **)*plVar2 = plVar13" (pointer_expression "*(long **)*plVar2" (* "*") (cast_expression "(long **)*plVar2" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*plVar2" (* "*") (identifier "plVar2")))) (= "=") (identifier "plVar13")) (; ";")) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" (identifier "uVar16") (= "=") (identifier "uVar17")) (; ";")) (labeled_statement "LAB_002b5b1c:\n              plVar13 = plVar6;" (statement_identifier "LAB_002b5b1c") (: ":") (expression_statement "plVar13 = plVar6;" (assignment_expression "plVar13 = plVar6" (identifier "plVar13") (= "=") (identifier "plVar6")) (; ";"))) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" (identifier "uVar17") (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (plVar6 == (long *)0x0) goto LAB_002b5b68;" (if "if") (parenthesized_expression "(plVar6 == (long *)0x0)" (( "(") (binary_expression "plVar6 == (long *)0x0" (identifier "plVar6") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_002b5b68;" (goto "goto") (statement_identifier "LAB_002b5b68") (; ";"))) (} "}"))) (expression_statement "*plVar13 = param_1[0xc];" (assignment_expression "*plVar13 = param_1[0xc]" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "param_1[0xc] = plVar13;" (assignment_expression "param_1[0xc] = plVar13" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "plVar13")) (; ";")) (expression_statement "*plVar2 = (long)(param_1 + 0xc);" (assignment_expression "*plVar2 = (long)(param_1 + 0xc)" (pointer_expression "*plVar2" (* "*") (identifier "plVar2")) (= "=") (cast_expression "(long)(param_1 + 0xc)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (if_statement "if (*plVar13 == 0) goto LAB_002b5b1c;" (if "if") (parenthesized_expression "(*plVar13 == 0)" (( "(") (binary_expression "*plVar13 == 0" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002b5b1c;" (goto "goto") (statement_identifier "LAB_002b5b1c") (; ";"))) (expression_statement "puVar12[uVar17] = plVar13;" (assignment_expression "puVar12[uVar17] = plVar13" (subscript_expression "puVar12[uVar17]" (identifier "puVar12") ([ "[") (identifier "uVar17") (] "]")) (= "=") (identifier "plVar13")) (; ";")) (expression_statement "plVar13 = plVar6;" (assignment_expression "plVar13 = plVar6" (identifier "plVar13") (= "=") (identifier "plVar6")) (; ";")) (expression_statement "uVar17 = uVar16;" (assignment_expression "uVar17 = uVar16" (identifier "uVar17") (= "=") (identifier "uVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar6 != (long *)0x0)" (( "(") (binary_expression "plVar6 != (long *)0x0" (identifier "plVar6") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_002b5b68:\n        if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }" (statement_identifier "LAB_002b5b68") (: ":") (if_statement "if ((undefined8 *)param_1[10] != param_1 + 0x10) {\n          FUN_002dac70();\n        }" (if "if") (parenthesized_expression "((undefined8 *)param_1[10] != param_1 + 0x10)" (( "(") (binary_expression "(undefined8 *)param_1[10] != param_1 + 0x10" (cast_expression "(undefined8 *)param_1[10]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (!= "!=") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10"))) () ")")) (compound_statement "{\n          FUN_002dac70();\n        }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "param_1[0xb] = extraout_RDX;" (assignment_expression "param_1[0xb] = extraout_RDX" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "extraout_RDX")) (; ";")) (expression_statement "local_60 = uVar10 % extraout_RDX;" (assignment_expression "local_60 = uVar10 % extraout_RDX" (identifier "local_60") (= "=") (binary_expression "uVar10 % extraout_RDX" (identifier "uVar10") (% "%") (identifier "extraout_RDX"))) (; ";")) (expression_statement "param_1[10] = puVar12;" (assignment_expression "param_1[10] = puVar12" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "puVar12")) (; ";")) (} "}")))) (expression_statement "plVar11[3] = uVar10;" (assignment_expression "plVar11[3] = uVar10" (subscript_expression "plVar11[3]" (identifier "plVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "plVar13 = puVar12 + local_60;" (assignment_expression "plVar13 = puVar12 + local_60" (identifier "plVar13") (= "=") (binary_expression "puVar12 + local_60" (identifier "puVar12") (+ "+") (identifier "local_60"))) (; ";")) (if_statement "if ((long *)*plVar13 == (long *)0x0) {\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }\n      else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" (if "if") (parenthesized_expression "((long *)*plVar13 == (long *)0x0)" (( "(") (binary_expression "(long *)*plVar13 == (long *)0x0" (cast_expression "(long *)*plVar13" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar13" (* "*") (identifier "plVar13"))) (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        lVar7 = param_1[0xc];\n        param_1[0xc] = plVar11;\n        *plVar11 = lVar7;\n        if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }\n        *plVar13 = (long)(param_1 + 0xc);\n      }" ({ "{") (expression_statement "lVar7 = param_1[0xc];" (assignment_expression "lVar7 = param_1[0xc]" (identifier "lVar7") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "param_1[0xc] = plVar11;" (assignment_expression "param_1[0xc] = plVar11" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "plVar11")) (; ";")) (expression_statement "*plVar11 = lVar7;" (assignment_expression "*plVar11 = lVar7" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (= "=") (identifier "lVar7")) (; ";")) (if_statement "if (lVar7 != 0) {\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }" (if "if") (parenthesized_expression "(lVar7 != 0)" (( "(") (binary_expression "lVar7 != 0" (identifier "lVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;\n        }" ({ "{") (expression_statement "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;" (assignment_expression "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11" (subscript_expression "puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]]" (identifier "puVar12") ([ "[") (binary_expression "*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]" (pointer_expression "*(ulong *)(lVar7 + 0x18)" (* "*") (cast_expression "(ulong *)(lVar7 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x18)" (( "(") (binary_expression "lVar7 + 0x18" (identifier "lVar7") (+ "+") (number_literal "0x18")) () ")")))) (% "%") (cast_expression "(ulong)param_1[0xb]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (] "]")) (= "=") (identifier "plVar11")) (; ";")) (} "}"))) (expression_statement "*plVar13 = (long)(param_1 + 0xc);" (assignment_expression "*plVar13 = (long)(param_1 + 0xc)" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (= "=") (cast_expression "(long)(param_1 + 0xc)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" (else "else") (compound_statement "{\n        *plVar11 = *(long *)*plVar13;\n        *(long **)*plVar13 = plVar11;\n      }" ({ "{") (expression_statement "*plVar11 = *(long *)*plVar13;" (assignment_expression "*plVar11 = *(long *)*plVar13" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (= "=") (pointer_expression "*(long *)*plVar13" (* "*") (cast_expression "(long *)*plVar13" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar13" (* "*") (identifier "plVar13"))))) (; ";")) (expression_statement "*(long **)*plVar13 = plVar11;" (assignment_expression "*(long **)*plVar13 = plVar11" (pointer_expression "*(long **)*plVar13" (* "*") (cast_expression "(long **)*plVar13" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*plVar13" (* "*") (identifier "plVar13")))) (= "=") (identifier "plVar11")) (; ";")) (} "}")))) (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 "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" (identifier "puVar19") (= "=") (cast_expression "(ulong *)param_1[1]" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }" (if "if") (parenthesized_expression "((undefined8 *)param_1[6] != (undefined8 *)0x0)" (( "(") (binary_expression "(undefined8 *)param_1[6] != (undefined8 *)0x0" (cast_expression "(undefined8 *)param_1[6]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar12 = (undefined8 *)param_1[6];\n        puVar14 = param_1 + 5;\n        do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);\nLAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }\n      }" ({ "{") (expression_statement "puVar12 = (undefined8 *)param_1[6];" (assignment_expression "puVar12 = (undefined8 *)param_1[6]" (identifier "puVar12") (= "=") (cast_expression "(undefined8 *)param_1[6]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "puVar14 = param_1 + 5;" (assignment_expression "puVar14 = param_1 + 5" (identifier "puVar14") (= "=") (binary_expression "param_1 + 5" (identifier "param_1") (+ "+") (number_literal "5"))) (; ";")) (do_statement "do {\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);" (do "do") (compound_statement "{\n          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }\n          puVar12 = (undefined8 *)puVar15[2];\n          puVar14 = puVar15;\n        }" ({ "{") (while_statement "while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }" (while "while") (parenthesized_expression "((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))))" (( "(") (parenthesized_expression "(puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))" (( "(") (comma_expression "puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" (assignment_expression "puVar15 = puVar12" (identifier "puVar15") (= "=") (identifier "puVar12")) (, ",") (binary_expression "(ulong)puVar15[4] < local_48 ||\n                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" (binary_expression "(ulong)puVar15[4] < local_48" (cast_expression "(ulong)puVar15[4]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "puVar15[4]" (identifier "puVar15") ([ "[") (number_literal "4") (] "]"))) (< "<") (identifier "local_48")) (|| "||") (parenthesized_expression "((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)))" (( "(") (parenthesized_expression "(puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))" (( "(") (binary_expression "puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40)" (binary_expression "puVar15[4] == local_48" (subscript_expression "puVar15[4]" (identifier "puVar15") ([ "[") (number_literal "4") (] "]")) (== "==") (identifier "local_48")) (&& "&&") (parenthesized_expression "(*(uint *)(puVar15 + 5) < (uint)uStack_40)" (( "(") (binary_expression "*(uint *)(puVar15 + 5) < (uint)uStack_40" (pointer_expression "*(uint *)(puVar15 + 5)" (* "*") (cast_expression "(uint *)(puVar15 + 5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + 5)" (( "(") (binary_expression "puVar15 + 5" (identifier "puVar15") (+ "+") (number_literal "5")) () ")")))) (< "<") (cast_expression "(uint)uStack_40" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uStack_40"))) () ")"))) () ")")) () ")")))) () ")")) () ")")) (compound_statement "{\n            puVar1 = puVar15 + 3;\n            puVar12 = (undefined8 *)*puVar1;\n            puVar15 = puVar14;\n            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;\n          }" ({ "{") (expression_statement "puVar1 = puVar15 + 3;" (assignment_expression "puVar1 = puVar15 + 3" (identifier "puVar1") (= "=") (binary_expression "puVar15 + 3" (identifier "puVar15") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar12 = (undefined8 *)*puVar1;" (assignment_expression "puVar12 = (undefined8 *)*puVar1" (identifier "puVar12") (= "=") (cast_expression "(undefined8 *)*puVar1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" (identifier "puVar15") (= "=") (identifier "puVar14")) (; ";")) (if_statement "if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;" (if "if") (parenthesized_expression "((undefined8 *)*puVar1 == (undefined8 *)0x0)" (( "(") (binary_expression "(undefined8 *)*puVar1 == (undefined8 *)0x0" (cast_expression "(undefined8 *)*puVar1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_002b5c02;" (goto "goto") (statement_identifier "LAB_002b5c02") (; ";"))) (} "}"))) (expression_statement "puVar12 = (undefined8 *)puVar15[2];" (assignment_expression "puVar12 = (undefined8 *)puVar15[2]" (identifier "puVar12") (= "=") (cast_expression "(undefined8 *)puVar15[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar15[2]" (identifier "puVar15") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" (identifier "puVar14") (= "=") (identifier "puVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined8 *)puVar15[2] != (undefined8 *)0x0)" (( "(") (binary_expression "(undefined8 *)puVar15[2] != (undefined8 *)0x0" (cast_expression "(undefined8 *)puVar15[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar15[2]" (identifier "puVar15") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (labeled_statement "LAB_002b5c02:\n        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" (statement_identifier "LAB_002b5c02") (: ":") (if_statement "if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" (if "if") (parenthesized_expression "(((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40))))" (( "(") (binary_expression "((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&\n           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))" (parenthesized_expression "((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48))" (( "(") (binary_expression "(param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)" (parenthesized_expression "(param_1 + 5 != puVar15)" (( "(") (binary_expression "param_1 + 5 != puVar15" (binary_expression "param_1 + 5" (identifier "param_1") (+ "+") (number_literal "5")) (!= "!=") (identifier "puVar15")) () ")")) (&& "&&") (parenthesized_expression "((ulong)puVar15[4] <= local_48)" (( "(") (binary_expression "(ulong)puVar15[4] <= local_48" (cast_expression "(ulong)puVar15[4]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "puVar15[4]" (identifier "puVar15") ([ "[") (number_literal "4") (] "]"))) (<= "<=") (identifier "local_48")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))" (( "(") (parenthesized_expression "(local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40))" (( "(") (binary_expression "local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)" (binary_expression "local_48 != puVar15[4]" (identifier "local_48") (!= "!=") (subscript_expression "puVar15[4]" (identifier "puVar15") ([ "[") (number_literal "4") (] "]"))) (|| "||") (parenthesized_expression "(*(uint *)(puVar15 + 5) <= (uint)uStack_40)" (( "(") (binary_expression "*(uint *)(puVar15 + 5) <= (uint)uStack_40" (pointer_expression "*(uint *)(puVar15 + 5)" (* "*") (cast_expression "(uint *)(puVar15 + 5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + 5)" (( "(") (binary_expression "puVar15 + 5" (identifier "puVar15") (+ "+") (number_literal "5")) () ")")))) (<= "<=") (cast_expression "(uint)uStack_40" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uStack_40"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          plVar11 = (long *)puVar15[8];\njoined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }\n        }" ({ "{") (expression_statement "plVar11 = (long *)puVar15[8];" (assignment_expression "plVar11 = (long *)puVar15[8]" (identifier "plVar11") (= "=") (cast_expression "(long *)puVar15[8]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar15[8]" (identifier "puVar15") ([ "[") (number_literal "8") (] "]")))) (; ";")) (labeled_statement "joined_r0x002b5c21:\n          if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" (statement_identifier "joined_r0x002b5c21") (: ":") (if_statement "if (plVar11 != (long *)0x0) {\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" (if "if") (parenthesized_expression "(plVar11 != (long *)0x0)" (( "(") (binary_expression "plVar11 != (long *)0x0" (identifier "plVar11") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );\n          }" ({ "{") (do_statement "do {\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            } while( true );" (do "do") (compound_statement "{\n              uVar3 = *(uint *)(plVar11 + 2);\n              uVar17 = plVar11[1];\n              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);\n              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }\n              plVar11 = (long *)*plVar11;\n              if (plVar11 == (long *)0x0) break;\n            }" ({ "{") (expression_statement "uVar3 = *(uint *)(plVar11 + 2);" (assignment_expression "uVar3 = *(uint *)(plVar11 + 2)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(plVar11 + 2)" (* "*") (cast_expression "(uint *)(plVar11 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar11 + 2)" (( "(") (binary_expression "plVar11 + 2" (identifier "plVar11") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar17 = plVar11[1];" (assignment_expression "uVar17 = plVar11[1]" (identifier "uVar17") (= "=") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1);" (assignment_expression "plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" (identifier "plVar13") (= "=") (cast_expression "(long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" (identifier "FUN_001b4d40") (argument_list "(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],\n                                             plVar11 + 1)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) (, ",") (binary_expression "(uVar3 ^ uVar17) % (ulong)param_1[0xb]" (parenthesized_expression "(uVar3 ^ uVar17)" (( "(") (binary_expression "uVar3 ^ uVar17" (identifier "uVar3") (^ "^") (identifier "uVar17")) () ")")) (% "%") (cast_expression "(ulong)param_1[0xb]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (, ",") (binary_expression "plVar11 + 1" (identifier "plVar11") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }" (if "if") (parenthesized_expression "((plVar13 == (long *)0x0) || (*plVar13 == 0))" (( "(") (binary_expression "(plVar13 == (long *)0x0) || (*plVar13 == 0)" (parenthesized_expression "(plVar13 == (long *)0x0)" (( "(") (binary_expression "plVar13 == (long *)0x0" (identifier "plVar13") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*plVar13 == 0)" (( "(") (binary_expression "*plVar13 == 0" (pointer_expression "*plVar13" (* "*") (identifier "plVar13")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;\n                FUN_002b5d30(param_1,puVar19,plVar11 + 1);\n                puVar19 = (ulong *)param_1[1];\n              }" ({ "{") (if_statement "if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;" (if "if") (parenthesized_expression "((ulong *)param_1[2] != puVar19)" (( "(") (binary_expression "(ulong *)param_1[2] != puVar19" (cast_expression "(ulong *)param_1[2]" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (identifier "puVar19")) () ")")) (goto_statement "goto code_r0x002b5c6f;" (goto "goto") (statement_identifier "code_r0x002b5c6f") (; ";"))) (expression_statement "FUN_002b5d30(param_1,puVar19,plVar11 + 1);" (call_expression "FUN_002b5d30(param_1,puVar19,plVar11 + 1)" (identifier "FUN_002b5d30") (argument_list "(param_1,puVar19,plVar11 + 1)" (( "(") (identifier "param_1") (, ",") (identifier "puVar19") (, ",") (binary_expression "plVar11 + 1" (identifier "plVar11") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "puVar19 = (ulong *)param_1[1];" (assignment_expression "puVar19 = (ulong *)param_1[1]" (identifier "puVar19") (= "=") (cast_expression "(ulong *)param_1[1]" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "plVar11 = (long *)*plVar11;" (assignment_expression "plVar11 = (long *)*plVar11" (identifier "plVar11") (= "=") (cast_expression "(long *)*plVar11" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")))) (; ";")) (if_statement "if (plVar11 == (long *)0x0) break;" (if "if") (parenthesized_expression "(plVar11 == (long *)0x0)" (( "(") (binary_expression "plVar11 == (long *)0x0" (identifier "plVar11") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (} "}")))) (} "}"))) (expression_statement "puVar20 = (ulong *)*param_1;" (assignment_expression "puVar20 = (ulong *)*param_1" (identifier "puVar20") (= "=") (cast_expression "(ulong *)*param_1" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (puVar19 == puVar20) goto LAB_002b5c9c;" (if "if") (parenthesized_expression "(puVar19 == puVar20)" (( "(") (binary_expression "puVar19 == puVar20" (identifier "puVar19") (== "==") (identifier "puVar20")) () ")")) (goto_statement "goto LAB_002b5c9c;" (goto "goto") (statement_identifier "LAB_002b5c9c") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_002b5c9c:\n  *(undefined1 *)(param_1 + 3) = 1;" (statement_identifier "LAB_002b5c9c") (: ":") (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_r0x002b5c6f:\n  *puVar19 = uVar17;" (statement_identifier "code_r0x002b5c6f") (: ":") (expression_statement "*puVar19 = uVar17;" (assignment_expression "*puVar19 = uVar17" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (identifier "uVar17")) (; ";"))) (expression_statement "*(uint *)(puVar19 + 1) = uVar3;" (assignment_expression "*(uint *)(puVar19 + 1) = uVar3" (pointer_expression "*(uint *)(puVar19 + 1)" (* "*") (cast_expression "(uint *)(puVar19 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar19 + 1)" (( "(") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_1[1] = puVar19 + 2;" (assignment_expression "param_1[1] = puVar19 + 2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar19 + 2" (identifier "puVar19") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "plVar11 = (long *)*plVar11;" (assignment_expression "plVar11 = (long *)*plVar11" (identifier "plVar11") (= "=") (cast_expression "(long *)*plVar11" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")))) (; ";")) (expression_statement "puVar19 = puVar19 + 2;" (assignment_expression "puVar19 = puVar19 + 2" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 2" (identifier "puVar19") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto joined_r0x002b5c21;" (goto "goto") (statement_identifier "joined_r0x002b5c21") (; ";")) (} "}")))

/* 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 *var_27;
  type_3 *psVar2;
  type_4 *pp_Var3;
  type_5 uVar4;
  type_6 *pRVar5;
  type_7 *var_20;
  type_8 *var_21;
  type_4 var_25;
  char var_13;
  type_7 *var_24;
  type_9 *var_10;
  type_7 *p_Var12;
  type_8 *var_18;
  type_7 *var_17;
  type_4 p_Var14;
  type_4 var_26;
  type_10 var_29;
  type_10 var_14;
  type_10 var_19;
  type_11 ppVar18;
  type_12 __position;
  type_11 var_6;
  long *var_28;
  type_10 var_23;
  type_13 entry;
  
  var_6 = (this->work_list_).
            super__Vector_base<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
            ._M_impl._M_start;
  var_27 = &(this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header;
  __position._M_current =
       (this->work_list_).
       super__Vector_base<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
       ._M_impl._M_finish;
  while (__position._M_current != var_6) {
    while( true ) {
      pRVar5 = __position._M_current[-1].first;
      ppVar18 = __position._M_current + -1;
      entry.first = ppVar18->first;
      entry._8_8_ = *(type_14 *)&__position._M_current[-1].second;
      (this->work_list_).
      super__Vector_base<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
      ._M_impl._M_finish = ppVar18;
      uVar4 = entry.second;
      var_24 = (type_7 *)(entry._8_8_ & 0xffffffff ^ (type_10)pRVar5);
      var_23 = (type_10)var_24 % (this->referenced_list_)._M_h._M_bucket_count;
      var_10 = var_1::
                _Hashtable<var_1::pair<var_2::type_6*,var_3>,var_4::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::pair<var_2::type_6*,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_6*,var_3>,var_4::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::pair<var_2::type_6*,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_23,&entry,(type_15)var_24);
      if ((var_10 != (type_9 *)0x0) &&
         (__position._M_current = ppVar18, var_10->_M_nxt != (type_7 *)0x0)) break;
      p_Var12 = (type_7 *)var_11(0x20);
      var_29 = (this->referenced_list_)._M_h._M_element_count;
      var_19 = (this->referenced_list_)._M_h._M_bucket_count;
      p_Var12[1]._M_nxt = (type_7 *)pRVar5;
      *(type_5 *)&p_Var12[2]._M_nxt = uVar4;
      p_Var12->_M_nxt = (type_7 *)0x0;
      var_13 = var_1::__detail::_Prime_rehash_policy::var_12
                        (&(this->referenced_list_)._M_h._M_rehash_policy,var_19,var_29,1);
      if (var_13 == '\0') {
        var_18 = (this->referenced_list_)._M_h._M_buckets;
      }
      else {
        if (var_14 == 1) {
          var_18 = &(this->referenced_list_)._M_h._M_single_bucket;
          (this->referenced_list_)._M_h._M_single_bucket = (type_8)0x0;
        }
        else {
          if (0x1fffffffffffffff < var_14) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */
            std::var_15();
          }
                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */
          var_18 = (type_8 *)var_11(var_14 * 8);
          var_16(var_18,0,var_14 * 8);
        }
        var_17 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
        (this->referenced_list_)._M_h._M_before_begin._M_nxt = (type_7 *)0x0;
        if (var_17 != (type_7 *)0x0) {
          var_29 = 0;
          do {
            while( true ) {
              var_20 = var_17->_M_nxt;
              var_19 = (type_10)var_17[3]._M_nxt % var_14;
              var_21 = var_18 + var_19;
              if (*var_21 == (type_8)0x0) break;
              var_17->_M_nxt = (*var_21)->_M_nxt;
              (*var_21)->_M_nxt = var_17;
              var_19 = var_29;
LAB_002b5b1c:
              var_17 = var_20;
              var_29 = var_19;
              if (var_20 == (type_7 *)0x0) goto LAB_002b5b68;
            }
            var_17->_M_nxt = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
            (this->referenced_list_)._M_h._M_before_begin._M_nxt = var_17;
            *var_21 = &(this->referenced_list_)._M_h._M_before_begin;
            if (var_17->_M_nxt == (type_7 *)0x0) goto LAB_002b5b1c;
            var_18[var_29] = var_17;
            var_17 = var_20;
            var_29 = var_19;
          } while (var_20 != (type_7 *)0x0);
        }
LAB_002b5b68:
        var_21 = (this->referenced_list_)._M_h._M_buckets;
        if (var_21 != &(this->referenced_list_)._M_h._M_single_bucket) {
          var_22(var_21);
        }
        (this->referenced_list_)._M_h._M_bucket_count = var_14;
        var_23 = (type_10)var_24 % var_14;
        (this->referenced_list_)._M_h._M_buckets = var_18;
      }
      p_Var12[3]._M_nxt = var_24;
      var_21 = var_18 + var_23;
      if (*var_21 == (type_8)0x0) {
        var_24 = (this->referenced_list_)._M_h._M_before_begin._M_nxt;
        (this->referenced_list_)._M_h._M_before_begin._M_nxt = p_Var12;
        p_Var12->_M_nxt = var_24;
        if (var_24 != (type_7 *)0x0) {
          var_18[(type_10)var_24[3]._M_nxt % (this->referenced_list_)._M_h._M_bucket_count] = p_Var12;
        }
        *var_21 = &(this->referenced_list_)._M_h._M_before_begin;
      }
      else {
        p_Var12->_M_nxt = (*var_21)->_M_nxt;
        (*var_21)->_M_nxt = p_Var12;
      }
      var_25 = (this->section_reloc_map_)._M_t._M_impl.super__Rb_tree_header._M_header._M_parent;
      psVar2 = &(this->referenced_list_)._M_h._M_element_count;
      *psVar2 = *psVar2 + 1;
      __position._M_current =
           (this->work_list_).
           super__Vector_base<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
           ._M_impl._M_finish;
      if (var_25 != (type_4)0x0) {
        p_Var14 = &var_27->_M_header;
        do {
          while ((var_26 = var_25, *(type_6 **)(var_26 + 1) < entry.first ||
                 ((*(type_6 **)(var_26 + 1) == entry.first &&
                  (*(type_5 *)((long)(var_26 + 1) + 8) < entry.second))))) {
            pp_Var3 = &var_26->_M_right;
            var_25 = *pp_Var3;
            var_26 = p_Var14;
            if (*pp_Var3 == (type_4)0x0) goto LAB_002b5c02;
          }
          var_25 = var_26->_M_left;
          p_Var14 = var_26;
        } while (var_26->_M_left != (type_4)0x0);
LAB_002b5c02:
        if (((var_27 != (type_2 *)var_26) &&
            ((type_6 *)((type_2 *)var_26)->_M_node_count <= entry.first)) &&
           ((entry.first != (type_6 *)((type_2 *)var_26)->_M_node_count ||
            (*(type_5 *)((long)var_26 + 0x28) <= entry.second)))) {
          var_28 = *(long **)((long)var_26 + 0x28 + 0x18);
joined_r0x002b5c21:
          if (var_28 != (long *)0x0) {
            do {
              uVar4 = *(type_5 *)(var_28 + 2);
              pRVar5 = (type_6 *)var_28[1];
              var_29 = (type_10)uVar4 ^ (type_10)pRVar5;
              var_10 = var_1::
                        _Hashtable<var_1::pair<var_2::type_6*,var_3>,var_4::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::pair<var_2::type_6*,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_6*,var_3>,var_4::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>,var_4::__detail::_Identity,var_4::equal_to<var_1::pair<var_2::type_6*,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_29 % (this->referenced_list_)._M_h._M_bucket_count,
                                   (type_16 *)(var_28 + 1),var_29);
              if ((var_10 == (type_9 *)0x0) || (var_10->_M_nxt == (type_7 *)0x0)) {
                if ((this->work_list_).
                    super__Vector_base<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
                    ._M_impl._M_end_of_storage != __position._M_current) goto code_r0x002b5c6f;
                var_1::
                vector<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
                ::_M_realloc_insert<const_std::pair<var_2::type_6*,var_3>&>
                          (&this->work_list_,__position,(type_16 *)(var_28 + 1));
                __position._M_current =
                     (this->work_list_).
                     super__Vector_base<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
                     ._M_impl._M_finish;
              }
              var_28 = (long *)*var_28;
              if (var_28 == (long *)0x0) break;
            } while( true );
          }
        }
      }
      var_6 = (this->work_list_).
                super__Vector_base<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
                ._M_impl._M_start;
      if (__position._M_current == var_6) goto LAB_002b5c9c;
    }
  }
LAB_002b5c9c:
  this->is_worklist_ready_ = true;
  return;
code_r0x002b5c6f:
  (__position._M_current)->first = pRVar5;
  (__position._M_current)->second = uVar4;
  (this->work_list_).
  super__Vector_base<var_1::pair<var_2::type_6*,var_3>,var_4::allocator<var_1::pair<var_2::type_6*,var_3>var_5>var_5>
  ._M_impl._M_finish = __position._M_current + 1;
  var_28 = (long *)*var_28;
  __position._M_current = __position._M_current + 1;
  goto joined_r0x002b5c21;
}


(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: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) 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: (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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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: (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 (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) 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: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (pointer_expression argument: (identifier)) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (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: (subscript_expression argument: (identifier) index: (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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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 (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: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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: (sized_type_specifier) 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: (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (sized_type_specifier) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (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: (sized_type_specifier) 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: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (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: (identifier) right: (binary_expression left: (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: (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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (sized_type_specifier)) 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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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))))) (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 (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)))) (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: (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: (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: (binary_expression left: (identifier) right: (number_literal)) 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: (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: (identifier))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (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))))) (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: (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: (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: (sized_type_specifier) 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)))))

void MASKED(undefined8 *param_1)

{
  undefined8 *puVar1;
  long *plVar2;
  uint uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  long *plVar6;
  long lVar7;
  undefined4 uVar8;
  char cVar9;
  ulong uVar10;
  long *plVar11;
  undefined8 *puVar12;
  long *plVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  ulong extraout_RDX;
  ulong uVar16;
  ulong uVar17;
  ulong *puVar18;
  ulong *puVar19;
  ulong *puVar20;
  ulong local_60;
  ulong local_48;
  ulong uStack_40;
  
  puVar20 = (ulong *)*param_1;
  puVar19 = (ulong *)param_1[1];
  while (puVar19 != puVar20) {
    while( true ) {
      uVar17 = puVar19[-2];
      puVar18 = puVar19 + -2;
      local_48 = *puVar18;
      uStack_40 = puVar19[-1];
      param_1[1] = puVar18;
      uVar8 = (uint)uStack_40;
      uVar10 = uStack_40 & 0xffffffff ^ uVar17;
      local_60 = uVar10 % (ulong)param_1[0xb];
      plVar11 = (long *)FUN_001b4d40(param_1 + 10,local_60,&local_48,uVar10);
      if ((plVar11 != (long *)0x0) && (puVar19 = puVar18, *plVar11 != 0)) break;
      plVar11 = (long *)FUN_002d94a0(0x20);
      uVar4 = param_1[0xd];
      uVar5 = param_1[0xb];
      plVar11[1] = uVar17;
      *(undefined4 *)(plVar11 + 2) = uVar8;
      *plVar11 = 0;
      cVar9 = FUN_00319200(param_1 + 0xe,uVar5,uVar4,1);
      if (cVar9 == '\0') {
        puVar12 = (undefined8 *)param_1[10];
      }
      else {
        if (extraout_RDX == 1) {
          puVar12 = param_1 + 0x10;
          param_1[0x10] = 0;
        }
        else {
          if (0x1fffffffffffffff < extraout_RDX) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002b5d21 to 002b5d25 has its CatchHandler @ 002b5d26 */
            FUN_00319420();
          }
                    /* try { // try from 002b5ad7 to 002b5adb has its CatchHandler @ 002b5d26 */
          puVar12 = (undefined8 *)FUN_002d94a0(extraout_RDX * 8);
          memset(puVar12,0,extraout_RDX * 8);
        }
        plVar13 = (long *)param_1[0xc];
        param_1[0xc] = 0;
        if (plVar13 != (long *)0x0) {
          uVar17 = 0;
          do {
            while( true ) {
              plVar6 = (long *)*plVar13;
              uVar16 = (ulong)plVar13[3] % extraout_RDX;
              plVar2 = puVar12 + uVar16;
              if ((long *)*plVar2 == (long *)0x0) break;
              *plVar13 = *(long *)*plVar2;
              *(long **)*plVar2 = plVar13;
              uVar16 = uVar17;
LAB_002b5b1c:
              plVar13 = plVar6;
              uVar17 = uVar16;
              if (plVar6 == (long *)0x0) goto LAB_002b5b68;
            }
            *plVar13 = param_1[0xc];
            param_1[0xc] = plVar13;
            *plVar2 = (long)(param_1 + 0xc);
            if (*plVar13 == 0) goto LAB_002b5b1c;
            puVar12[uVar17] = plVar13;
            plVar13 = plVar6;
            uVar17 = uVar16;
          } while (plVar6 != (long *)0x0);
        }
LAB_002b5b68:
        if ((undefined8 *)param_1[10] != param_1 + 0x10) {
          FUN_002dac70();
        }
        param_1[0xb] = extraout_RDX;
        local_60 = uVar10 % extraout_RDX;
        param_1[10] = puVar12;
      }
      plVar11[3] = uVar10;
      plVar13 = puVar12 + local_60;
      if ((long *)*plVar13 == (long *)0x0) {
        lVar7 = param_1[0xc];
        param_1[0xc] = plVar11;
        *plVar11 = lVar7;
        if (lVar7 != 0) {
          puVar12[*(ulong *)(lVar7 + 0x18) % (ulong)param_1[0xb]] = plVar11;
        }
        *plVar13 = (long)(param_1 + 0xc);
      }
      else {
        *plVar11 = *(long *)*plVar13;
        *(long **)*plVar13 = plVar11;
      }
      param_1[0xd] = param_1[0xd] + 1;
      puVar19 = (ulong *)param_1[1];
      if ((undefined8 *)param_1[6] != (undefined8 *)0x0) {
        puVar12 = (undefined8 *)param_1[6];
        puVar14 = param_1 + 5;
        do {
          while ((puVar15 = puVar12, (ulong)puVar15[4] < local_48 ||
                 ((puVar15[4] == local_48 && (*(uint *)(puVar15 + 5) < (uint)uStack_40))))) {
            puVar1 = puVar15 + 3;
            puVar12 = (undefined8 *)*puVar1;
            puVar15 = puVar14;
            if ((undefined8 *)*puVar1 == (undefined8 *)0x0) goto LAB_002b5c02;
          }
          puVar12 = (undefined8 *)puVar15[2];
          puVar14 = puVar15;
        } while ((undefined8 *)puVar15[2] != (undefined8 *)0x0);
LAB_002b5c02:
        if (((param_1 + 5 != puVar15) && ((ulong)puVar15[4] <= local_48)) &&
           ((local_48 != puVar15[4] || (*(uint *)(puVar15 + 5) <= (uint)uStack_40)))) {
          plVar11 = (long *)puVar15[8];
joined_r0x002b5c21:
          if (plVar11 != (long *)0x0) {
            do {
              uVar3 = *(uint *)(plVar11 + 2);
              uVar17 = plVar11[1];
              plVar13 = (long *)FUN_001b4d40(param_1 + 10,(uVar3 ^ uVar17) % (ulong)param_1[0xb],
                                             plVar11 + 1);
              if ((plVar13 == (long *)0x0) || (*plVar13 == 0)) {
                if ((ulong *)param_1[2] != puVar19) goto code_r0x002b5c6f;
                FUN_002b5d30(param_1,puVar19,plVar11 + 1);
                puVar19 = (ulong *)param_1[1];
              }
              plVar11 = (long *)*plVar11;
              if (plVar11 == (long *)0x0) break;
            } while( true );
          }
        }
      }
      puVar20 = (ulong *)*param_1;
      if (puVar19 == puVar20) goto LAB_002b5c9c;
    }
  }
LAB_002b5c9c:
  *(undefined1 *)(param_1 + 3) = 1;
  return;
code_r0x002b5c6f:
  *puVar19 = uVar17;
  *(uint *)(puVar19 + 1) = uVar3;
  param_1[1] = puVar19 + 2;
  plVar11 = (long *)*plVar11;
  puVar19 = puVar19 + 2;
  goto joined_r0x002b5c21;
}

