
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void save_segments(Layout * this, Segment_states * segment_states) */

void __thiscall gold::Layout::save_segments(Layout *this,Segment_states *segment_states)

{
  byte bVar1;
  Output_segment *__code;
  _Hash_node_base *p_Var2;
  _Hash_node_base *__src;
  undefined8 *puVar3;
  void *__dest;
  __node_type *__node;
  _Node_iterator_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_false>
  _Var4;
  Output_segment *pOVar5;
  byte bVar6;
  byte bVar7;
  byte bVar8;
  ulong __bkt;
  __bucket_type p_Var9;
  __bucket_type p_Var10;
  undefined8 *puVar11;
  undefined8 *puVar12;
  size_t __n;
  ulong uVar13;
  pointer ppOVar14;
  
  ppOVar14 = (this->segment_list_).
             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.
             _M_impl._M_start;
  if (ppOVar14 !=
      (this->segment_list_).
      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>._M_impl.
      _M_finish) {
    do {
      __code = *ppOVar14;
      puVar3 = (undefined8 *)operator_new(0x300);
      puVar12 = puVar3;
      pOVar5 = __code;
      do {
        uVar13 = (long)pOVar5->output_lists_[0].
                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                       _M_impl._M_finish -
                 (long)pOVar5->output_lists_[0].
                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                       _M_impl._M_start;
        *puVar12 = 0;
        puVar12[1] = 0;
        puVar12[2] = 0;
        if ((long)uVar13 >> 3 == 0) {
          __dest = (void *)0x0;
        }
        else {
          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */
            std::__throw_bad_alloc();
          }
                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */
          __dest = operator_new(uVar13);
        }
        *puVar12 = __dest;
        puVar12[2] = uVar13 + (long)__dest;
        puVar12[1] = __dest;
        p_Var2 = (_Hash_node_base *)
                 pOVar5->output_lists_[0].
                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl
                 ._M_finish;
        __src = (_Hash_node_base *)
                pOVar5->output_lists_[0].
                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
                _M_start;
        __n = (long)p_Var2 - (long)__src;
        if (p_Var2 != __src) {
          __dest = memmove(__dest,__src,__n);
        }
        puVar11 = puVar12 + 3;
        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);
        puVar12[1] = (long)__dest + __n;
        puVar12 = puVar11;
      } while (puVar11 != puVar3 + 0x57);
      bVar6 = __code->field_0x2f8;
      puVar3[0x57] = __code->vaddr_;
      bVar6 = bVar6 & 1;
      uVar13 = (segment_states->_M_h)._M_bucket_count;
      puVar3[0x58] = __code->paddr_;
      puVar3[0x59] = __code->memsz_;
      puVar3[0x5a] = __code->max_align_;
      puVar3[0x5b] = __code->min_p_align_;
      puVar3[0x5c] = __code->offset_;
      puVar3[0x5d] = __code->filesz_;
      *(Elf_Word *)(puVar3 + 0x5e) = __code->type_;
      *(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;
      bVar1 = *(byte *)(puVar3 + 0x5f);
      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;
      bVar7 = __code->field_0x2f8 & 2;
      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;
      bVar8 = __code->field_0x2f8 & 4;
      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;
      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;
      __bkt = (ulong)__code % uVar13;
      p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];
      if (p_Var9 != (__bucket_type)0x0) {
        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;
        p_Var10 = p_Var9->_M_nxt;
        while (__code != pOVar5) {
          p_Var2 = p_Var10->_M_nxt;
          if ((p_Var2 == (_Hash_node_base *)0x0) ||
             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,
             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;
        }
        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;
        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;
      }
LAB_00219710:
      __node = (__node_type *)operator_new(0x18);
      (__node->
      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>
      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;
      *(Output_segment **)
       &(__node->
        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>
        )._M_storage._M_storage = __code;
      *(undefined8 *)
       ((long)&(__node->
               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>
               )._M_storage._M_storage + 8) = 0;
      _Var4._M_cur = (__node_type *)
                     std::
                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
                     ::_M_insert_unique_node
                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);
LAB_002196e0:
      *(undefined8 **)
       ((long)&((_Var4._M_cur)->
               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>
               )._M_storage._M_storage + 8) = puVar3;
      ppOVar14 = ppOVar14 + 1;
    } while ((this->segment_list_).
             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.
             _M_impl._M_finish != ppOVar14);
  }
  return;
}



void FUN_002194b0(long param_1,long *param_2)

{
  byte bVar1;
  byte bVar2;
  long *plVar3;
  void *__src;
  ulong uVar4;
  long *plVar5;
  undefined8 *puVar6;
  void *__dest;
  undefined8 *puVar7;
  long *plVar8;
  byte bVar9;
  byte bVar10;
  ulong uVar11;
  long *plVar12;
  long *plVar13;
  undefined8 in_R9;
  undefined8 *puVar14;
  size_t __n;
  long lVar15;
  ulong *puVar16;
  long lVar17;
  
  puVar16 = *(ulong **)(param_1 + 0x230);
  if (puVar16 != *(ulong **)(param_1 + 0x238)) {
    do {
      plVar3 = (long *)*puVar16;
      puVar6 = (undefined8 *)FUN_00337280(0x300);
      lVar17 = 0x1c;
      puVar7 = puVar6;
      plVar12 = plVar3;
      do {
        lVar15 = plVar12[1] - *plVar12;
        *puVar7 = 0;
        puVar7[1] = 0;
        puVar7[2] = 0;
        if (lVar15 >> 3 == 0) {
          __dest = (void *)0x0;
        }
        else {
          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */
            FUN_00377200();
          }
                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */
          __dest = (void *)FUN_00337280(lVar15);
        }
        *puVar7 = __dest;
        puVar7[2] = lVar15 + (long)__dest;
        puVar7[1] = __dest;
        __src = (void *)*plVar12;
        __n = plVar12[1] - (long)__src;
        if ((void *)plVar12[1] != __src) {
          __dest = memmove(__dest,__src,__n);
        }
        lVar17 = lVar17 + -1;
        puVar14 = puVar7 + 3;
        plVar12 = plVar12 + 3;
        puVar7[1] = (long)__dest + __n;
        puVar7 = puVar14;
      } while (puVar14 != puVar6 + 0x57);
      bVar9 = *(byte *)(plVar3 + 0x5f);
      puVar6[0x57] = plVar3[0x57];
      bVar9 = bVar9 & 1;
      uVar4 = param_2[1];
      puVar6[0x58] = plVar3[0x58];
      puVar6[0x59] = plVar3[0x59];
      puVar6[0x5a] = plVar3[0x5a];
      puVar6[0x5b] = plVar3[0x5b];
      puVar6[0x5c] = plVar3[0x5c];
      puVar6[0x5d] = plVar3[0x5d];
      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];
      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);
      bVar1 = *(byte *)(puVar6 + 0x5f);
      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;
      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;
      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;
      bVar2 = *(byte *)(plVar3 + 0x5f);
      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;
      *(byte *)(puVar6 + 0x5f) =
           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;
      uVar11 = (ulong)plVar3 % uVar4;
      plVar12 = *(long **)(*param_2 + uVar11 * 8);
      if (plVar12 != (long *)0x0) {
        plVar8 = (long *)((long *)*plVar12)[1];
        plVar13 = (long *)*plVar12;
        while (plVar3 != plVar8) {
          plVar5 = (long *)*plVar13;
          if ((plVar5 == (long *)0x0) ||
             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,
             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;
        }
        lVar15 = *plVar12;
        if (lVar15 != 0) goto LAB_002196e0;
      }
LAB_00219710:
      puVar7 = (undefined8 *)FUN_00337280(0x18);
      *puVar7 = 0;
      puVar7[1] = plVar3;
      puVar7[2] = 0;
      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);
LAB_002196e0:
      *(undefined8 **)(lVar15 + 0x10) = puVar6;
      puVar16 = puVar16 + 1;
    } while (*(ulong **)(param_1 + 0x238) != puVar16);
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV R15,qword ptr [RDI + 0x230]
MOV qword ptr [RSP + 0x18],RDI
MOV qword ptr [RSP + 0x10],RSI
CMP R15,qword ptr [RDI + 0x238]
JZ 0x002196f9
NOP dword ptr [RAX]
MOV EDI,0x300
MOV RBX,qword ptr [R15]
CALL 0x00337280
MOV qword ptr [RSP],0x1c
MOV RBP,RAX
MOV R12,RAX
LEA RAX,[RAX + 0x2b8]
MOV R14,RBX
MOV qword ptr [RSP + 0x8],RAX
JMP 0x0021957b
MOV RSI,0x1fffffffffffffff
CMP RAX,RSI
JA 0x0021974c
MOV RDI,R13
CALL 0x00337280
MOV RCX,RAX
ADD R13,RCX
MOV qword ptr [R12],RCX
MOV qword ptr [R12 + 0x10],R13
MOV qword ptr [R12 + 0x8],RCX
MOV RAX,qword ptr [R14 + 0x8]
MOV RSI,qword ptr [R14]
MOV R13,RAX
SUB R13,RSI
CMP RAX,RSI
JZ 0x0021955f
MOV RDI,RCX
MOV RDX,R13
CALL 0x001506d0
MOV RCX,RAX
ADD RCX,R13
SUB qword ptr [RSP],0x1
ADD R12,0x18
ADD R14,0x18
MOV qword ptr [R12 + -0x10],RCX
CMP R12,qword ptr [RSP + 0x8]
JZ 0x002195b0
MOV R13,qword ptr [R14 + 0x8]
SUB R13,qword ptr [R14]
MOV qword ptr [R12],0x0
MOV qword ptr [R12 + 0x8],0x0
MOV RAX,R13
MOV qword ptr [R12 + 0x10],0x0
SAR RAX,0x3
JNZ 0x00219510
XOR ECX,ECX
JMP 0x0021952e
MOV RAX,qword ptr [RBX + 0x2b8]
MOVZX EDX,byte ptr [RBX + 0x2f8]
MOV RDI,qword ptr [RSP + 0x10]
MOV qword ptr [RBP + 0x2b8],RAX
MOV RAX,qword ptr [RBX + 0x2c0]
AND EDX,0x1
MOV R8,qword ptr [RDI + 0x8]
MOV qword ptr [RBP + 0x2c0],RAX
MOV RAX,qword ptr [RBX + 0x2c8]
MOV qword ptr [RBP + 0x2c8],RAX
MOV RAX,qword ptr [RBX + 0x2d0]
MOV qword ptr [RBP + 0x2d0],RAX
MOV RAX,qword ptr [RBX + 0x2d8]
MOV qword ptr [RBP + 0x2d8],RAX
MOV RAX,qword ptr [RBX + 0x2e0]
MOV qword ptr [RBP + 0x2e0],RAX
MOV RAX,qword ptr [RBX + 0x2e8]
MOV qword ptr [RBP + 0x2e8],RAX
MOV EAX,dword ptr [RBX + 0x2f0]
MOV dword ptr [RBP + 0x2f0],EAX
MOV EAX,dword ptr [RBX + 0x2f4]
MOV dword ptr [RBP + 0x2f4],EAX
MOVZX EAX,byte ptr [RBP + 0x2f8]
AND EAX,0xfffffffe
OR EAX,EDX
MOV byte ptr [RBP + 0x2f8],AL
MOVZX EDX,byte ptr [RBX + 0x2f8]
AND EAX,0xfffffffd
AND EDX,0x2
OR EAX,EDX
MOV byte ptr [RBP + 0x2f8],AL
MOVZX EDX,byte ptr [RBX + 0x2f8]
AND EAX,0xfffffffb
AND EDX,0x4
OR EAX,EDX
MOV byte ptr [RBP + 0x2f8],AL
MOVZX EDX,byte ptr [RBX + 0x2f8]
AND EAX,0xfffffff7
AND EDX,0x8
OR EAX,EDX
XOR EDX,EDX
MOV byte ptr [RBP + 0x2f8],AL
MOV RAX,RBX
DIV R8
MOV RAX,qword ptr [RDI]
MOV RSI,qword ptr [RAX + RDX*0x8]
MOV R12,RDX
TEST RSI,RSI
JZ 0x00219710
MOV RDI,qword ptr [RSI]
MOV RCX,qword ptr [RDI + 0x8]
JMP 0x002196cf
MOV RAX,qword ptr [RDI]
TEST RAX,RAX
JZ 0x00219710
MOV RCX,qword ptr [RAX + 0x8]
MOV RSI,RDI
XOR EDX,EDX
MOV RDI,RAX
MOV RAX,RCX
DIV R8
CMP R12,RDX
JNZ 0x00219710
CMP RBX,RCX
JNZ 0x002196b0
MOV RAX,qword ptr [RSI]
TEST RAX,RAX
JZ 0x00219710
ADD RAX,0x10
MOV qword ptr [RAX],RBP
MOV RAX,qword ptr [RSP + 0x18]
ADD R15,0x8
CMP qword ptr [RAX + 0x238],R15
JNZ 0x002194e0
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDI,0x18
CALL 0x00337280
MOV RDI,qword ptr [RSP + 0x10]
MOV RDX,RBX
MOV RSI,R12
MOV qword ptr [RAX],0x0
MOV R8D,0x1
MOV RCX,RAX
MOV qword ptr [RAX + 0x8],RBX
MOV qword ptr [RAX + 0x10],0x0
CALL 0x002223f0
ADD RAX,0x10
JMP 0x002196e0
CALL 0x00377200
(translation_unit "void FUN_002194b0(long param_1,long *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long *plVar3;\n  void *__src;\n  ulong uVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  void *__dest;\n  undefined8 *puVar7;\n  long *plVar8;\n  byte bVar9;\n  byte bVar10;\n  ulong uVar11;\n  long *plVar12;\n  long *plVar13;\n  undefined8 in_R9;\n  undefined8 *puVar14;\n  size_t __n;\n  long lVar15;\n  ulong *puVar16;\n  long lVar17;\n  \n  puVar16 = *(ulong **)(param_1 + 0x230);\n  if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }\n  return;\n}\n\n" (function_definition "void FUN_002194b0(long param_1,long *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long *plVar3;\n  void *__src;\n  ulong uVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  void *__dest;\n  undefined8 *puVar7;\n  long *plVar8;\n  byte bVar9;\n  byte bVar10;\n  ulong uVar11;\n  long *plVar12;\n  long *plVar13;\n  undefined8 in_R9;\n  undefined8 *puVar14;\n  size_t __n;\n  long lVar15;\n  ulong *puVar16;\n  long lVar17;\n  \n  puVar16 = *(ulong **)(param_1 + 0x230);\n  if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002194b0(long param_1,long *param_2)" identifier (parameter_list "(long param_1,long *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  long *plVar3;\n  void *__src;\n  ulong uVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  void *__dest;\n  undefined8 *puVar7;\n  long *plVar8;\n  byte bVar9;\n  byte bVar10;\n  ulong uVar11;\n  long *plVar12;\n  long *plVar13;\n  undefined8 in_R9;\n  undefined8 *puVar14;\n  size_t __n;\n  long lVar15;\n  ulong *puVar16;\n  long lVar17;\n  \n  puVar16 = *(ulong **)(param_1 + 0x230);\n  if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "undefined8 in_R9;" type_identifier identifier ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (expression_statement "puVar16 = *(ulong **)(param_1 + 0x230);" (assignment_expression "puVar16 = *(ulong **)(param_1 + 0x230)" identifier = (pointer_expression "*(ulong **)(param_1 + 0x230)" * (cast_expression "(ulong **)(param_1 + 0x230)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (if_statement "if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }" if (parenthesized_expression "(puVar16 != *(ulong **)(param_1 + 0x238))" ( (binary_expression "puVar16 != *(ulong **)(param_1 + 0x238)" identifier != (pointer_expression "*(ulong **)(param_1 + 0x238)" * (cast_expression "(ulong **)(param_1 + 0x238)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }" { (do_statement "do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);" do (compound_statement "{\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    }" { (expression_statement "plVar3 = (long *)*puVar16;" (assignment_expression "plVar3 = (long *)*puVar16" identifier = (cast_expression "(long *)*puVar16" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (expression_statement "puVar6 = (undefined8 *)FUN_00337280(0x300);" (assignment_expression "puVar6 = (undefined8 *)FUN_00337280(0x300)" identifier = (cast_expression "(undefined8 *)FUN_00337280(0x300)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337280(0x300)" identifier (argument_list "(0x300)" ( number_literal ))))) ;) (expression_statement "lVar17 = 0x1c;" (assignment_expression "lVar17 = 0x1c" identifier = number_literal) ;) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (expression_statement "plVar12 = plVar3;" (assignment_expression "plVar12 = plVar3" identifier = identifier) ;) (do_statement "do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);" do (compound_statement "{\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      }" { (expression_statement "lVar15 = plVar12[1] - *plVar12;" (assignment_expression "lVar15 = plVar12[1] - *plVar12" identifier = (binary_expression "plVar12[1] - *plVar12" (subscript_expression "plVar12[1]" identifier [ number_literal ]) - (pointer_expression "*plVar12" * identifier))) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }" if (parenthesized_expression "(lVar15 >> 3 == 0)" ( (binary_expression "lVar15 >> 3 == 0" (binary_expression "lVar15 >> 3" identifier >> number_literal) == number_literal) )) (compound_statement "{\n          __dest = (void *)0x0;\n        }" { (expression_statement "__dest = (void *)0x0;" (assignment_expression "__dest = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }" else (compound_statement "{\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = (void *)FUN_00337280(lVar15);\n        }" { (if_statement "if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }" if (parenthesized_expression "(0x1fffffffffffffff < (ulong)(lVar15 >> 3))" ( (binary_expression "0x1fffffffffffffff < (ulong)(lVar15 >> 3)" number_literal < (call_expression "(ulong)(lVar15 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar15 >> 3)" ( (binary_expression "lVar15 >> 3" identifier >> number_literal) )))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            FUN_00377200();\n          }" { comment comment (expression_statement "FUN_00377200();" (call_expression "FUN_00377200()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "__dest = (void *)FUN_00337280(lVar15);" (assignment_expression "__dest = (void *)FUN_00337280(lVar15)" identifier = (cast_expression "(void *)FUN_00337280(lVar15)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337280(lVar15)" identifier (argument_list "(lVar15)" ( identifier ))))) ;) }))) (expression_statement "*puVar7 = __dest;" (assignment_expression "*puVar7 = __dest" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "puVar7[2] = lVar15 + (long)__dest;" (assignment_expression "puVar7[2] = lVar15 + (long)__dest" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (binary_expression "lVar15 + (long)__dest" identifier + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "puVar7[1] = __dest;" (assignment_expression "puVar7[1] = __dest" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__src = (void *)*plVar12;" (assignment_expression "__src = (void *)*plVar12" identifier = (cast_expression "(void *)*plVar12" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (expression_statement "__n = plVar12[1] - (long)__src;" (assignment_expression "__n = plVar12[1] - (long)__src" identifier = (binary_expression "plVar12[1] - (long)__src" (subscript_expression "plVar12[1]" identifier [ number_literal ]) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }" if (parenthesized_expression "((void *)plVar12[1] != __src)" ( (binary_expression "(void *)plVar12[1] != __src" (cast_expression "(void *)plVar12[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[1]" identifier [ number_literal ])) != identifier) )) (compound_statement "{\n          __dest = memmove(__dest,__src,__n);\n        }" { (expression_statement "__dest = memmove(__dest,__src,__n);" (assignment_expression "__dest = memmove(__dest,__src,__n)" identifier = (call_expression "memmove(__dest,__src,__n)" identifier (argument_list "(__dest,__src,__n)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "lVar17 = lVar17 + -1;" (assignment_expression "lVar17 = lVar17 + -1" identifier = (binary_expression "lVar17 + -1" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar7 + 3;" (assignment_expression "puVar14 = puVar7 + 3" identifier = (binary_expression "puVar7 + 3" identifier + number_literal)) ;) (expression_statement "plVar12 = plVar12 + 3;" (assignment_expression "plVar12 = plVar12 + 3" identifier = (binary_expression "plVar12 + 3" identifier + number_literal)) ;) (expression_statement "puVar7[1] = (long)__dest + __n;" (assignment_expression "puVar7[1] = (long)__dest + __n" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "puVar7 = puVar14;" (assignment_expression "puVar7 = puVar14" identifier = identifier) ;) }) while (parenthesized_expression "(puVar14 != puVar6 + 0x57)" ( (binary_expression "puVar14 != puVar6 + 0x57" identifier != (binary_expression "puVar6 + 0x57" identifier + number_literal)) )) ;) (expression_statement "bVar9 = *(byte *)(plVar3 + 0x5f);" (assignment_expression "bVar9 = *(byte *)(plVar3 + 0x5f)" identifier = (pointer_expression "*(byte *)(plVar3 + 0x5f)" * (cast_expression "(byte *)(plVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x5f)" ( (binary_expression "plVar3 + 0x5f" identifier + number_literal) ))))) ;) (expression_statement "puVar6[0x57] = plVar3[0x57];" (assignment_expression "puVar6[0x57] = plVar3[0x57]" (subscript_expression "puVar6[0x57]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x57]" identifier [ number_literal ])) ;) (expression_statement "bVar9 = bVar9 & 1;" (assignment_expression "bVar9 = bVar9 & 1" identifier = (binary_expression "bVar9 & 1" identifier & number_literal)) ;) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x58] = plVar3[0x58];" (assignment_expression "puVar6[0x58] = plVar3[0x58]" (subscript_expression "puVar6[0x58]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x58]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x59] = plVar3[0x59];" (assignment_expression "puVar6[0x59] = plVar3[0x59]" (subscript_expression "puVar6[0x59]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x59]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x5a] = plVar3[0x5a];" (assignment_expression "puVar6[0x5a] = plVar3[0x5a]" (subscript_expression "puVar6[0x5a]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x5a]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x5b] = plVar3[0x5b];" (assignment_expression "puVar6[0x5b] = plVar3[0x5b]" (subscript_expression "puVar6[0x5b]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x5b]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x5c] = plVar3[0x5c];" (assignment_expression "puVar6[0x5c] = plVar3[0x5c]" (subscript_expression "puVar6[0x5c]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x5c]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x5d] = plVar3[0x5d];" (assignment_expression "puVar6[0x5d] = plVar3[0x5d]" (subscript_expression "puVar6[0x5d]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x5d]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];" (assignment_expression "*(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e]" (pointer_expression "*(int *)(puVar6 + 0x5e)" * (cast_expression "(int *)(puVar6 + 0x5e)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5e)" ( (binary_expression "puVar6 + 0x5e" identifier + number_literal) )))) = (cast_expression "(int)plVar3[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar3[0x5e]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);" (assignment_expression "*(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4)" (pointer_expression "*(undefined4 *)((long)puVar6 + 0x2f4)" * (cast_expression "(undefined4 *)((long)puVar6 + 0x2f4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 0x2f4)" ( (binary_expression "(long)puVar6 + 0x2f4" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar3 + 0x2f4)" * (cast_expression "(undefined4 *)((long)plVar3 + 0x2f4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar3 + 0x2f4)" ( (binary_expression "(long)plVar3 + 0x2f4" (cast_expression "(long)plVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "bVar1 = *(byte *)(puVar6 + 0x5f);" (assignment_expression "bVar1 = *(byte *)(puVar6 + 0x5f)" identifier = (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9" (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xfe | bVar9" (binary_expression "bVar1 & 0xfe" identifier & number_literal) | identifier)) ;) (expression_statement "bVar10 = *(byte *)(plVar3 + 0x5f) & 2;" (assignment_expression "bVar10 = *(byte *)(plVar3 + 0x5f) & 2" identifier = (binary_expression "*(byte *)(plVar3 + 0x5f) & 2" (pointer_expression "*(byte *)(plVar3 + 0x5f)" * (cast_expression "(byte *)(plVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x5f)" ( (binary_expression "plVar3 + 0x5f" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10" (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xfc | bVar9 | bVar10" (binary_expression "bVar1 & 0xfc | bVar9" (binary_expression "bVar1 & 0xfc" identifier & number_literal) | identifier) | identifier)) ;) (expression_statement "bVar2 = *(byte *)(plVar3 + 0x5f);" (assignment_expression "bVar2 = *(byte *)(plVar3 + 0x5f)" identifier = (pointer_expression "*(byte *)(plVar3 + 0x5f)" * (cast_expression "(byte *)(plVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x5f)" ( (binary_expression "plVar3 + 0x5f" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4" (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4" (binary_expression "bVar1 & 0xf8 | bVar9 | bVar10" (binary_expression "bVar1 & 0xf8 | bVar9" (binary_expression "bVar1 & 0xf8" identifier & number_literal) | identifier) | identifier) | (binary_expression "bVar2 & 4" identifier & number_literal))) ;) (expression_statement "*(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;" (assignment_expression "*(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8" (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8" (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4" (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10" (binary_expression "bVar1 & 0xf0 | bVar9" (binary_expression "bVar1 & 0xf0" identifier & number_literal) | identifier) | identifier) | (binary_expression "bVar2 & 4" identifier & number_literal)) | (binary_expression "*(byte *)(plVar3 + 0x5f) & 8" (pointer_expression "*(byte *)(plVar3 + 0x5f)" * (cast_expression "(byte *)(plVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x5f)" ( (binary_expression "plVar3 + 0x5f" identifier + number_literal) )))) & number_literal))) ;) (expression_statement "uVar11 = (ulong)plVar3 % uVar4;" (assignment_expression "uVar11 = (ulong)plVar3 % uVar4" identifier = (binary_expression "(ulong)plVar3 % uVar4" (cast_expression "(ulong)plVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) ;) (expression_statement "plVar12 = *(long **)(*param_2 + uVar11 * 8);" (assignment_expression "plVar12 = *(long **)(*param_2 + uVar11 * 8)" identifier = (pointer_expression "*(long **)(*param_2 + uVar11 * 8)" * (cast_expression "(long **)(*param_2 + uVar11 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + uVar11 * 8)" ( (binary_expression "*param_2 + uVar11 * 8" (pointer_expression "*param_2" * identifier) + (binary_expression "uVar11 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }" if (parenthesized_expression "(plVar12 != (long *)0x0)" ( (binary_expression "plVar12 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }" { (expression_statement "plVar8 = (long *)((long *)*plVar12)[1];" (assignment_expression "plVar8 = (long *)((long *)*plVar12)[1]" identifier = (cast_expression "(long *)((long *)*plVar12)[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "((long *)*plVar12)[1]" (parenthesized_expression "((long *)*plVar12)" ( (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier)) )) [ number_literal ]))) ;) (expression_statement "plVar13 = (long *)*plVar12;" (assignment_expression "plVar13 = (long *)*plVar12" identifier = (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (while_statement "while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }" while (parenthesized_expression "(plVar3 != plVar8)" ( (binary_expression "plVar3 != plVar8" identifier != identifier) )) (compound_statement "{\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }" { (expression_statement "plVar5 = (long *)*plVar13;" (assignment_expression "plVar5 = (long *)*plVar13" identifier = (cast_expression "(long *)*plVar13" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar13" * identifier))) ;) (if_statement "if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;" if (parenthesized_expression "((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4))" ( (binary_expression "(plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)" (parenthesized_expression "(plVar5 == (long *)0x0)" ( (binary_expression "plVar5 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)" ( (comma_expression "plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar8 = (long *)plVar5[1]" identifier = (cast_expression "(long *)plVar5[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[1]" identifier [ number_literal ]))) , (comma_expression "plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar12 = plVar13" identifier = identifier) , (comma_expression "plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar13 = plVar5" identifier = identifier) , (binary_expression "uVar11 != (ulong)plVar8 % uVar4" identifier != (binary_expression "(ulong)plVar8 % uVar4" (cast_expression "(ulong)plVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier))))) ))) )) (goto_statement "goto LAB_00219710;" goto statement_identifier ;)) })) (expression_statement "lVar15 = *plVar12;" (assignment_expression "lVar15 = *plVar12" identifier = (pointer_expression "*plVar12" * identifier)) ;) (if_statement "if (lVar15 != 0) goto LAB_002196e0;" if (parenthesized_expression "(lVar15 != 0)" ( (binary_expression "lVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_002196e0;" goto statement_identifier ;)) })) (labeled_statement "LAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);" statement_identifier : (expression_statement "puVar7 = (undefined8 *)FUN_00337280(0x18);" (assignment_expression "puVar7 = (undefined8 *)FUN_00337280(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337280(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337280(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;)) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7[1] = plVar3;" (assignment_expression "puVar7[1] = plVar3" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);" (assignment_expression "lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" identifier = (call_expression "FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" identifier (argument_list "(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" ( identifier , identifier , identifier , identifier , number_literal , identifier , identifier )))) ;) (labeled_statement "LAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;" statement_identifier : (expression_statement "*(undefined8 **)(lVar15 + 0x10) = puVar6;" (assignment_expression "*(undefined8 **)(lVar15 + 0x10) = puVar6" (pointer_expression "*(undefined8 **)(lVar15 + 0x10)" * (cast_expression "(undefined8 **)(lVar15 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar15 + 0x10)" ( (binary_expression "lVar15 + 0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(ulong **)(param_1 + 0x238) != puVar16)" ( (binary_expression "*(ulong **)(param_1 + 0x238) != puVar16" (pointer_expression "*(ulong **)(param_1 + 0x238)" * (cast_expression "(ulong **)(param_1 + 0x238)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void save_segments(Layout * this, Segment_states * segment_states) */\n\nvoid __thiscall gold::Layout::save_segments(Layout *this,Segment_states *segment_states)\n\n{\n  byte bVar1;\n  Output_segment *__code;\n  _Hash_node_base *p_Var2;\n  _Hash_node_base *__src;\n  undefined8 *puVar3;\n  void *__dest;\n  __node_type *__node;\n  _Node_iterator_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_false>\n  _Var4;\n  Output_segment *pOVar5;\n  byte bVar6;\n  byte bVar7;\n  byte bVar8;\n  ulong __bkt;\n  __bucket_type p_Var9;\n  __bucket_type p_Var10;\n  undefined8 *puVar11;\n  undefined8 *puVar12;\n  size_t __n;\n  ulong uVar13;\n  pointer ppOVar14;\n  \n  ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_start;\n  if (ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>._M_impl.\n      _M_finish) {\n    do {\n      __code = *ppOVar14;\n      puVar3 = (undefined8 *)operator_new(0x300);\n      puVar12 = puVar3;\n      pOVar5 = __code;\n      do {\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      } while (puVar11 != puVar3 + 0x57);\n      bVar6 = __code->field_0x2f8;\n      puVar3[0x57] = __code->vaddr_;\n      bVar6 = bVar6 & 1;\n      uVar13 = (segment_states->_M_h)._M_bucket_count;\n      puVar3[0x58] = __code->paddr_;\n      puVar3[0x59] = __code->memsz_;\n      puVar3[0x5a] = __code->max_align_;\n      puVar3[0x5b] = __code->min_p_align_;\n      puVar3[0x5c] = __code->offset_;\n      puVar3[0x5d] = __code->filesz_;\n      *(Elf_Word *)(puVar3 + 0x5e) = __code->type_;\n      *(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;\n      bVar1 = *(byte *)(puVar3 + 0x5f);\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;\n      bVar7 = __code->field_0x2f8 & 2;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;\n      bVar8 = __code->field_0x2f8 & 4;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;\n      __bkt = (ulong)__code % uVar13;\n      p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];\n      if (p_Var9 != (__bucket_type)0x0) {\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      __node = (__node_type *)operator_new(0x18);\n      (__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;\n      *(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code;\n      *(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0;\n      _Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);\nLAB_002196e0:\n      *(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;\n      ppOVar14 = ppOVar14 + 1;\n    } while ((this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish != ppOVar14);\n  }\n  return;\n}\n\n" comment comment (function_definition "void __thiscall gold::Layout::save_segments(Layout *this,Segment_states *segment_states)\n\n{\n  byte bVar1;\n  Output_segment *__code;\n  _Hash_node_base *p_Var2;\n  _Hash_node_base *__src;\n  undefined8 *puVar3;\n  void *__dest;\n  __node_type *__node;\n  _Node_iterator_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_false>\n  _Var4;\n  Output_segment *pOVar5;\n  byte bVar6;\n  byte bVar7;\n  byte bVar8;\n  ulong __bkt;\n  __bucket_type p_Var9;\n  __bucket_type p_Var10;\n  undefined8 *puVar11;\n  undefined8 *puVar12;\n  size_t __n;\n  ulong uVar13;\n  pointer ppOVar14;\n  \n  ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_start;\n  if (ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>._M_impl.\n      _M_finish) {\n    do {\n      __code = *ppOVar14;\n      puVar3 = (undefined8 *)operator_new(0x300);\n      puVar12 = puVar3;\n      pOVar5 = __code;\n      do {\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      } while (puVar11 != puVar3 + 0x57);\n      bVar6 = __code->field_0x2f8;\n      puVar3[0x57] = __code->vaddr_;\n      bVar6 = bVar6 & 1;\n      uVar13 = (segment_states->_M_h)._M_bucket_count;\n      puVar3[0x58] = __code->paddr_;\n      puVar3[0x59] = __code->memsz_;\n      puVar3[0x5a] = __code->max_align_;\n      puVar3[0x5b] = __code->min_p_align_;\n      puVar3[0x5c] = __code->offset_;\n      puVar3[0x5d] = __code->filesz_;\n      *(Elf_Word *)(puVar3 + 0x5e) = __code->type_;\n      *(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;\n      bVar1 = *(byte *)(puVar3 + 0x5f);\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;\n      bVar7 = __code->field_0x2f8 & 2;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;\n      bVar8 = __code->field_0x2f8 & 4;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;\n      __bkt = (ulong)__code % uVar13;\n      p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];\n      if (p_Var9 != (__bucket_type)0x0) {\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      __node = (__node_type *)operator_new(0x18);\n      (__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;\n      *(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code;\n      *(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0;\n      _Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);\nLAB_002196e0:\n      *(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;\n      ppOVar14 = ppOVar14 + 1;\n    } while ((this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish != ppOVar14);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "save_segments(Layout *this,Segment_states *segment_states)" identifier (parameter_list "(Layout *this,Segment_states *segment_states)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Segment_states *segment_states" type_identifier (pointer_declarator "*segment_states" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  Output_segment *__code;\n  _Hash_node_base *p_Var2;\n  _Hash_node_base *__src;\n  undefined8 *puVar3;\n  void *__dest;\n  __node_type *__node;\n  _Node_iterator_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_false>\n  _Var4;\n  Output_segment *pOVar5;\n  byte bVar6;\n  byte bVar7;\n  byte bVar8;\n  ulong __bkt;\n  __bucket_type p_Var9;\n  __bucket_type p_Var10;\n  undefined8 *puVar11;\n  undefined8 *puVar12;\n  size_t __n;\n  ulong uVar13;\n  pointer ppOVar14;\n  \n  ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_start;\n  if (ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>._M_impl.\n      _M_finish) {\n    do {\n      __code = *ppOVar14;\n      puVar3 = (undefined8 *)operator_new(0x300);\n      puVar12 = puVar3;\n      pOVar5 = __code;\n      do {\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      } while (puVar11 != puVar3 + 0x57);\n      bVar6 = __code->field_0x2f8;\n      puVar3[0x57] = __code->vaddr_;\n      bVar6 = bVar6 & 1;\n      uVar13 = (segment_states->_M_h)._M_bucket_count;\n      puVar3[0x58] = __code->paddr_;\n      puVar3[0x59] = __code->memsz_;\n      puVar3[0x5a] = __code->max_align_;\n      puVar3[0x5b] = __code->min_p_align_;\n      puVar3[0x5c] = __code->offset_;\n      puVar3[0x5d] = __code->filesz_;\n      *(Elf_Word *)(puVar3 + 0x5e) = __code->type_;\n      *(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;\n      bVar1 = *(byte *)(puVar3 + 0x5f);\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;\n      bVar7 = __code->field_0x2f8 & 2;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;\n      bVar8 = __code->field_0x2f8 & 4;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;\n      __bkt = (ulong)__code % uVar13;\n      p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];\n      if (p_Var9 != (__bucket_type)0x0) {\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      __node = (__node_type *)operator_new(0x18);\n      (__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;\n      *(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code;\n      *(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0;\n      _Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);\nLAB_002196e0:\n      *(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;\n      ppOVar14 = ppOVar14 + 1;\n    } while ((this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish != ppOVar14);\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "Output_segment *__code;" type_identifier (pointer_declarator "*__code" * identifier) ;) (declaration "_Hash_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "_Hash_node_base *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "__node_type *__node;" type_identifier (pointer_declarator "*__node" * identifier) ;) (ERROR "_Node_iterator_base<std::pair<const_gold::Output_segment*_const,_const_gold::" (comma_expression "_Node_iterator_base<std::pair<const_gold::Output_segment*_const,_const_gold" (binary_expression "_Node_iterator_base<std::pair<const_gold::Output_segment*_const" (binary_expression "_Node_iterator_base<std::pair<const_gold" (binary_expression "_Node_iterator_base<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * identifier) , identifier) : :) (expression_statement "Output_segment*>,_false>\n  _Var4;" (binary_expression "Output_segment*>,_false>\n  _Var4" (binary_expression "Output_segment*>,_false" identifier * (ERROR ">," > ,) identifier) > identifier) ;) (declaration "Output_segment *pOVar5;" type_identifier (pointer_declarator "*pOVar5" * identifier) ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "ulong __bkt;" type_identifier identifier ;) (declaration "__bucket_type p_Var9;" type_identifier identifier ;) (declaration "__bucket_type p_Var10;" type_identifier identifier ;) (declaration "undefined8 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined8 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "pointer ppOVar14;" type_identifier identifier ;) (expression_statement "ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_start;" (field_expression "ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_start" (field_expression "ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl" (binary_expression "ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold" (binary_expression "ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std" (assignment_expression "ppOVar14 = (this->segment_list_).\n             super__Vector_base<gold" identifier = (binary_expression "(this->segment_list_).\n             super__Vector_base<gold" (field_expression "(this->segment_list_).\n             super__Vector_base" (parenthesized_expression "(this->segment_list_)" ( (field_expression "this->segment_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>._M_impl.\n      _M_finish) {\n    do {\n      __code = *ppOVar14;\n      puVar3 = (undefined8 *)operator_new(0x300);\n      puVar12 = puVar3;\n      pOVar5 = __code;\n      do {\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      } while (puVar11 != puVar3 + 0x57);\n      bVar6 = __code->field_0x2f8;\n      puVar3[0x57] = __code->vaddr_;\n      bVar6 = bVar6 & 1;\n      uVar13 = (segment_states->_M_h)._M_bucket_count;\n      puVar3[0x58] = __code->paddr_;\n      puVar3[0x59] = __code->memsz_;\n      puVar3[0x5a] = __code->max_align_;\n      puVar3[0x5b] = __code->min_p_align_;\n      puVar3[0x5c] = __code->offset_;\n      puVar3[0x5d] = __code->filesz_;\n      *(Elf_Word *)(puVar3 + 0x5e) = __code->type_;\n      *(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;\n      bVar1 = *(byte *)(puVar3 + 0x5f);\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;\n      bVar7 = __code->field_0x2f8 & 2;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;\n      bVar8 = __code->field_0x2f8 & 4;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;\n      __bkt = (ulong)__code % uVar13;\n      p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];\n      if (p_Var9 != (__bucket_type)0x0) {\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      __node = (__node_type *)operator_new(0x18);\n      (__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;\n      *(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code;\n      *(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0;\n      _Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);\nLAB_002196e0:\n      *(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;\n      ppOVar14 = ppOVar14 + 1;\n    } while ((this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish != ppOVar14);\n  }" if (parenthesized_expression "(ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>._M_impl.\n      _M_finish)" ( (field_expression "ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>._M_impl.\n      _M_finish" (field_expression "ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>._M_impl" (binary_expression "ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std::allocator<gold" (binary_expression "ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold::Output_segment*,_std" (binary_expression "ppOVar14 !=\n      (this->segment_list_).\n      super__Vector_base<gold" identifier != (binary_expression "(this->segment_list_).\n      super__Vector_base<gold" (field_expression "(this->segment_list_).\n      super__Vector_base" (parenthesized_expression "(this->segment_list_)" ( (field_expression "this->segment_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    do {\n      __code = *ppOVar14;\n      puVar3 = (undefined8 *)operator_new(0x300);\n      puVar12 = puVar3;\n      pOVar5 = __code;\n      do {\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      } while (puVar11 != puVar3 + 0x57);\n      bVar6 = __code->field_0x2f8;\n      puVar3[0x57] = __code->vaddr_;\n      bVar6 = bVar6 & 1;\n      uVar13 = (segment_states->_M_h)._M_bucket_count;\n      puVar3[0x58] = __code->paddr_;\n      puVar3[0x59] = __code->memsz_;\n      puVar3[0x5a] = __code->max_align_;\n      puVar3[0x5b] = __code->min_p_align_;\n      puVar3[0x5c] = __code->offset_;\n      puVar3[0x5d] = __code->filesz_;\n      *(Elf_Word *)(puVar3 + 0x5e) = __code->type_;\n      *(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;\n      bVar1 = *(byte *)(puVar3 + 0x5f);\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;\n      bVar7 = __code->field_0x2f8 & 2;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;\n      bVar8 = __code->field_0x2f8 & 4;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;\n      __bkt = (ulong)__code % uVar13;\n      p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];\n      if (p_Var9 != (__bucket_type)0x0) {\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      __node = (__node_type *)operator_new(0x18);\n      (__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;\n      *(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code;\n      *(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0;\n      _Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);\nLAB_002196e0:\n      *(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;\n      ppOVar14 = ppOVar14 + 1;\n    } while ((this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish != ppOVar14);\n  }" { (do_statement "do {\n      __code = *ppOVar14;\n      puVar3 = (undefined8 *)operator_new(0x300);\n      puVar12 = puVar3;\n      pOVar5 = __code;\n      do {\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      } while (puVar11 != puVar3 + 0x57);\n      bVar6 = __code->field_0x2f8;\n      puVar3[0x57] = __code->vaddr_;\n      bVar6 = bVar6 & 1;\n      uVar13 = (segment_states->_M_h)._M_bucket_count;\n      puVar3[0x58] = __code->paddr_;\n      puVar3[0x59] = __code->memsz_;\n      puVar3[0x5a] = __code->max_align_;\n      puVar3[0x5b] = __code->min_p_align_;\n      puVar3[0x5c] = __code->offset_;\n      puVar3[0x5d] = __code->filesz_;\n      *(Elf_Word *)(puVar3 + 0x5e) = __code->type_;\n      *(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;\n      bVar1 = *(byte *)(puVar3 + 0x5f);\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;\n      bVar7 = __code->field_0x2f8 & 2;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;\n      bVar8 = __code->field_0x2f8 & 4;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;\n      __bkt = (ulong)__code % uVar13;\n      p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];\n      if (p_Var9 != (__bucket_type)0x0) {\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      __node = (__node_type *)operator_new(0x18);\n      (__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;\n      *(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code;\n      *(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0;\n      _Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);\nLAB_002196e0:\n      *(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;\n      ppOVar14 = ppOVar14 + 1;\n    } while ((this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish != ppOVar14);" do (compound_statement "{\n      __code = *ppOVar14;\n      puVar3 = (undefined8 *)operator_new(0x300);\n      puVar12 = puVar3;\n      pOVar5 = __code;\n      do {\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      } while (puVar11 != puVar3 + 0x57);\n      bVar6 = __code->field_0x2f8;\n      puVar3[0x57] = __code->vaddr_;\n      bVar6 = bVar6 & 1;\n      uVar13 = (segment_states->_M_h)._M_bucket_count;\n      puVar3[0x58] = __code->paddr_;\n      puVar3[0x59] = __code->memsz_;\n      puVar3[0x5a] = __code->max_align_;\n      puVar3[0x5b] = __code->min_p_align_;\n      puVar3[0x5c] = __code->offset_;\n      puVar3[0x5d] = __code->filesz_;\n      *(Elf_Word *)(puVar3 + 0x5e) = __code->type_;\n      *(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;\n      bVar1 = *(byte *)(puVar3 + 0x5f);\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;\n      bVar7 = __code->field_0x2f8 & 2;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;\n      bVar8 = __code->field_0x2f8 & 4;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;\n      *(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;\n      __bkt = (ulong)__code % uVar13;\n      p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];\n      if (p_Var9 != (__bucket_type)0x0) {\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      __node = (__node_type *)operator_new(0x18);\n      (__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;\n      *(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code;\n      *(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0;\n      _Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);\nLAB_002196e0:\n      *(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;\n      ppOVar14 = ppOVar14 + 1;\n    }" { (expression_statement "__code = *ppOVar14;" (assignment_expression "__code = *ppOVar14" identifier = (pointer_expression "*ppOVar14" * identifier)) ;) (expression_statement "puVar3 = (undefined8 *)operator_new(0x300);" (assignment_expression "puVar3 = (undefined8 *)operator_new(0x300)" identifier = (cast_expression "(undefined8 *)operator_new(0x300)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x300)" identifier (argument_list "(0x300)" ( number_literal ))))) ;) (expression_statement "puVar12 = puVar3;" (assignment_expression "puVar12 = puVar3" identifier = identifier) ;) (expression_statement "pOVar5 = __code;" (assignment_expression "pOVar5 = __code" identifier = identifier) ;) (do_statement "do {\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      } while (puVar11 != puVar3 + 0x57);" do (compound_statement "{\n        uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;\n        *puVar12 = 0;\n        puVar12[1] = 0;\n        puVar12[2] = 0;\n        if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }\n        *puVar12 = __dest;\n        puVar12[2] = uVar13 + (long)__dest;\n        puVar12[1] = __dest;\n        p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;\n        __src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;\n        __n = (long)p_Var2 - (long)__src;\n        if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        puVar11 = puVar12 + 3;\n        pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);\n        puVar12[1] = (long)__dest + __n;\n        puVar12 = puVar11;\n      }" { (expression_statement "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start;" (field_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_start" (field_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl" (binary_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std" (binary_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold" (binary_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish -\n                 (long)pOVar5->output_lists_[0].\n                       super__Vector_base" (field_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl._M_finish" (field_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                       _M_impl" (binary_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold::Output_data*,_std" (assignment_expression "uVar13 = (long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold" identifier = (binary_expression "(long)pOVar5->output_lists_[0].\n                       super__Vector_base<gold" (cast_expression "(long)pOVar5->output_lists_[0].\n                       super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pOVar5->output_lists_[0].\n                       super__Vector_base" (subscript_expression "pOVar5->output_lists_[0]" (field_expression "pOVar5->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)pOVar5->output_lists_[0].\n                       super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pOVar5->output_lists_[0].\n                       super__Vector_base" (subscript_expression "pOVar5->output_lists_[0]" (field_expression "pOVar5->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier))) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "*puVar12 = 0;" (assignment_expression "*puVar12 = 0" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12[2] = 0;" (assignment_expression "puVar12[2] = 0" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((long)uVar13 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }" if (parenthesized_expression "((long)uVar13 >> 3 == 0)" ( (binary_expression "(long)uVar13 >> 3 == 0" (binary_expression "(long)uVar13 >> 3" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) == number_literal) )) (compound_statement "{\n          __dest = (void *)0x0;\n        }" { (expression_statement "__dest = (void *)0x0;" (assignment_expression "__dest = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }" else (compound_statement "{\n          if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }\n                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */\n          __dest = operator_new(uVar13);\n        }" { (if_statement "if (0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\n            std::__throw_bad_alloc();\n          }" if (parenthesized_expression "(0x1fffffffffffffff < (ulong)((long)uVar13 >> 3))" ( (binary_expression "0x1fffffffffffffff < (ulong)((long)uVar13 >> 3)" number_literal < (call_expression "(ulong)((long)uVar13 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)uVar13 >> 3)" ( (binary_expression "(long)uVar13 >> 3" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */\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 "__dest = operator_new(uVar13);" (assignment_expression "__dest = operator_new(uVar13)" identifier = (call_expression "operator_new(uVar13)" identifier (argument_list "(uVar13)" ( identifier )))) ;) }))) (expression_statement "*puVar12 = __dest;" (assignment_expression "*puVar12 = __dest" (pointer_expression "*puVar12" * identifier) = identifier) ;) (expression_statement "puVar12[2] = uVar13 + (long)__dest;" (assignment_expression "puVar12[2] = uVar13 + (long)__dest" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = (binary_expression "uVar13 + (long)__dest" identifier + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "puVar12[1] = __dest;" (assignment_expression "puVar12[1] = __dest" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish;" (field_expression "p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_finish" (field_expression "p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std" (assignment_expression "p_Var2 = (_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold" identifier = (binary_expression "(_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base<gold" (cast_expression "(_Hash_node_base *)\n                 pOVar5->output_lists_[0].\n                 super__Vector_base" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar5->output_lists_[0].\n                 super__Vector_base" (subscript_expression "pOVar5->output_lists_[0]" (field_expression "pOVar5->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "__src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start;" (field_expression "__src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_start" (field_expression "__src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "__src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "__src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "__src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std" (assignment_expression "__src = (_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold" identifier = (binary_expression "(_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base<gold" (cast_expression "(_Hash_node_base *)\n                pOVar5->output_lists_[0].\n                super__Vector_base" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pOVar5->output_lists_[0].\n                super__Vector_base" (subscript_expression "pOVar5->output_lists_[0]" (field_expression "pOVar5->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "__n = (long)p_Var2 - (long)__src;" (assignment_expression "__n = (long)p_Var2 - (long)__src" identifier = (binary_expression "(long)p_Var2 - (long)__src" (cast_expression "(long)p_Var2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (p_Var2 != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }" if (parenthesized_expression "(p_Var2 != __src)" ( (binary_expression "p_Var2 != __src" identifier != identifier) )) (compound_statement "{\n          __dest = memmove(__dest,__src,__n);\n        }" { (expression_statement "__dest = memmove(__dest,__src,__n);" (assignment_expression "__dest = memmove(__dest,__src,__n)" identifier = (call_expression "memmove(__dest,__src,__n)" identifier (argument_list "(__dest,__src,__n)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "puVar11 = puVar12 + 3;" (assignment_expression "puVar11 = puVar12 + 3" identifier = (binary_expression "puVar12 + 3" identifier + number_literal)) ;) (expression_statement "pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1);" (assignment_expression "pOVar5 = (Output_segment *)(pOVar5->output_lists_ + 1)" identifier = (cast_expression "(Output_segment *)(pOVar5->output_lists_ + 1)" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pOVar5->output_lists_ + 1)" ( (binary_expression "pOVar5->output_lists_ + 1" (field_expression "pOVar5->output_lists_" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "puVar12[1] = (long)__dest + __n;" (assignment_expression "puVar12[1] = (long)__dest + __n" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "puVar12 = puVar11;" (assignment_expression "puVar12 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(puVar11 != puVar3 + 0x57)" ( (binary_expression "puVar11 != puVar3 + 0x57" identifier != (binary_expression "puVar3 + 0x57" identifier + number_literal)) )) ;) (expression_statement "bVar6 = __code->field_0x2f8;" (assignment_expression "bVar6 = __code->field_0x2f8" identifier = (field_expression "__code->field_0x2f8" identifier -> field_identifier)) ;) (expression_statement "puVar3[0x57] = __code->vaddr_;" (assignment_expression "puVar3[0x57] = __code->vaddr_" (subscript_expression "puVar3[0x57]" identifier [ number_literal ]) = (field_expression "__code->vaddr_" identifier -> field_identifier)) ;) (expression_statement "bVar6 = bVar6 & 1;" (assignment_expression "bVar6 = bVar6 & 1" identifier = (binary_expression "bVar6 & 1" identifier & number_literal)) ;) (expression_statement "uVar13 = (segment_states->_M_h)._M_bucket_count;" (assignment_expression "uVar13 = (segment_states->_M_h)._M_bucket_count" identifier = (field_expression "(segment_states->_M_h)._M_bucket_count" (parenthesized_expression "(segment_states->_M_h)" ( (field_expression "segment_states->_M_h" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar3[0x58] = __code->paddr_;" (assignment_expression "puVar3[0x58] = __code->paddr_" (subscript_expression "puVar3[0x58]" identifier [ number_literal ]) = (field_expression "__code->paddr_" identifier -> field_identifier)) ;) (expression_statement "puVar3[0x59] = __code->memsz_;" (assignment_expression "puVar3[0x59] = __code->memsz_" (subscript_expression "puVar3[0x59]" identifier [ number_literal ]) = (field_expression "__code->memsz_" identifier -> field_identifier)) ;) (expression_statement "puVar3[0x5a] = __code->max_align_;" (assignment_expression "puVar3[0x5a] = __code->max_align_" (subscript_expression "puVar3[0x5a]" identifier [ number_literal ]) = (field_expression "__code->max_align_" identifier -> field_identifier)) ;) (expression_statement "puVar3[0x5b] = __code->min_p_align_;" (assignment_expression "puVar3[0x5b] = __code->min_p_align_" (subscript_expression "puVar3[0x5b]" identifier [ number_literal ]) = (field_expression "__code->min_p_align_" identifier -> field_identifier)) ;) (expression_statement "puVar3[0x5c] = __code->offset_;" (assignment_expression "puVar3[0x5c] = __code->offset_" (subscript_expression "puVar3[0x5c]" identifier [ number_literal ]) = (field_expression "__code->offset_" identifier -> field_identifier)) ;) (expression_statement "puVar3[0x5d] = __code->filesz_;" (assignment_expression "puVar3[0x5d] = __code->filesz_" (subscript_expression "puVar3[0x5d]" identifier [ number_literal ]) = (field_expression "__code->filesz_" identifier -> field_identifier)) ;) (expression_statement "*(Elf_Word *)(puVar3 + 0x5e) = __code->type_;" (assignment_expression "*(Elf_Word *)(puVar3 + 0x5e) = __code->type_" (pointer_expression "*(Elf_Word *)(puVar3 + 0x5e)" * (cast_expression "(Elf_Word *)(puVar3 + 0x5e)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x5e)" ( (binary_expression "puVar3 + 0x5e" identifier + number_literal) )))) = (field_expression "__code->type_" identifier -> field_identifier)) ;) (expression_statement "*(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_;" (assignment_expression "*(Elf_Word *)((long)puVar3 + 0x2f4) = __code->flags_" (pointer_expression "*(Elf_Word *)((long)puVar3 + 0x2f4)" * (cast_expression "(Elf_Word *)((long)puVar3 + 0x2f4)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 0x2f4)" ( (binary_expression "(long)puVar3 + 0x2f4" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (field_expression "__code->flags_" identifier -> field_identifier)) ;) (expression_statement "bVar1 = *(byte *)(puVar3 + 0x5f);" (assignment_expression "bVar1 = *(byte *)(puVar3 + 0x5f)" identifier = (pointer_expression "*(byte *)(puVar3 + 0x5f)" * (cast_expression "(byte *)(puVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x5f)" ( (binary_expression "puVar3 + 0x5f" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6;" (assignment_expression "*(byte *)(puVar3 + 0x5f) = bVar1 & 0xfe | bVar6" (pointer_expression "*(byte *)(puVar3 + 0x5f)" * (cast_expression "(byte *)(puVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x5f)" ( (binary_expression "puVar3 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xfe | bVar6" (binary_expression "bVar1 & 0xfe" identifier & number_literal) | identifier)) ;) (expression_statement "bVar7 = __code->field_0x2f8 & 2;" (assignment_expression "bVar7 = __code->field_0x2f8 & 2" identifier = (binary_expression "__code->field_0x2f8 & 2" (field_expression "__code->field_0x2f8" identifier -> field_identifier) & number_literal)) ;) (expression_statement "*(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7;" (assignment_expression "*(byte *)(puVar3 + 0x5f) = bVar1 & 0xfc | bVar6 | bVar7" (pointer_expression "*(byte *)(puVar3 + 0x5f)" * (cast_expression "(byte *)(puVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x5f)" ( (binary_expression "puVar3 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xfc | bVar6 | bVar7" (binary_expression "bVar1 & 0xfc | bVar6" (binary_expression "bVar1 & 0xfc" identifier & number_literal) | identifier) | identifier)) ;) (expression_statement "bVar8 = __code->field_0x2f8 & 4;" (assignment_expression "bVar8 = __code->field_0x2f8 & 4" identifier = (binary_expression "__code->field_0x2f8 & 4" (field_expression "__code->field_0x2f8" identifier -> field_identifier) & number_literal)) ;) (expression_statement "*(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8;" (assignment_expression "*(byte *)(puVar3 + 0x5f) = bVar1 & 0xf8 | bVar6 | bVar7 | bVar8" (pointer_expression "*(byte *)(puVar3 + 0x5f)" * (cast_expression "(byte *)(puVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x5f)" ( (binary_expression "puVar3 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xf8 | bVar6 | bVar7 | bVar8" (binary_expression "bVar1 & 0xf8 | bVar6 | bVar7" (binary_expression "bVar1 & 0xf8 | bVar6" (binary_expression "bVar1 & 0xf8" identifier & number_literal) | identifier) | identifier) | identifier)) ;) (expression_statement "*(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8;" (assignment_expression "*(byte *)(puVar3 + 0x5f) = bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8" (pointer_expression "*(byte *)(puVar3 + 0x5f)" * (cast_expression "(byte *)(puVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x5f)" ( (binary_expression "puVar3 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xf0 | bVar6 | bVar7 | bVar8 | __code->field_0x2f8 & 8" (binary_expression "bVar1 & 0xf0 | bVar6 | bVar7 | bVar8" (binary_expression "bVar1 & 0xf0 | bVar6 | bVar7" (binary_expression "bVar1 & 0xf0 | bVar6" (binary_expression "bVar1 & 0xf0" identifier & number_literal) | identifier) | identifier) | identifier) | (binary_expression "__code->field_0x2f8 & 8" (field_expression "__code->field_0x2f8" identifier -> field_identifier) & number_literal))) ;) (expression_statement "__bkt = (ulong)__code % uVar13;" (assignment_expression "__bkt = (ulong)__code % uVar13" identifier = (binary_expression "(ulong)__code % uVar13" (cast_expression "(ulong)__code" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) ;) (expression_statement "p_Var9 = (segment_states->_M_h)._M_buckets[__bkt];" (assignment_expression "p_Var9 = (segment_states->_M_h)._M_buckets[__bkt]" identifier = (subscript_expression "(segment_states->_M_h)._M_buckets[__bkt]" (field_expression "(segment_states->_M_h)._M_buckets" (parenthesized_expression "(segment_states->_M_h)" ( (field_expression "segment_states->_M_h" identifier -> field_identifier) )) . field_identifier) [ identifier ])) ;) (if_statement "if (p_Var9 != (__bucket_type)0x0) {\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }" if (parenthesized_expression "(p_Var9 != (__bucket_type)0x0)" ( (binary_expression "p_Var9 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n        pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;\n        p_Var10 = p_Var9->_M_nxt;\n        while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }\n        _Var4._M_cur = (__node_type *)p_Var9->_M_nxt;\n        if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;\n      }" { (expression_statement "pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt;" (assignment_expression "pOVar5 = (Output_segment *)p_Var9->_M_nxt[1]._M_nxt" identifier = (cast_expression "(Output_segment *)p_Var9->_M_nxt[1]._M_nxt" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var9->_M_nxt[1]._M_nxt" (subscript_expression "p_Var9->_M_nxt[1]" (field_expression "p_Var9->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "p_Var10 = p_Var9->_M_nxt;" (assignment_expression "p_Var10 = p_Var9->_M_nxt" identifier = (field_expression "p_Var9->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (__code != pOVar5) {\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }" while (parenthesized_expression "(__code != pOVar5)" ( (binary_expression "__code != pOVar5" identifier != identifier) )) (compound_statement "{\n          p_Var2 = p_Var10->_M_nxt;\n          if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;\n        }" { (expression_statement "p_Var2 = p_Var10->_M_nxt;" (assignment_expression "p_Var2 = p_Var10->_M_nxt" identifier = (field_expression "p_Var10->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)) goto LAB_00219710;" if (parenthesized_expression "((p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13))" ( (binary_expression "(p_Var2 == (_Hash_node_base *)0x0) ||\n             (pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)" (parenthesized_expression "(p_Var2 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var2 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13)" ( (comma_expression "pOVar5 = (Output_segment *)p_Var2[1]._M_nxt, p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13" (assignment_expression "pOVar5 = (Output_segment *)p_Var2[1]._M_nxt" identifier = (cast_expression "(Output_segment *)p_Var2[1]._M_nxt" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var2[1]._M_nxt" (subscript_expression "p_Var2[1]" identifier [ number_literal ]) . field_identifier))) , (comma_expression "p_Var9 = p_Var10, p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13" (assignment_expression "p_Var9 = p_Var10" identifier = identifier) , (comma_expression "p_Var10 = p_Var2,\n             __bkt != (ulong)pOVar5 % uVar13" (assignment_expression "p_Var10 = p_Var2" identifier = identifier) , (binary_expression "__bkt != (ulong)pOVar5 % uVar13" identifier != (binary_expression "(ulong)pOVar5 % uVar13" (cast_expression "(ulong)pOVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier))))) ))) )) (goto_statement "goto LAB_00219710;" goto statement_identifier ;)) })) (expression_statement "_Var4._M_cur = (__node_type *)p_Var9->_M_nxt;" (assignment_expression "_Var4._M_cur = (__node_type *)p_Var9->_M_nxt" (field_expression "_Var4._M_cur" identifier . field_identifier) = (cast_expression "(__node_type *)p_Var9->_M_nxt" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var9->_M_nxt" identifier -> field_identifier))) ;) (if_statement "if (_Var4._M_cur != (__node_type *)0x0) goto LAB_002196e0;" if (parenthesized_expression "(_Var4._M_cur != (__node_type *)0x0)" ( (binary_expression "_Var4._M_cur != (__node_type *)0x0" (field_expression "_Var4._M_cur" identifier . field_identifier) != (cast_expression "(__node_type *)0x0" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_002196e0;" goto statement_identifier ;)) })) (labeled_statement "LAB_00219710:\n      __node = (__node_type *)operator_new(0x18);" statement_identifier : (expression_statement "__node = (__node_type *)operator_new(0x18);" (assignment_expression "__node = (__node_type *)operator_new(0x18)" identifier = (cast_expression "(__node_type *)operator_new(0x18)" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;)) (expression_statement "(__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0;" (assignment_expression "(__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt = (_Hash_node_base *)0x0" (field_expression "(__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base._M_nxt" (field_expression "(__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      ).super__Hash_node_base" (parenthesized_expression "(__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n      )" ( (comma_expression "__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold" (binary_expression "__node->\n      super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const" (binary_expression "__node->\n      super__Hash_node_value_base<std::pair<const_gold" (binary_expression "__node->\n      super__Hash_node_value_base<std" (field_expression "__node->\n      super__Hash_node_value_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * identifier) , identifier) (ERROR "::Output_segment*>_>" : : identifier * > identifier >) )) . field_identifier) . field_identifier) = (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code;" (assignment_expression "*(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage = __code" (pointer_expression "*(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage" * (cast_expression "(Output_segment **)\n       &(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage" ( (type_descriptor "Output_segment **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage" & (field_expression "(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage._M_storage" (field_expression "(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )._M_storage" (parenthesized_expression "(__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n        )" ( (comma_expression "__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold" (binary_expression "__node->\n        super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const" (binary_expression "__node->\n        super__Hash_node_value_base<std::pair<const_gold" (binary_expression "__node->\n        super__Hash_node_value_base<std" (field_expression "__node->\n        super__Hash_node_value_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * identifier) , identifier) (ERROR "::Output_segment*>_>" : : identifier * > identifier >) )) . field_identifier) . field_identifier)))) = identifier) ;) (expression_statement "*(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0;" (assignment_expression "*(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = 0" (pointer_expression "*(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8)" * (cast_expression "(undefined8 *)\n       ((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8)" ( (binary_expression "(long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8" (cast_expression "(long)&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage" & (field_expression "(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage" (field_expression "(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage" (parenthesized_expression "(__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )" ( (comma_expression "__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold" (binary_expression "__node->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const" (binary_expression "__node->\n               super__Hash_node_value_base<std::pair<const_gold" (binary_expression "__node->\n               super__Hash_node_value_base<std" (field_expression "__node->\n               super__Hash_node_value_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * identifier) , identifier) (ERROR "::Output_segment*>_>" : : identifier * > identifier >) )) . field_identifier) . field_identifier))) + number_literal) )))) = number_literal) ;) (ERROR "_Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::" (comma_expression "_Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold" (binary_expression "_Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const" (binary_expression "_Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std::pair<const_gold" (binary_expression "_Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold::Output_segment*,_std" (binary_expression "_Var4._M_cur = (__node_type *)\n                     std::\n                     _Hashtable<const_gold" (assignment_expression "_Var4._M_cur = (__node_type *)\n                     std" (field_expression "_Var4._M_cur" identifier . field_identifier) = (cast_expression "(__node_type *)\n                     std" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) (ERROR "::\n                     _Hashtable" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * identifier) , identifier) : : identifier * > , identifier : : identifier < identifier : : identifier < identifier : :) (declaration "Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states,__bkt,(__hash_code)__code,__node,1);" type_identifier (pointer_declarator "*_const" * identifier) , (ERROR "_const_gold::Output_segment*>" identifier : : identifier * >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::equal_to<const_gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::hash<const_gold::" identifier : : identifier < identifier : :) identifier (ERROR "*>" * >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier (ERROR "<false" < false) , identifier , (ERROR "_true>_>\n                     ::_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states," identifier > identifier > : : (function_declarator "_M_insert_unique_node\n                               ((_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)segment_states" identifier (ERROR "(" () (parameter_list "(_Hashtable<const_gold::Output_segment*,_std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>,_std::allocator<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>,_std::__detail::_Select1st,_std::equal_to<const_gold::Output_segment*>,_std::hash<const_gold::Output_segment*>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n                                 *)" ( (parameter_declaration "_Hashtable<const_gold::Output_segment*" type_identifier (ERROR "<const_gold::Output_segment" < identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::pair<const_gold::Output_segment*_const" type_identifier (ERROR "::pair<const_gold::Output_segment" : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_const_gold::Output_segment" type_identifier (ERROR "::" : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::allocator<std::pair<const_gold::Output_segment*_const" type_identifier (ERROR "::allocator<std::pair<const_gold::Output_segment" : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "*_const" * identifier)) , (parameter_declaration "_const_gold::Output_segment*>_" type_identifier (ERROR "::Output_segment*>" : : identifier * >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::equal_to<const_gold::Output_segment" type_identifier (ERROR "::equal_to<const_gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::hash<const_gold::Output_segment" type_identifier (ERROR "::hash<const_gold::" : : identifier < identifier : :) identifier) (ERROR "*>" * >) , (parameter_declaration "_std::__detail::_Mod_range_hashing" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Default_ranged_hash" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Prime_rehash_policy" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Hashtable_traits" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) (ERROR "<false" < false) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_true>_>\n                                 *" type_identifier (ERROR ">_>" > identifier >) (abstract_pointer_declarator "*" *)) )) identifier) ,) identifier , (parenthesized_declarator "(__hash_code)" ( identifier )) (ERROR "__code" identifier) , identifier (ERROR ",1)" , number_literal )) ;) (labeled_statement "LAB_002196e0:\n      *(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;" statement_identifier : (expression_statement "*(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3;" (assignment_expression "*(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8) = puVar3" (pointer_expression "*(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8)" * (cast_expression "(undefined8 **)\n       ((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8)" ( (binary_expression "(long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage + 8" (cast_expression "(long)&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage" & (field_expression "((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage._M_storage" (field_expression "((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )._M_storage" (parenthesized_expression "((_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold::Output_segment*>_>\n               )" ( (comma_expression "(_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const,_const_gold" (binary_expression "(_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold::Output_segment*_const" (binary_expression "(_Var4._M_cur)->\n               super__Hash_node_value_base<std::pair<const_gold" (binary_expression "(_Var4._M_cur)->\n               super__Hash_node_value_base<std" (field_expression "(_Var4._M_cur)->\n               super__Hash_node_value_base" (parenthesized_expression "(_Var4._M_cur)" ( (field_expression "_Var4._M_cur" identifier . field_identifier) )) -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * identifier) , identifier) (ERROR "::Output_segment*>_>" : : identifier * > identifier >) )) . field_identifier) . field_identifier))) + number_literal) )))) = identifier) ;)) (expression_statement "ppOVar14 = ppOVar14 + 1;" (assignment_expression "ppOVar14 = ppOVar14 + 1" identifier = (binary_expression "ppOVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish != ppOVar14)" ( (binary_expression "(this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish != ppOVar14" (field_expression "(this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl._M_finish" (field_expression "(this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>.\n             _M_impl" (binary_expression "(this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "(this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold" (binary_expression "(this->segment_list_).\n             super__Vector_base<gold::Output_segment*,_std" (binary_expression "(this->segment_list_).\n             super__Vector_base<gold" (field_expression "(this->segment_list_).\n             super__Vector_base" (parenthesized_expression "(this->segment_list_)" ( (field_expression "this->segment_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002194b0(long param_1,long *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long *plVar3;\n  void *__src;\n  ulong uVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  void *__dest;\n  undefined8 *puVar7;\n  long *plVar8;\n  byte bVar9;\n  byte bVar10;\n  ulong uVar11;\n  long *plVar12;\n  long *plVar13;\n  undefined8 in_R9;\n  undefined8 *puVar14;\n  size_t __n;\n  long lVar15;\n  ulong *puVar16;\n  long lVar17;\n  \n  puVar16 = *(ulong **)(param_1 + 0x230);\n  if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }\n  return;\n}\n\n" (function_definition "void FUN_002194b0(long param_1,long *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long *plVar3;\n  void *__src;\n  ulong uVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  void *__dest;\n  undefined8 *puVar7;\n  long *plVar8;\n  byte bVar9;\n  byte bVar10;\n  ulong uVar11;\n  long *plVar12;\n  long *plVar13;\n  undefined8 in_R9;\n  undefined8 *puVar14;\n  size_t __n;\n  long lVar15;\n  ulong *puVar16;\n  long lVar17;\n  \n  puVar16 = *(ulong **)(param_1 + 0x230);\n  if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002194b0(long param_1,long *param_2)" identifier (parameter_list "(long param_1,long *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  long *plVar3;\n  void *__src;\n  ulong uVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  void *__dest;\n  undefined8 *puVar7;\n  long *plVar8;\n  byte bVar9;\n  byte bVar10;\n  ulong uVar11;\n  long *plVar12;\n  long *plVar13;\n  undefined8 in_R9;\n  undefined8 *puVar14;\n  size_t __n;\n  long lVar15;\n  ulong *puVar16;\n  long lVar17;\n  \n  puVar16 = *(ulong **)(param_1 + 0x230);\n  if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "long *plVar13;" (sized_type_specifier "long" long) (pointer_declarator "*plVar13" * identifier) ;) (declaration "undefined8 in_R9;" type_identifier identifier ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (expression_statement "puVar16 = *(ulong **)(param_1 + 0x230);" (assignment_expression "puVar16 = *(ulong **)(param_1 + 0x230)" identifier = (pointer_expression "*(ulong **)(param_1 + 0x230)" * (cast_expression "(ulong **)(param_1 + 0x230)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (if_statement "if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }" if (parenthesized_expression "(puVar16 != *(ulong **)(param_1 + 0x238))" ( (binary_expression "puVar16 != *(ulong **)(param_1 + 0x238)" identifier != (pointer_expression "*(ulong **)(param_1 + 0x238)" * (cast_expression "(ulong **)(param_1 + 0x238)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }" { (do_statement "do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);" do (compound_statement "{\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    }" { (expression_statement "plVar3 = (long *)*puVar16;" (assignment_expression "plVar3 = (long *)*puVar16" identifier = (cast_expression "(long *)*puVar16" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (expression_statement "puVar6 = (undefined8 *)FUN_00337280(0x300);" (assignment_expression "puVar6 = (undefined8 *)FUN_00337280(0x300)" identifier = (cast_expression "(undefined8 *)FUN_00337280(0x300)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337280(0x300)" identifier (argument_list "(0x300)" ( number_literal ))))) ;) (expression_statement "lVar17 = 0x1c;" (assignment_expression "lVar17 = 0x1c" identifier = number_literal) ;) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" identifier = identifier) ;) (expression_statement "plVar12 = plVar3;" (assignment_expression "plVar12 = plVar3" identifier = identifier) ;) (do_statement "do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);" do (compound_statement "{\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      }" { (expression_statement "lVar15 = plVar12[1] - *plVar12;" (assignment_expression "lVar15 = plVar12[1] - *plVar12" identifier = (binary_expression "plVar12[1] - *plVar12" (subscript_expression "plVar12[1]" identifier [ number_literal ]) - (pointer_expression "*plVar12" * identifier))) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }" if (parenthesized_expression "(lVar15 >> 3 == 0)" ( (binary_expression "lVar15 >> 3 == 0" (binary_expression "lVar15 >> 3" identifier >> number_literal) == number_literal) )) (compound_statement "{\n          __dest = (void *)0x0;\n        }" { (expression_statement "__dest = (void *)0x0;" (assignment_expression "__dest = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }" else (compound_statement "{\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }" { (if_statement "if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }" if (parenthesized_expression "(0x1fffffffffffffff < (ulong)(lVar15 >> 3))" ( (binary_expression "0x1fffffffffffffff < (ulong)(lVar15 >> 3)" number_literal < (call_expression "(ulong)(lVar15 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar15 >> 3)" ( (binary_expression "lVar15 >> 3" identifier >> number_literal) )))) )) (compound_statement "{\n                    \n                    \n            FUN_00377200();\n          }" { (expression_statement "FUN_00377200();" (call_expression "FUN_00377200()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "__dest = (void *)FUN_00337280(lVar15);" (assignment_expression "__dest = (void *)FUN_00337280(lVar15)" identifier = (cast_expression "(void *)FUN_00337280(lVar15)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337280(lVar15)" identifier (argument_list "(lVar15)" ( identifier ))))) ;) }))) (expression_statement "*puVar7 = __dest;" (assignment_expression "*puVar7 = __dest" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "puVar7[2] = lVar15 + (long)__dest;" (assignment_expression "puVar7[2] = lVar15 + (long)__dest" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (binary_expression "lVar15 + (long)__dest" identifier + (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "puVar7[1] = __dest;" (assignment_expression "puVar7[1] = __dest" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__src = (void *)*plVar12;" (assignment_expression "__src = (void *)*plVar12" identifier = (cast_expression "(void *)*plVar12" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (expression_statement "__n = plVar12[1] - (long)__src;" (assignment_expression "__n = plVar12[1] - (long)__src" identifier = (binary_expression "plVar12[1] - (long)__src" (subscript_expression "plVar12[1]" identifier [ number_literal ]) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }" if (parenthesized_expression "((void *)plVar12[1] != __src)" ( (binary_expression "(void *)plVar12[1] != __src" (cast_expression "(void *)plVar12[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[1]" identifier [ number_literal ])) != identifier) )) (compound_statement "{\n          __dest = memmove(__dest,__src,__n);\n        }" { (expression_statement "__dest = memmove(__dest,__src,__n);" (assignment_expression "__dest = memmove(__dest,__src,__n)" identifier = (call_expression "memmove(__dest,__src,__n)" identifier (argument_list "(__dest,__src,__n)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "lVar17 = lVar17 + -1;" (assignment_expression "lVar17 = lVar17 + -1" identifier = (binary_expression "lVar17 + -1" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar7 + 3;" (assignment_expression "puVar14 = puVar7 + 3" identifier = (binary_expression "puVar7 + 3" identifier + number_literal)) ;) (expression_statement "plVar12 = plVar12 + 3;" (assignment_expression "plVar12 = plVar12 + 3" identifier = (binary_expression "plVar12 + 3" identifier + number_literal)) ;) (expression_statement "puVar7[1] = (long)__dest + __n;" (assignment_expression "puVar7[1] = (long)__dest + __n" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "puVar7 = puVar14;" (assignment_expression "puVar7 = puVar14" identifier = identifier) ;) }) while (parenthesized_expression "(puVar14 != puVar6 + 0x57)" ( (binary_expression "puVar14 != puVar6 + 0x57" identifier != (binary_expression "puVar6 + 0x57" identifier + number_literal)) )) ;) (expression_statement "bVar9 = *(byte *)(plVar3 + 0x5f);" (assignment_expression "bVar9 = *(byte *)(plVar3 + 0x5f)" identifier = (pointer_expression "*(byte *)(plVar3 + 0x5f)" * (cast_expression "(byte *)(plVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x5f)" ( (binary_expression "plVar3 + 0x5f" identifier + number_literal) ))))) ;) (expression_statement "puVar6[0x57] = plVar3[0x57];" (assignment_expression "puVar6[0x57] = plVar3[0x57]" (subscript_expression "puVar6[0x57]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x57]" identifier [ number_literal ])) ;) (expression_statement "bVar9 = bVar9 & 1;" (assignment_expression "bVar9 = bVar9 & 1" identifier = (binary_expression "bVar9 & 1" identifier & number_literal)) ;) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x58] = plVar3[0x58];" (assignment_expression "puVar6[0x58] = plVar3[0x58]" (subscript_expression "puVar6[0x58]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x58]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x59] = plVar3[0x59];" (assignment_expression "puVar6[0x59] = plVar3[0x59]" (subscript_expression "puVar6[0x59]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x59]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x5a] = plVar3[0x5a];" (assignment_expression "puVar6[0x5a] = plVar3[0x5a]" (subscript_expression "puVar6[0x5a]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x5a]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x5b] = plVar3[0x5b];" (assignment_expression "puVar6[0x5b] = plVar3[0x5b]" (subscript_expression "puVar6[0x5b]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x5b]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x5c] = plVar3[0x5c];" (assignment_expression "puVar6[0x5c] = plVar3[0x5c]" (subscript_expression "puVar6[0x5c]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x5c]" identifier [ number_literal ])) ;) (expression_statement "puVar6[0x5d] = plVar3[0x5d];" (assignment_expression "puVar6[0x5d] = plVar3[0x5d]" (subscript_expression "puVar6[0x5d]" identifier [ number_literal ]) = (subscript_expression "plVar3[0x5d]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];" (assignment_expression "*(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e]" (pointer_expression "*(int *)(puVar6 + 0x5e)" * (cast_expression "(int *)(puVar6 + 0x5e)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5e)" ( (binary_expression "puVar6 + 0x5e" identifier + number_literal) )))) = (cast_expression "(int)plVar3[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar3[0x5e]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);" (assignment_expression "*(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4)" (pointer_expression "*(undefined4 *)((long)puVar6 + 0x2f4)" * (cast_expression "(undefined4 *)((long)puVar6 + 0x2f4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 0x2f4)" ( (binary_expression "(long)puVar6 + 0x2f4" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((long)plVar3 + 0x2f4)" * (cast_expression "(undefined4 *)((long)plVar3 + 0x2f4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar3 + 0x2f4)" ( (binary_expression "(long)plVar3 + 0x2f4" (cast_expression "(long)plVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "bVar1 = *(byte *)(puVar6 + 0x5f);" (assignment_expression "bVar1 = *(byte *)(puVar6 + 0x5f)" identifier = (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9" (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xfe | bVar9" (binary_expression "bVar1 & 0xfe" identifier & number_literal) | identifier)) ;) (expression_statement "bVar10 = *(byte *)(plVar3 + 0x5f) & 2;" (assignment_expression "bVar10 = *(byte *)(plVar3 + 0x5f) & 2" identifier = (binary_expression "*(byte *)(plVar3 + 0x5f) & 2" (pointer_expression "*(byte *)(plVar3 + 0x5f)" * (cast_expression "(byte *)(plVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x5f)" ( (binary_expression "plVar3 + 0x5f" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10" (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xfc | bVar9 | bVar10" (binary_expression "bVar1 & 0xfc | bVar9" (binary_expression "bVar1 & 0xfc" identifier & number_literal) | identifier) | identifier)) ;) (expression_statement "bVar2 = *(byte *)(plVar3 + 0x5f);" (assignment_expression "bVar2 = *(byte *)(plVar3 + 0x5f)" identifier = (pointer_expression "*(byte *)(plVar3 + 0x5f)" * (cast_expression "(byte *)(plVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x5f)" ( (binary_expression "plVar3 + 0x5f" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4" (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4" (binary_expression "bVar1 & 0xf8 | bVar9 | bVar10" (binary_expression "bVar1 & 0xf8 | bVar9" (binary_expression "bVar1 & 0xf8" identifier & number_literal) | identifier) | identifier) | (binary_expression "bVar2 & 4" identifier & number_literal))) ;) (expression_statement "*(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;" (assignment_expression "*(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8" (pointer_expression "*(byte *)(puVar6 + 0x5f)" * (cast_expression "(byte *)(puVar6 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x5f)" ( (binary_expression "puVar6 + 0x5f" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8" (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4" (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10" (binary_expression "bVar1 & 0xf0 | bVar9" (binary_expression "bVar1 & 0xf0" identifier & number_literal) | identifier) | identifier) | (binary_expression "bVar2 & 4" identifier & number_literal)) | (binary_expression "*(byte *)(plVar3 + 0x5f) & 8" (pointer_expression "*(byte *)(plVar3 + 0x5f)" * (cast_expression "(byte *)(plVar3 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar3 + 0x5f)" ( (binary_expression "plVar3 + 0x5f" identifier + number_literal) )))) & number_literal))) ;) (expression_statement "uVar11 = (ulong)plVar3 % uVar4;" (assignment_expression "uVar11 = (ulong)plVar3 % uVar4" identifier = (binary_expression "(ulong)plVar3 % uVar4" (cast_expression "(ulong)plVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) ;) (expression_statement "plVar12 = *(long **)(*param_2 + uVar11 * 8);" (assignment_expression "plVar12 = *(long **)(*param_2 + uVar11 * 8)" identifier = (pointer_expression "*(long **)(*param_2 + uVar11 * 8)" * (cast_expression "(long **)(*param_2 + uVar11 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + uVar11 * 8)" ( (binary_expression "*param_2 + uVar11 * 8" (pointer_expression "*param_2" * identifier) + (binary_expression "uVar11 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }" if (parenthesized_expression "(plVar12 != (long *)0x0)" ( (binary_expression "plVar12 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }" { (expression_statement "plVar8 = (long *)((long *)*plVar12)[1];" (assignment_expression "plVar8 = (long *)((long *)*plVar12)[1]" identifier = (cast_expression "(long *)((long *)*plVar12)[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "((long *)*plVar12)[1]" (parenthesized_expression "((long *)*plVar12)" ( (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier)) )) [ number_literal ]))) ;) (expression_statement "plVar13 = (long *)*plVar12;" (assignment_expression "plVar13 = (long *)*plVar12" identifier = (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (while_statement "while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }" while (parenthesized_expression "(plVar3 != plVar8)" ( (binary_expression "plVar3 != plVar8" identifier != identifier) )) (compound_statement "{\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }" { (expression_statement "plVar5 = (long *)*plVar13;" (assignment_expression "plVar5 = (long *)*plVar13" identifier = (cast_expression "(long *)*plVar13" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar13" * identifier))) ;) (if_statement "if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;" if (parenthesized_expression "((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4))" ( (binary_expression "(plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)" (parenthesized_expression "(plVar5 == (long *)0x0)" ( (binary_expression "plVar5 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)" ( (comma_expression "plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar8 = (long *)plVar5[1]" identifier = (cast_expression "(long *)plVar5[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar5[1]" identifier [ number_literal ]))) , (comma_expression "plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar12 = plVar13" identifier = identifier) , (comma_expression "plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar13 = plVar5" identifier = identifier) , (binary_expression "uVar11 != (ulong)plVar8 % uVar4" identifier != (binary_expression "(ulong)plVar8 % uVar4" (cast_expression "(ulong)plVar8" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier))))) ))) )) (goto_statement "goto LAB_00219710;" goto statement_identifier ;)) })) (expression_statement "lVar15 = *plVar12;" (assignment_expression "lVar15 = *plVar12" identifier = (pointer_expression "*plVar12" * identifier)) ;) (if_statement "if (lVar15 != 0) goto LAB_002196e0;" if (parenthesized_expression "(lVar15 != 0)" ( (binary_expression "lVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_002196e0;" goto statement_identifier ;)) })) (labeled_statement "LAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);" statement_identifier : (expression_statement "puVar7 = (undefined8 *)FUN_00337280(0x18);" (assignment_expression "puVar7 = (undefined8 *)FUN_00337280(0x18)" identifier = (cast_expression "(undefined8 *)FUN_00337280(0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337280(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;)) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7[1] = plVar3;" (assignment_expression "puVar7[1] = plVar3" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);" (assignment_expression "lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" identifier = (call_expression "FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" identifier (argument_list "(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" ( identifier , identifier , identifier , identifier , number_literal , identifier , identifier )))) ;) (labeled_statement "LAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;" statement_identifier : (expression_statement "*(undefined8 **)(lVar15 + 0x10) = puVar6;" (assignment_expression "*(undefined8 **)(lVar15 + 0x10) = puVar6" (pointer_expression "*(undefined8 **)(lVar15 + 0x10)" * (cast_expression "(undefined8 **)(lVar15 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar15 + 0x10)" ( (binary_expression "lVar15 + 0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(ulong **)(param_1 + 0x238) != puVar16)" ( (binary_expression "*(ulong **)(param_1 + 0x238) != puVar16" (pointer_expression "*(ulong **)(param_1 + 0x238)" * (cast_expression "(ulong **)(param_1 + 0x238)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) )) (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 ( IDENT ))))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT & LIT) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (binary_expression IDENT & LIT) | IDENT) | IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT & LIT) | IDENT) | IDENT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT & LIT) | IDENT) | IDENT) | (binary_expression IDENT & LIT)) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * 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 = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (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 (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % IDENT))))) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , IDENT , IDENT )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_002194b0(long param_1,long *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long *plVar3;\n  void *__src;\n  ulong uVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  void *__dest;\n  undefined8 *puVar7;\n  long *plVar8;\n  byte bVar9;\n  byte bVar10;\n  ulong uVar11;\n  long *plVar12;\n  long *plVar13;\n  undefined8 in_R9;\n  undefined8 *puVar14;\n  size_t __n;\n  long lVar15;\n  ulong *puVar16;\n  long lVar17;\n  \n  puVar16 = *(ulong **)(param_1 + 0x230);\n  if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002194b0(long param_1,long *param_2)" (identifier "FUN_002194b0") (parameter_list "(long param_1,long *param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  long *plVar3;\n  void *__src;\n  ulong uVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  void *__dest;\n  undefined8 *puVar7;\n  long *plVar8;\n  byte bVar9;\n  byte bVar10;\n  ulong uVar11;\n  long *plVar12;\n  long *plVar13;\n  undefined8 in_R9;\n  undefined8 *puVar14;\n  size_t __n;\n  long lVar15;\n  ulong *puVar16;\n  long lVar17;\n  \n  puVar16 = *(ulong **)(param_1 + 0x230);\n  if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "void *__src;" (primitive_type "void") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "long *plVar12;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar12" (* "*") (identifier "plVar12")) (; ";")) (declaration "long *plVar13;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar13" (* "*") (identifier "plVar13")) (; ";")) (declaration "undefined8 in_R9;" (type_identifier "undefined8") (identifier "in_R9") (; ";")) (declaration "undefined8 *puVar14;" (type_identifier "undefined8") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "long lVar15;" (sized_type_specifier "long" (long "long")) (identifier "lVar15") (; ";")) (declaration "ulong *puVar16;" (type_identifier "ulong") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "long lVar17;" (sized_type_specifier "long" (long "long")) (identifier "lVar17") (; ";")) (expression_statement "puVar16 = *(ulong **)(param_1 + 0x230);" (assignment_expression "puVar16 = *(ulong **)(param_1 + 0x230)" (identifier "puVar16") (= "=") (pointer_expression "*(ulong **)(param_1 + 0x230)" (* "*") (cast_expression "(ulong **)(param_1 + 0x230)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (if_statement "if (puVar16 != *(ulong **)(param_1 + 0x238)) {\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }" (if "if") (parenthesized_expression "(puVar16 != *(ulong **)(param_1 + 0x238))" (( "(") (binary_expression "puVar16 != *(ulong **)(param_1 + 0x238)" (identifier "puVar16") (!= "!=") (pointer_expression "*(ulong **)(param_1 + 0x238)" (* "*") (cast_expression "(ulong **)(param_1 + 0x238)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);\n  }" ({ "{") (do_statement "do {\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    } while (*(ulong **)(param_1 + 0x238) != puVar16);" (do "do") (compound_statement "{\n      plVar3 = (long *)*puVar16;\n      puVar6 = (undefined8 *)FUN_00337280(0x300);\n      lVar17 = 0x1c;\n      puVar7 = puVar6;\n      plVar12 = plVar3;\n      do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);\n      bVar9 = *(byte *)(plVar3 + 0x5f);\n      puVar6[0x57] = plVar3[0x57];\n      bVar9 = bVar9 & 1;\n      uVar4 = param_2[1];\n      puVar6[0x58] = plVar3[0x58];\n      puVar6[0x59] = plVar3[0x59];\n      puVar6[0x5a] = plVar3[0x5a];\n      puVar6[0x5b] = plVar3[0x5b];\n      puVar6[0x5c] = plVar3[0x5c];\n      puVar6[0x5d] = plVar3[0x5d];\n      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];\n      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);\n      bVar1 = *(byte *)(puVar6 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;\n      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;\n      bVar2 = *(byte *)(plVar3 + 0x5f);\n      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;\n      *(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;\n      uVar11 = (ulong)plVar3 % uVar4;\n      plVar12 = *(long **)(*param_2 + uVar11 * 8);\n      if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }\nLAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);\n      *puVar7 = 0;\n      puVar7[1] = plVar3;\n      puVar7[2] = 0;\n      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);\nLAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;\n      puVar16 = puVar16 + 1;\n    }" ({ "{") (expression_statement "plVar3 = (long *)*puVar16;" (assignment_expression "plVar3 = (long *)*puVar16" (identifier "plVar3") (= "=") (cast_expression "(long *)*puVar16" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";")) (expression_statement "puVar6 = (undefined8 *)FUN_00337280(0x300);" (assignment_expression "puVar6 = (undefined8 *)FUN_00337280(0x300)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)FUN_00337280(0x300)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337280(0x300)" (identifier "FUN_00337280") (argument_list "(0x300)" (( "(") (number_literal "0x300") () ")"))))) (; ";")) (expression_statement "lVar17 = 0x1c;" (assignment_expression "lVar17 = 0x1c" (identifier "lVar17") (= "=") (number_literal "0x1c")) (; ";")) (expression_statement "puVar7 = puVar6;" (assignment_expression "puVar7 = puVar6" (identifier "puVar7") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "plVar12 = plVar3;" (assignment_expression "plVar12 = plVar3" (identifier "plVar12") (= "=") (identifier "plVar3")) (; ";")) (do_statement "do {\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      } while (puVar14 != puVar6 + 0x57);" (do "do") (compound_statement "{\n        lVar15 = plVar12[1] - *plVar12;\n        *puVar7 = 0;\n        puVar7[1] = 0;\n        puVar7[2] = 0;\n        if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }\n        *puVar7 = __dest;\n        puVar7[2] = lVar15 + (long)__dest;\n        puVar7[1] = __dest;\n        __src = (void *)*plVar12;\n        __n = plVar12[1] - (long)__src;\n        if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }\n        lVar17 = lVar17 + -1;\n        puVar14 = puVar7 + 3;\n        plVar12 = plVar12 + 3;\n        puVar7[1] = (long)__dest + __n;\n        puVar7 = puVar14;\n      }" ({ "{") (expression_statement "lVar15 = plVar12[1] - *plVar12;" (assignment_expression "lVar15 = plVar12[1] - *plVar12" (identifier "lVar15") (= "=") (binary_expression "plVar12[1] - *plVar12" (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*plVar12" (* "*") (identifier "plVar12")))) (; ";")) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar15 >> 3 == 0) {\n          __dest = (void *)0x0;\n        }\n        else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }" (if "if") (parenthesized_expression "(lVar15 >> 3 == 0)" (( "(") (binary_expression "lVar15 >> 3 == 0" (binary_expression "lVar15 >> 3" (identifier "lVar15") (>> ">>") (number_literal "3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          __dest = (void *)0x0;\n        }" ({ "{") (expression_statement "__dest = (void *)0x0;" (assignment_expression "__dest = (void *)0x0" (identifier "__dest") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }" (else "else") (compound_statement "{\n          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }\n                    \n          __dest = (void *)FUN_00337280(lVar15);\n        }" ({ "{") (if_statement "if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {\n                    \n                    \n            FUN_00377200();\n          }" (if "if") (parenthesized_expression "(0x1fffffffffffffff < (ulong)(lVar15 >> 3))" (( "(") (binary_expression "0x1fffffffffffffff < (ulong)(lVar15 >> 3)" (number_literal "0x1fffffffffffffff") (< "<") (call_expression "(ulong)(lVar15 >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(lVar15 >> 3)" (( "(") (binary_expression "lVar15 >> 3" (identifier "lVar15") (>> ">>") (number_literal "3")) () ")")))) () ")")) (compound_statement "{\n                    \n                    \n            FUN_00377200();\n          }" ({ "{") (expression_statement "FUN_00377200();" (call_expression "FUN_00377200()" (identifier "FUN_00377200") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "__dest = (void *)FUN_00337280(lVar15);" (assignment_expression "__dest = (void *)FUN_00337280(lVar15)" (identifier "__dest") (= "=") (cast_expression "(void *)FUN_00337280(lVar15)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337280(lVar15)" (identifier "FUN_00337280") (argument_list "(lVar15)" (( "(") (identifier "lVar15") () ")"))))) (; ";")) (} "}")))) (expression_statement "*puVar7 = __dest;" (assignment_expression "*puVar7 = __dest" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (identifier "__dest")) (; ";")) (expression_statement "puVar7[2] = lVar15 + (long)__dest;" (assignment_expression "puVar7[2] = lVar15 + (long)__dest" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "lVar15 + (long)__dest" (identifier "lVar15") (+ "+") (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")))) (; ";")) (expression_statement "puVar7[1] = __dest;" (assignment_expression "puVar7[1] = __dest" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "__dest")) (; ";")) (expression_statement "__src = (void *)*plVar12;" (assignment_expression "__src = (void *)*plVar12" (identifier "__src") (= "=") (cast_expression "(void *)*plVar12" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar12" (* "*") (identifier "plVar12")))) (; ";")) (expression_statement "__n = plVar12[1] - (long)__src;" (assignment_expression "__n = plVar12[1] - (long)__src" (identifier "__n") (= "=") (binary_expression "plVar12[1] - (long)__src" (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]")) (- "-") (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src")))) (; ";")) (if_statement "if ((void *)plVar12[1] != __src) {\n          __dest = memmove(__dest,__src,__n);\n        }" (if "if") (parenthesized_expression "((void *)plVar12[1] != __src)" (( "(") (binary_expression "(void *)plVar12[1] != __src" (cast_expression "(void *)plVar12[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "__src")) () ")")) (compound_statement "{\n          __dest = memmove(__dest,__src,__n);\n        }" ({ "{") (expression_statement "__dest = memmove(__dest,__src,__n);" (assignment_expression "__dest = memmove(__dest,__src,__n)" (identifier "__dest") (= "=") (call_expression "memmove(__dest,__src,__n)" (identifier "memmove") (argument_list "(__dest,__src,__n)" (( "(") (identifier "__dest") (, ",") (identifier "__src") (, ",") (identifier "__n") () ")")))) (; ";")) (} "}"))) (expression_statement "lVar17 = lVar17 + -1;" (assignment_expression "lVar17 = lVar17 + -1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + -1" (identifier "lVar17") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar14 = puVar7 + 3;" (assignment_expression "puVar14 = puVar7 + 3" (identifier "puVar14") (= "=") (binary_expression "puVar7 + 3" (identifier "puVar7") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "plVar12 = plVar12 + 3;" (assignment_expression "plVar12 = plVar12 + 3" (identifier "plVar12") (= "=") (binary_expression "plVar12 + 3" (identifier "plVar12") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar7[1] = (long)__dest + __n;" (assignment_expression "puVar7[1] = (long)__dest + __n" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (identifier "__n"))) (; ";")) (expression_statement "puVar7 = puVar14;" (assignment_expression "puVar7 = puVar14" (identifier "puVar7") (= "=") (identifier "puVar14")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar14 != puVar6 + 0x57)" (( "(") (binary_expression "puVar14 != puVar6 + 0x57" (identifier "puVar14") (!= "!=") (binary_expression "puVar6 + 0x57" (identifier "puVar6") (+ "+") (number_literal "0x57"))) () ")")) (; ";")) (expression_statement "bVar9 = *(byte *)(plVar3 + 0x5f);" (assignment_expression "bVar9 = *(byte *)(plVar3 + 0x5f)" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)(plVar3 + 0x5f)" (* "*") (cast_expression "(byte *)(plVar3 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 0x5f)" (( "(") (binary_expression "plVar3 + 0x5f" (identifier "plVar3") (+ "+") (number_literal "0x5f")) () ")"))))) (; ";")) (expression_statement "puVar6[0x57] = plVar3[0x57];" (assignment_expression "puVar6[0x57] = plVar3[0x57]" (subscript_expression "puVar6[0x57]" (identifier "puVar6") ([ "[") (number_literal "0x57") (] "]")) (= "=") (subscript_expression "plVar3[0x57]" (identifier "plVar3") ([ "[") (number_literal "0x57") (] "]"))) (; ";")) (expression_statement "bVar9 = bVar9 & 1;" (assignment_expression "bVar9 = bVar9 & 1" (identifier "bVar9") (= "=") (binary_expression "bVar9 & 1" (identifier "bVar9") (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" (identifier "uVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar6[0x58] = plVar3[0x58];" (assignment_expression "puVar6[0x58] = plVar3[0x58]" (subscript_expression "puVar6[0x58]" (identifier "puVar6") ([ "[") (number_literal "0x58") (] "]")) (= "=") (subscript_expression "plVar3[0x58]" (identifier "plVar3") ([ "[") (number_literal "0x58") (] "]"))) (; ";")) (expression_statement "puVar6[0x59] = plVar3[0x59];" (assignment_expression "puVar6[0x59] = plVar3[0x59]" (subscript_expression "puVar6[0x59]" (identifier "puVar6") ([ "[") (number_literal "0x59") (] "]")) (= "=") (subscript_expression "plVar3[0x59]" (identifier "plVar3") ([ "[") (number_literal "0x59") (] "]"))) (; ";")) (expression_statement "puVar6[0x5a] = plVar3[0x5a];" (assignment_expression "puVar6[0x5a] = plVar3[0x5a]" (subscript_expression "puVar6[0x5a]" (identifier "puVar6") ([ "[") (number_literal "0x5a") (] "]")) (= "=") (subscript_expression "plVar3[0x5a]" (identifier "plVar3") ([ "[") (number_literal "0x5a") (] "]"))) (; ";")) (expression_statement "puVar6[0x5b] = plVar3[0x5b];" (assignment_expression "puVar6[0x5b] = plVar3[0x5b]" (subscript_expression "puVar6[0x5b]" (identifier "puVar6") ([ "[") (number_literal "0x5b") (] "]")) (= "=") (subscript_expression "plVar3[0x5b]" (identifier "plVar3") ([ "[") (number_literal "0x5b") (] "]"))) (; ";")) (expression_statement "puVar6[0x5c] = plVar3[0x5c];" (assignment_expression "puVar6[0x5c] = plVar3[0x5c]" (subscript_expression "puVar6[0x5c]" (identifier "puVar6") ([ "[") (number_literal "0x5c") (] "]")) (= "=") (subscript_expression "plVar3[0x5c]" (identifier "plVar3") ([ "[") (number_literal "0x5c") (] "]"))) (; ";")) (expression_statement "puVar6[0x5d] = plVar3[0x5d];" (assignment_expression "puVar6[0x5d] = plVar3[0x5d]" (subscript_expression "puVar6[0x5d]" (identifier "puVar6") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (subscript_expression "plVar3[0x5d]" (identifier "plVar3") ([ "[") (number_literal "0x5d") (] "]"))) (; ";")) (expression_statement "*(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];" (assignment_expression "*(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e]" (pointer_expression "*(int *)(puVar6 + 0x5e)" (* "*") (cast_expression "(int *)(puVar6 + 0x5e)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x5e)" (( "(") (binary_expression "puVar6 + 0x5e" (identifier "puVar6") (+ "+") (number_literal "0x5e")) () ")")))) (= "=") (cast_expression "(int)plVar3[0x5e]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar3[0x5e]" (identifier "plVar3") ([ "[") (number_literal "0x5e") (] "]")))) (; ";")) (expression_statement "*(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);" (assignment_expression "*(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4)" (pointer_expression "*(undefined4 *)((long)puVar6 + 0x2f4)" (* "*") (cast_expression "(undefined4 *)((long)puVar6 + 0x2f4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar6 + 0x2f4)" (( "(") (binary_expression "(long)puVar6 + 0x2f4" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (number_literal "0x2f4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((long)plVar3 + 0x2f4)" (* "*") (cast_expression "(undefined4 *)((long)plVar3 + 0x2f4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar3 + 0x2f4)" (( "(") (binary_expression "(long)plVar3 + 0x2f4" (cast_expression "(long)plVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar3")) (+ "+") (number_literal "0x2f4")) () ")"))))) (; ";")) (expression_statement "bVar1 = *(byte *)(puVar6 + 0x5f);" (assignment_expression "bVar1 = *(byte *)(puVar6 + 0x5f)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(puVar6 + 0x5f)" (* "*") (cast_expression "(byte *)(puVar6 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x5f)" (( "(") (binary_expression "puVar6 + 0x5f" (identifier "puVar6") (+ "+") (number_literal "0x5f")) () ")"))))) (; ";")) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9" (pointer_expression "*(byte *)(puVar6 + 0x5f)" (* "*") (cast_expression "(byte *)(puVar6 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x5f)" (( "(") (binary_expression "puVar6 + 0x5f" (identifier "puVar6") (+ "+") (number_literal "0x5f")) () ")")))) (= "=") (binary_expression "bVar1 & 0xfe | bVar9" (binary_expression "bVar1 & 0xfe" (identifier "bVar1") (& "&") (number_literal "0xfe")) (| "|") (identifier "bVar9"))) (; ";")) (expression_statement "bVar10 = *(byte *)(plVar3 + 0x5f) & 2;" (assignment_expression "bVar10 = *(byte *)(plVar3 + 0x5f) & 2" (identifier "bVar10") (= "=") (binary_expression "*(byte *)(plVar3 + 0x5f) & 2" (pointer_expression "*(byte *)(plVar3 + 0x5f)" (* "*") (cast_expression "(byte *)(plVar3 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 0x5f)" (( "(") (binary_expression "plVar3 + 0x5f" (identifier "plVar3") (+ "+") (number_literal "0x5f")) () ")")))) (& "&") (number_literal "2"))) (; ";")) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10" (pointer_expression "*(byte *)(puVar6 + 0x5f)" (* "*") (cast_expression "(byte *)(puVar6 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x5f)" (( "(") (binary_expression "puVar6 + 0x5f" (identifier "puVar6") (+ "+") (number_literal "0x5f")) () ")")))) (= "=") (binary_expression "bVar1 & 0xfc | bVar9 | bVar10" (binary_expression "bVar1 & 0xfc | bVar9" (binary_expression "bVar1 & 0xfc" (identifier "bVar1") (& "&") (number_literal "0xfc")) (| "|") (identifier "bVar9")) (| "|") (identifier "bVar10"))) (; ";")) (expression_statement "bVar2 = *(byte *)(plVar3 + 0x5f);" (assignment_expression "bVar2 = *(byte *)(plVar3 + 0x5f)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(plVar3 + 0x5f)" (* "*") (cast_expression "(byte *)(plVar3 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 0x5f)" (( "(") (binary_expression "plVar3 + 0x5f" (identifier "plVar3") (+ "+") (number_literal "0x5f")) () ")"))))) (; ";")) (expression_statement "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;" (assignment_expression "*(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4" (pointer_expression "*(byte *)(puVar6 + 0x5f)" (* "*") (cast_expression "(byte *)(puVar6 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x5f)" (( "(") (binary_expression "puVar6 + 0x5f" (identifier "puVar6") (+ "+") (number_literal "0x5f")) () ")")))) (= "=") (binary_expression "bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4" (binary_expression "bVar1 & 0xf8 | bVar9 | bVar10" (binary_expression "bVar1 & 0xf8 | bVar9" (binary_expression "bVar1 & 0xf8" (identifier "bVar1") (& "&") (number_literal "0xf8")) (| "|") (identifier "bVar9")) (| "|") (identifier "bVar10")) (| "|") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")))) (; ";")) (expression_statement "*(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;" (assignment_expression "*(byte *)(puVar6 + 0x5f) =\n           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8" (pointer_expression "*(byte *)(puVar6 + 0x5f)" (* "*") (cast_expression "(byte *)(puVar6 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x5f)" (( "(") (binary_expression "puVar6 + 0x5f" (identifier "puVar6") (+ "+") (number_literal "0x5f")) () ")")))) (= "=") (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8" (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4" (binary_expression "bVar1 & 0xf0 | bVar9 | bVar10" (binary_expression "bVar1 & 0xf0 | bVar9" (binary_expression "bVar1 & 0xf0" (identifier "bVar1") (& "&") (number_literal "0xf0")) (| "|") (identifier "bVar9")) (| "|") (identifier "bVar10")) (| "|") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4"))) (| "|") (binary_expression "*(byte *)(plVar3 + 0x5f) & 8" (pointer_expression "*(byte *)(plVar3 + 0x5f)" (* "*") (cast_expression "(byte *)(plVar3 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar3 + 0x5f)" (( "(") (binary_expression "plVar3 + 0x5f" (identifier "plVar3") (+ "+") (number_literal "0x5f")) () ")")))) (& "&") (number_literal "8")))) (; ";")) (expression_statement "uVar11 = (ulong)plVar3 % uVar4;" (assignment_expression "uVar11 = (ulong)plVar3 % uVar4" (identifier "uVar11") (= "=") (binary_expression "(ulong)plVar3 % uVar4" (cast_expression "(ulong)plVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "plVar3")) (% "%") (identifier "uVar4"))) (; ";")) (expression_statement "plVar12 = *(long **)(*param_2 + uVar11 * 8);" (assignment_expression "plVar12 = *(long **)(*param_2 + uVar11 * 8)" (identifier "plVar12") (= "=") (pointer_expression "*(long **)(*param_2 + uVar11 * 8)" (* "*") (cast_expression "(long **)(*param_2 + uVar11 * 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + uVar11 * 8)" (( "(") (binary_expression "*param_2 + uVar11 * 8" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (binary_expression "uVar11 * 8" (identifier "uVar11") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (plVar12 != (long *)0x0) {\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }" (if "if") (parenthesized_expression "(plVar12 != (long *)0x0)" (( "(") (binary_expression "plVar12 != (long *)0x0" (identifier "plVar12") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        plVar8 = (long *)((long *)*plVar12)[1];\n        plVar13 = (long *)*plVar12;\n        while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }\n        lVar15 = *plVar12;\n        if (lVar15 != 0) goto LAB_002196e0;\n      }" ({ "{") (expression_statement "plVar8 = (long *)((long *)*plVar12)[1];" (assignment_expression "plVar8 = (long *)((long *)*plVar12)[1]" (identifier "plVar8") (= "=") (cast_expression "(long *)((long *)*plVar12)[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "((long *)*plVar12)[1]" (parenthesized_expression "((long *)*plVar12)" (( "(") (cast_expression "(long *)*plVar12" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar12" (* "*") (identifier "plVar12"))) () ")")) ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "plVar13 = (long *)*plVar12;" (assignment_expression "plVar13 = (long *)*plVar12" (identifier "plVar13") (= "=") (cast_expression "(long *)*plVar12" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar12" (* "*") (identifier "plVar12")))) (; ";")) (while_statement "while (plVar3 != plVar8) {\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }" (while "while") (parenthesized_expression "(plVar3 != plVar8)" (( "(") (binary_expression "plVar3 != plVar8" (identifier "plVar3") (!= "!=") (identifier "plVar8")) () ")")) (compound_statement "{\n          plVar5 = (long *)*plVar13;\n          if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;\n        }" ({ "{") (expression_statement "plVar5 = (long *)*plVar13;" (assignment_expression "plVar5 = (long *)*plVar13" (identifier "plVar5") (= "=") (cast_expression "(long *)*plVar13" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar13" (* "*") (identifier "plVar13")))) (; ";")) (if_statement "if ((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;" (if "if") (parenthesized_expression "((plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4))" (( "(") (binary_expression "(plVar5 == (long *)0x0) ||\n             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)" (parenthesized_expression "(plVar5 == (long *)0x0)" (( "(") (binary_expression "plVar5 == (long *)0x0" (identifier "plVar5") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4)" (( "(") (comma_expression "plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar8 = (long *)plVar5[1]" (identifier "plVar8") (= "=") (cast_expression "(long *)plVar5[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar5[1]" (identifier "plVar5") ([ "[") (number_literal "1") (] "]")))) (, ",") (comma_expression "plVar12 = plVar13, plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar12 = plVar13" (identifier "plVar12") (= "=") (identifier "plVar13")) (, ",") (comma_expression "plVar13 = plVar5,\n             uVar11 != (ulong)plVar8 % uVar4" (assignment_expression "plVar13 = plVar5" (identifier "plVar13") (= "=") (identifier "plVar5")) (, ",") (binary_expression "uVar11 != (ulong)plVar8 % uVar4" (identifier "uVar11") (!= "!=") (binary_expression "(ulong)plVar8 % uVar4" (cast_expression "(ulong)plVar8" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "plVar8")) (% "%") (identifier "uVar4")))))) () ")"))) () ")")) (goto_statement "goto LAB_00219710;" (goto "goto") (statement_identifier "LAB_00219710") (; ";"))) (} "}"))) (expression_statement "lVar15 = *plVar12;" (assignment_expression "lVar15 = *plVar12" (identifier "lVar15") (= "=") (pointer_expression "*plVar12" (* "*") (identifier "plVar12"))) (; ";")) (if_statement "if (lVar15 != 0) goto LAB_002196e0;" (if "if") (parenthesized_expression "(lVar15 != 0)" (( "(") (binary_expression "lVar15 != 0" (identifier "lVar15") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_002196e0;" (goto "goto") (statement_identifier "LAB_002196e0") (; ";"))) (} "}"))) (labeled_statement "LAB_00219710:\n      puVar7 = (undefined8 *)FUN_00337280(0x18);" (statement_identifier "LAB_00219710") (: ":") (expression_statement "puVar7 = (undefined8 *)FUN_00337280(0x18);" (assignment_expression "puVar7 = (undefined8 *)FUN_00337280(0x18)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)FUN_00337280(0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337280(0x18)" (identifier "FUN_00337280") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";"))) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7[1] = plVar3;" (assignment_expression "puVar7[1] = plVar3" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "plVar3")) (; ";")) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);" (assignment_expression "lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" (identifier "lVar15") (= "=") (call_expression "FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" (identifier "FUN_002223f0") (argument_list "(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17)" (( "(") (identifier "param_2") (, ",") (identifier "uVar11") (, ",") (identifier "plVar3") (, ",") (identifier "puVar7") (, ",") (number_literal "1") (, ",") (identifier "in_R9") (, ",") (identifier "lVar17") () ")")))) (; ";")) (labeled_statement "LAB_002196e0:\n      *(undefined8 **)(lVar15 + 0x10) = puVar6;" (statement_identifier "LAB_002196e0") (: ":") (expression_statement "*(undefined8 **)(lVar15 + 0x10) = puVar6;" (assignment_expression "*(undefined8 **)(lVar15 + 0x10) = puVar6" (pointer_expression "*(undefined8 **)(lVar15 + 0x10)" (* "*") (cast_expression "(undefined8 **)(lVar15 + 0x10)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar15 + 0x10)" (( "(") (binary_expression "lVar15 + 0x10" (identifier "lVar15") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "puVar6")) (; ";"))) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(ulong **)(param_1 + 0x238) != puVar16)" (( "(") (binary_expression "*(ulong **)(param_1 + 0x238) != puVar16" (pointer_expression "*(ulong **)(param_1 + 0x238)" (* "*") (cast_expression "(ulong **)(param_1 + 0x238)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (!= "!=") (identifier "puVar16")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void save_segments(Layout * this, Segment_states * segment_states) */

void __thiscall var_3::type_1::function_1(type_1 *this,type_2 *segment_states)

{
  type_3 var_18;
  type_4 *var_22;
  type_5 *var_10;
  type_5 *var_11;
  type_6 *var_16;
  void *__dest;
  type_7 *__node;
  _Node_iterator_base<var_25::pair<var_26::type_4*var_27,_const_gold::type_4*>,var_1>
  var_2;
  type_4 *var_23;
  type_3 var_17;
  type_3 var_19;
  type_3 var_20;
  type_8 var_24;
  type_9 var_21;
  type_9 p_Var10;
  type_6 *var_15;
  type_6 *var_13;
  size_t var_14;
  type_8 var_9;
  type_10 var_6;
  
  var_6 = (this->segment_list_).
             super__Vector_base<var_3::type_4*,var_4::allocator<var_3::type_4*>var_5>.
             _M_impl._M_start;
  if (var_6 !=
      (this->segment_list_).
      super__Vector_base<var_3::type_4*,var_4::allocator<var_3::type_4*>var_5>._M_impl.
      _M_finish) {
    do {
      var_22 = *var_6;
      var_16 = (type_6 *)var_7(0x300);
      var_13 = var_16;
      var_23 = var_22;
      do {
        var_9 = (long)var_23->output_lists_[0].
                       super__Vector_base<var_3::Output_data*,var_4::allocator<var_3::Output_data*>var_5>.
                       _M_impl._M_finish -
                 (long)var_23->output_lists_[0].
                       super__Vector_base<var_3::Output_data*,var_4::allocator<var_3::Output_data*>var_5>.
                       _M_impl._M_start;
        *var_13 = 0;
        var_13[1] = 0;
        var_13[2] = 0;
        if ((long)var_9 >> 3 == 0) {
          __dest = (void *)0x0;
        }
        else {
          if (0x1fffffffffffffff < (type_8)((long)var_9 >> 3)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */
            std::var_8();
          }
                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */
          __dest = var_7(var_9);
        }
        *var_13 = __dest;
        var_13[2] = var_9 + (long)__dest;
        var_13[1] = __dest;
        var_10 = (type_5 *)
                 var_23->output_lists_[0].
                 super__Vector_base<var_3::Output_data*,var_4::allocator<var_3::Output_data*>var_5>._M_impl
                 ._M_finish;
        var_11 = (type_5 *)
                var_23->output_lists_[0].
                super__Vector_base<var_3::Output_data*,var_4::allocator<var_3::Output_data*>var_5>._M_impl.
                _M_start;
        var_14 = (long)var_10 - (long)var_11;
        if (var_10 != var_11) {
          __dest = var_12(__dest,var_11,var_14);
        }
        var_15 = var_13 + 3;
        var_23 = (type_4 *)(var_23->output_lists_ + 1);
        var_13[1] = (long)__dest + var_14;
        var_13 = var_15;
      } while (var_15 != var_16 + 0x57);
      var_17 = var_22->field_0x2f8;
      var_16[0x57] = var_22->vaddr_;
      var_17 = var_17 & 1;
      var_9 = (segment_states->_M_h)._M_bucket_count;
      var_16[0x58] = var_22->paddr_;
      var_16[0x59] = var_22->memsz_;
      var_16[0x5a] = var_22->max_align_;
      var_16[0x5b] = var_22->min_p_align_;
      var_16[0x5c] = var_22->offset_;
      var_16[0x5d] = var_22->filesz_;
      *(type_11 *)(var_16 + 0x5e) = var_22->type_;
      *(type_11 *)((long)var_16 + 0x2f4) = var_22->flags_;
      var_18 = *(type_3 *)(var_16 + 0x5f);
      *(type_3 *)(var_16 + 0x5f) = var_18 & 0xfe | var_17;
      var_19 = var_22->field_0x2f8 & 2;
      *(type_3 *)(var_16 + 0x5f) = var_18 & 0xfc | var_17 | var_19;
      var_20 = var_22->field_0x2f8 & 4;
      *(type_3 *)(var_16 + 0x5f) = var_18 & 0xf8 | var_17 | var_19 | var_20;
      *(type_3 *)(var_16 + 0x5f) = var_18 & 0xf0 | var_17 | var_19 | var_20 | var_22->field_0x2f8 & 8;
      var_24 = (type_8)var_22 % var_9;
      var_21 = (segment_states->_M_h)._M_buckets[var_24];
      if (var_21 != (type_9)0x0) {
        var_23 = (type_4 *)var_21->_M_nxt[1]._M_nxt;
        p_Var10 = var_21->_M_nxt;
        while (var_22 != var_23) {
          var_10 = p_Var10->_M_nxt;
          if ((var_10 == (type_5 *)0x0) ||
             (var_23 = (type_4 *)var_10[1]._M_nxt, var_21 = p_Var10, p_Var10 = var_10,
             var_24 != (type_8)var_23 % var_9)) goto LAB_00219710;
        }
        var_2._M_cur = (type_7 *)var_21->_M_nxt;
        if (var_2._M_cur != (type_7 *)0x0) goto LAB_002196e0;
      }
LAB_00219710:
      __node = (type_7 *)var_7(0x18);
      (__node->
      super__Hash_node_value_base<var_25::pair<var_26::type_4*var_27,_const_gold::type_4*>var_5>
      ).super__Hash_node_base._M_nxt = (type_5 *)0x0;
      *(type_4 **)
       &(__node->
        super__Hash_node_value_base<var_25::pair<var_26::type_4*var_27,_const_gold::type_4*>var_5>
        )._M_storage._M_storage = var_22;
      *(type_6 *)
       ((long)&(__node->
               super__Hash_node_value_base<var_25::pair<var_26::type_4*var_27,_const_gold::type_4*>var_5>
               )._M_storage._M_storage + 8) = 0;
      var_2._M_cur = (type_7 *)
                     var_25::
                     _Hashtable<var_26::type_4*,var_4::pair<var_26::type_4*var_27,_const_gold::type_4*>,var_4::allocator<var_25::pair<var_26::type_4*var_27,_const_gold::type_4*>var_5>,var_4::__detail::_Select1st,var_4::equal_to<var_26::type_4*>,var_4::hash<var_26::type_4*>,var_4::__detail::_Mod_range_hashing,var_4::__detail::_Default_ranged_hash,var_4::__detail::_Prime_rehash_policy,var_4::__detail::_Hashtable_traits<false,var_1,_true>var_5>
                     ::_M_insert_unique_node
                               ((_Hashtable<var_26::type_4*,var_4::pair<var_26::type_4*var_27,_const_gold::type_4*>,var_4::allocator<var_25::pair<var_26::type_4*var_27,_const_gold::type_4*>var_5>,var_4::__detail::_Select1st,var_4::equal_to<var_26::type_4*>,var_4::hash<var_26::type_4*>,var_4::__detail::_Mod_range_hashing,var_4::__detail::_Default_ranged_hash,var_4::__detail::_Prime_rehash_policy,var_4::__detail::_Hashtable_traits<false,var_1,_true>var_5>
                                 *)segment_states,var_24,(function_2)var_22,__node,1);
LAB_002196e0:
      *(type_6 **)
       ((long)&((var_2._M_cur)->
               super__Hash_node_value_base<var_25::pair<var_26::type_4*var_27,_const_gold::type_4*>var_5>
               )._M_storage._M_storage + 8) = var_16;
      var_6 = var_6 + 1;
    } while ((this->segment_list_).
             super__Vector_base<var_3::type_4*,var_4::allocator<var_3::type_4*>var_5>.
             _M_impl._M_finish != var_6);
  }
  return;
}


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

void MASKED(long param_1,long *param_2)

{
  byte bVar1;
  byte bVar2;
  long *plVar3;
  void *__src;
  ulong uVar4;
  long *plVar5;
  undefined8 *puVar6;
  void *__dest;
  undefined8 *puVar7;
  long *plVar8;
  byte bVar9;
  byte bVar10;
  ulong uVar11;
  long *plVar12;
  long *plVar13;
  undefined8 in_R9;
  undefined8 *puVar14;
  size_t __n;
  long lVar15;
  ulong *puVar16;
  long lVar17;
  
  puVar16 = *(ulong **)(param_1 + 0x230);
  if (puVar16 != *(ulong **)(param_1 + 0x238)) {
    do {
      plVar3 = (long *)*puVar16;
      puVar6 = (undefined8 *)FUN_00337280(0x300);
      lVar17 = 0x1c;
      puVar7 = puVar6;
      plVar12 = plVar3;
      do {
        lVar15 = plVar12[1] - *plVar12;
        *puVar7 = 0;
        puVar7[1] = 0;
        puVar7[2] = 0;
        if (lVar15 >> 3 == 0) {
          __dest = (void *)0x0;
        }
        else {
          if (0x1fffffffffffffff < (ulong)(lVar15 >> 3)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0021974c to 00219750 has its CatchHandler @ 00219751 */
            FUN_00377200();
          }
                    /* try { // try from 00219526 to 0021952a has its CatchHandler @ 00219751 */
          __dest = (void *)FUN_00337280(lVar15);
        }
        *puVar7 = __dest;
        puVar7[2] = lVar15 + (long)__dest;
        puVar7[1] = __dest;
        __src = (void *)*plVar12;
        __n = plVar12[1] - (long)__src;
        if ((void *)plVar12[1] != __src) {
          __dest = memmove(__dest,__src,__n);
        }
        lVar17 = lVar17 + -1;
        puVar14 = puVar7 + 3;
        plVar12 = plVar12 + 3;
        puVar7[1] = (long)__dest + __n;
        puVar7 = puVar14;
      } while (puVar14 != puVar6 + 0x57);
      bVar9 = *(byte *)(plVar3 + 0x5f);
      puVar6[0x57] = plVar3[0x57];
      bVar9 = bVar9 & 1;
      uVar4 = param_2[1];
      puVar6[0x58] = plVar3[0x58];
      puVar6[0x59] = plVar3[0x59];
      puVar6[0x5a] = plVar3[0x5a];
      puVar6[0x5b] = plVar3[0x5b];
      puVar6[0x5c] = plVar3[0x5c];
      puVar6[0x5d] = plVar3[0x5d];
      *(int *)(puVar6 + 0x5e) = (int)plVar3[0x5e];
      *(undefined4 *)((long)puVar6 + 0x2f4) = *(undefined4 *)((long)plVar3 + 0x2f4);
      bVar1 = *(byte *)(puVar6 + 0x5f);
      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfe | bVar9;
      bVar10 = *(byte *)(plVar3 + 0x5f) & 2;
      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xfc | bVar9 | bVar10;
      bVar2 = *(byte *)(plVar3 + 0x5f);
      *(byte *)(puVar6 + 0x5f) = bVar1 & 0xf8 | bVar9 | bVar10 | bVar2 & 4;
      *(byte *)(puVar6 + 0x5f) =
           bVar1 & 0xf0 | bVar9 | bVar10 | bVar2 & 4 | *(byte *)(plVar3 + 0x5f) & 8;
      uVar11 = (ulong)plVar3 % uVar4;
      plVar12 = *(long **)(*param_2 + uVar11 * 8);
      if (plVar12 != (long *)0x0) {
        plVar8 = (long *)((long *)*plVar12)[1];
        plVar13 = (long *)*plVar12;
        while (plVar3 != plVar8) {
          plVar5 = (long *)*plVar13;
          if ((plVar5 == (long *)0x0) ||
             (plVar8 = (long *)plVar5[1], plVar12 = plVar13, plVar13 = plVar5,
             uVar11 != (ulong)plVar8 % uVar4)) goto LAB_00219710;
        }
        lVar15 = *plVar12;
        if (lVar15 != 0) goto LAB_002196e0;
      }
LAB_00219710:
      puVar7 = (undefined8 *)FUN_00337280(0x18);
      *puVar7 = 0;
      puVar7[1] = plVar3;
      puVar7[2] = 0;
      lVar15 = FUN_002223f0(param_2,uVar11,plVar3,puVar7,1,in_R9,lVar17);
LAB_002196e0:
      *(undefined8 **)(lVar15 + 0x10) = puVar6;
      puVar16 = puVar16 + 1;
    } while (*(ulong **)(param_1 + 0x238) != puVar16);
  }
  return;
}

