
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: bool verify(Dwo_file * this, File_list * files) */

int __thiscall
gold::Dwo_file::verify
          (Dwo_file *this,EVP_PKEY_CTX *ctx,uchar *sig,size_t siglen,uchar *tbs,size_t tbslen)

{
  _Bit_iterator *p_Var1;
  uint *puVar2;
  pointer pSVar3;
  pointer pSVar4;
  int *piVar5;
  code *pcVar6;
  undefined4 uVar7;
  Relobj *pRVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  undefined3 extraout_var;
  undefined4 uVar13;
  _Bit_type *p_Var14;
  byte *pbVar15;
  undefined1 *puVar16;
  undefined1 *puVar17;
  byte *pbVar18;
  byte *pbVar19;
  undefined1 uVar20;
  bool bVar21;
  undefined1 uVar22;
  bool bVar23;
  byte bVar24;
  uint auStack_64 [2];
  undefined1 auStack_5c [12];
  uint local_50 [2];
  undefined **local_48;
  string *local_44;
  undefined **local_40;
  undefined4 local_38;
  string sect_name;
  
  bVar24 = 0;
  local_48 = &_GLOBAL_OFFSET_TABLE_;
  pRVar8 = make_object(this,(Dwp_output_file *)0x0);
  local_50[0] = (pRVar8->super_Object).shnum_;
  p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.
            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;
  this->obj_ = pRVar8;
  p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.
            super__Bvector_impl_data._M_finish;
  uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.
           super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;
  iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.
           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset +
           ((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14) * 8;
  if (local_50[0] < iVar12 - uVar10) {
    iVar9 = uVar10 + local_50[0];
    iVar12 = iVar9 + 0x1f;
    if (-1 < iVar9) {
      iVar12 = iVar9;
    }
    p_Var14 = p_Var14 + (iVar12 >> 5);
    uVar10 = iVar9 % 0x20;
    if ((int)uVar10 < 0) {
      uVar10 = uVar10 + 0x20;
      p_Var14 = p_Var14 + -1;
    }
    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.
    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var14;
    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.
    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = uVar10;
  }
  else {
    std::vector<bool,_std::allocator<bool>_>::_M_fill_insert
              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,
               (uVar10 - iVar12) + local_50[0],false);
  }
  uVar10 = local_50[0];
  pSVar3 = (this->sect_offsets_).
           super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.
           _M_finish;
  pSVar4 = (this->sect_offsets_).
           super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.
           _M_start;
  uVar11 = (int)pSVar3 - (int)pSVar4 >> 3;
  if (uVar11 < local_50[0]) {
    std::vector<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>::_M_default_append
              (&this->sect_offsets_,local_50[0] - uVar11);
  }
  else if ((local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)) {
    (this->sect_offsets_).
    super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.
    _M_finish = pSVar4;
  }
  puVar17 = auStack_5c;
  if (1 < uVar10) {
    local_50[1] = 0;
    uVar10 = 1;
    local_44 = &sect_name;
    local_40 = local_48 + -0x43a8c;
    puVar16 = auStack_5c;
    do {
      piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);
      iVar12 = *piVar5;
      *(uint *)(puVar16 + -0xc) = uVar10;
      *(int **)(puVar16 + -0x10) = piVar5;
      pcVar6 = *(code **)(iVar12 + 0x50);
      *(undefined4 *)(puVar16 + -0x14) = 0x38f61;
      iVar12 = (*pcVar6)();
      puVar17 = puVar16;
      if (iVar12 == 1) {
        uVar20 = puVar16 < (undefined1 *)0x4;
        uVar22 = puVar16 == (undefined1 *)0x4;
        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);
        iVar12 = *piVar5;
        *(uint *)(puVar16 + -8) = uVar10;
        *(int **)(puVar16 + -0xc) = piVar5;
        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);
        pcVar6 = *(code **)(iVar12 + 0x40);
        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;
        (*pcVar6)();
        iVar12 = 7;
        pbVar15 = *(byte **)(puVar16 + 0x24);
        pbVar18 = *(byte **)(puVar16 + 0x18);
        pbVar19 = pbVar15;
        do {
          if (iVar12 == 0) break;
          iVar12 = iVar12 + -1;
          uVar20 = *pbVar18 < *pbVar19;
          uVar22 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while ((bool)uVar22);
        pbVar18 = pbVar15 + 7;
        puVar17 = puVar16 + -4;
        bVar21 = false;
        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;
        if (!bVar23) {
          iVar12 = 8;
          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);
          pbVar19 = pbVar15;
          do {
            if (iVar12 == 0) break;
            iVar12 = iVar12 + -1;
            bVar21 = *pbVar18 < *pbVar19;
            bVar23 = *pbVar18 == *pbVar19;
            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
          } while (bVar23);
          if ((!bVar21 && !bVar23) != bVar21) {
            if (pbVar15 != puVar16 + 0x2c) {
              *(byte **)(puVar16 + -0x14) = pbVar15;
              *(undefined4 *)(puVar16 + -0x18) = 0x39065;
              operator_delete(*(void **)(puVar16 + -0x14));
              puVar17 = puVar16 + -4;
            }
            goto LAB_00039015;
          }
          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);
          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);
          bVar23 = *puVar2 == 0;
          pbVar18 = pbVar15 + 8;
          pbVar15 = *(byte **)(puVar16 + 0x24);
        }
        bVar21 = false;
        iVar12 = 9;
        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);
        do {
          if (iVar12 == 0) break;
          iVar12 = iVar12 + -1;
          bVar21 = *pbVar18 < *pbVar19;
          bVar23 = *pbVar18 == *pbVar19;
          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;
          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;
        } while (bVar23);
        uVar11 = *(uint *)(puVar16 + 0xc);
        if ((!bVar21 && !bVar23) == bVar21) {
          uVar11 = uVar10;
        }
        *(uint *)(puVar16 + 0xc) = uVar11;
        puVar17 = puVar16 + -4;
        if (pbVar15 != puVar16 + 0x2c) {
          *(byte **)(puVar16 + -0x14) = pbVar15;
          *(undefined4 *)(puVar16 + -0x18) = 0x39012;
          operator_delete(*(void **)(puVar16 + -0x14));
          puVar17 = puVar16 + -4;
        }
      }
LAB_00039015:
      uVar10 = uVar10 + 1;
      puVar16 = puVar17;
    } while (uVar10 < *(uint *)(puVar17 + 0xc));
    if (*(int *)(puVar17 + 0x10) != 0) {
      *(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);
      *(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);
      *(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);
      *(undefined4 *)(puVar17 + -0x14) = 0x3903f;
      bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),
                               *(File_list **)(puVar17 + -8));
      return CONCAT31(extraout_var,bVar21);
    }
  }
  uVar7 = **(undefined4 **)(puVar17 + 0x60);
  *(int *)(puVar17 + -0x10) = *(int *)(puVar17 + 0x14) + -0x10ec54;
  *(undefined4 *)(puVar17 + -0x14) = 0x39108;
  uVar13 = gettext();
  *(undefined4 *)(puVar17 + -0xc) = uVar7;
  *(undefined4 *)(puVar17 + -0x10) = uVar13;
                    /* WARNING: Subroutine does not return */
  *(undefined **)(puVar17 + -0x14) = &UNK_00039111;
  gold_fatal(*(char **)(puVar17 + -0x10));
}



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

void FUN_00038e80(int param_1)

{
  uint *puVar1;
  int *piVar2;
  code *pcVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined4 uVar8;
  byte *pbVar9;
  undefined1 *puVar10;
  undefined1 *puVar11;
  uint uVar12;
  byte *pbVar13;
  byte *pbVar14;
  undefined1 uVar15;
  bool bVar16;
  undefined1 uVar17;
  bool bVar18;
  byte bVar19;
  uint auStack_64 [2];
  undefined1 auStack_5c [12];
  uint local_50 [2];
  undefined **local_48;
  undefined **local_44 [4];
  undefined1 local_34 [36];
  
  bVar19 = 0;
  local_48 = &__DT_PLTGOT;
  iVar5 = FUN_00037ff0(param_1,0);
  local_50[0] = *(uint *)(iVar5 + 0x28);
  *(int *)(param_1 + 4) = iVar5;
  iVar6 = *(int *)(param_1 + 0x10);
  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;
  if (local_50[0] < (uint)(iVar5 - iVar6)) {
    iVar6 = iVar6 + local_50[0];
    iVar5 = iVar6 + 0x1f;
    if (-1 < iVar6) {
      iVar5 = iVar6;
    }
    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;
    iVar6 = iVar6 % 0x20;
    if (iVar6 < 0) {
      iVar6 = iVar6 + 0x20;
      iVar5 = iVar5 + -4;
    }
    *(int *)(param_1 + 0x14) = iVar5;
    *(int *)(param_1 + 0x18) = iVar6;
  }
  else {
    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),
                 (iVar6 - iVar5) + local_50[0],0);
  }
  uVar12 = local_50[0];
  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;
  if (uVar7 < local_50[0]) {
    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);
  }
  else if ((local_50[0] < uVar7) &&
          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {
    *(int *)(param_1 + 0x24) = iVar5;
  }
  puVar11 = auStack_5c;
  if (1 < uVar12) {
    local_50[1] = 0;
    uVar12 = 1;
    local_44[0] = (undefined **)local_34;
    local_44[1] = local_48 + -0x43a8c;
    puVar10 = auStack_5c;
    do {
      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);
      iVar5 = *piVar2;
      *(uint *)(puVar10 + -0xc) = uVar12;
      *(int **)(puVar10 + -0x10) = piVar2;
      pcVar3 = *(code **)(iVar5 + 0x50);
      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;
      iVar5 = (*pcVar3)();
      puVar11 = puVar10;
      if (iVar5 == 1) {
        uVar15 = puVar10 < (undefined1 *)0x4;
        uVar17 = puVar10 == (undefined1 *)0x4;
        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);
        iVar5 = *piVar2;
        *(uint *)(puVar10 + -8) = uVar12;
        *(int **)(puVar10 + -0xc) = piVar2;
        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);
        pcVar3 = *(code **)(iVar5 + 0x40);
        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;
        (*pcVar3)();
        iVar5 = 7;
        pbVar9 = *(byte **)(puVar10 + 0x24);
        pbVar13 = *(byte **)(puVar10 + 0x18);
        pbVar14 = pbVar9;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          uVar15 = *pbVar13 < *pbVar14;
          uVar17 = *pbVar13 == *pbVar14;
          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;
          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
        } while ((bool)uVar17);
        pbVar13 = pbVar9 + 7;
        puVar11 = puVar10 + -4;
        bVar16 = false;
        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;
        if (!bVar18) {
          iVar5 = 8;
          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);
          pbVar14 = pbVar9;
          do {
            if (iVar5 == 0) break;
            iVar5 = iVar5 + -1;
            bVar16 = *pbVar13 < *pbVar14;
            bVar18 = *pbVar13 == *pbVar14;
            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;
            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
          } while (bVar18);
          if ((!bVar16 && !bVar18) != bVar16) {
            if (pbVar9 != puVar10 + 0x2c) {
              *(byte **)(puVar10 + -0x14) = pbVar9;
              *(undefined4 *)(puVar10 + -0x18) = 0x39065;
              FUN_001e6db0();
              puVar11 = puVar10 + -4;
            }
            goto LAB_00039015;
          }
          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);
          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);
          bVar18 = *puVar1 == 0;
          pbVar13 = pbVar9 + 8;
          pbVar9 = *(byte **)(puVar10 + 0x24);
        }
        bVar16 = false;
        iVar5 = 9;
        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar16 = *pbVar13 < *pbVar14;
          bVar18 = *pbVar13 == *pbVar14;
          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;
          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
        } while (bVar18);
        uVar7 = *(uint *)(puVar10 + 0xc);
        if ((!bVar16 && !bVar18) == bVar16) {
          uVar7 = uVar12;
        }
        *(uint *)(puVar10 + 0xc) = uVar7;
        puVar11 = puVar10 + -4;
        if (pbVar9 != puVar10 + 0x2c) {
          *(byte **)(puVar10 + -0x14) = pbVar9;
          *(undefined4 *)(puVar10 + -0x18) = 0x39012;
          FUN_001e6db0();
          puVar11 = puVar10 + -4;
        }
      }
LAB_00039015:
      uVar12 = uVar12 + 1;
      puVar10 = puVar11;
    } while (uVar12 < *(uint *)(puVar11 + 0xc));
    if (*(int *)(puVar11 + 0x10) != 0) {
      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);
      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);
      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);
      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;
      FUN_00036650();
      return;
    }
  }
  uVar4 = **(undefined4 **)(puVar11 + 0x60);
  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;
  *(undefined4 *)(puVar11 + -0x14) = 0x39108;
  uVar8 = gettext();
  *(undefined4 *)(puVar11 + -0xc) = uVar4;
  *(undefined4 *)(puVar11 + -0x10) = uVar8;
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)(puVar11 + -0x14) = 0x39111;
  FUN_00065450();
}


CALL 0x000559e6
ADD EAX,0x35617b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x54
MOV dword ptr [ESP + 0x1c],EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x6c]
CALL 0x00037ff0
MOV ESI,dword ptr [ESP + 0x70]
MOV EBP,dword ptr [EAX + 0x28]
MOV EDI,ESI
MOV ECX,dword ptr [ESI + 0xc]
MOV dword ptr [ESI + 0x4],EAX
MOV EDI,dword ptr [EDI + 0x14]
MOV EAX,dword ptr [ESI + 0x10]
MOV dword ptr [ESP + 0x1c],EBP
ADD ESP,0x10
MOV ESI,dword ptr [ESI + 0x18]
MOV EDX,EDI
SUB EDX,ECX
LEA EDX,[ESI + EDX*0x8]
MOV EBX,EDX
SUB EBX,EAX
CMP EBP,EBX
JNC 0x000390a0
ADD EAX,EBP
LEA EDX,[EAX + 0x1f]
CMOVNS EDX,EAX
SAR EDX,0x5
LEA EDX,[ECX + EDX*0x4]
MOV ECX,EAX
SAR ECX,0x1f
SHR ECX,0x1b
ADD EAX,ECX
AND EAX,0x1f
SUB EAX,ECX
JS 0x00039090
MOV ESI,dword ptr [ESP + 0x60]
MOV dword ptr [ESI + 0x14],EDX
MOV dword ptr [ESI + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV EDX,dword ptr [EAX + 0x24]
MOV ECX,dword ptr [EAX + 0x20]
MOV EAX,EDX
SUB EAX,ECX
SAR EAX,0x3
CMP dword ptr [ESP + 0xc],EAX
JA 0x000390c8
JC 0x00039070
CMP dword ptr [ESP + 0xc],0x1
JBE 0x000390ed
LEA EAX,[ESP + 0x28]
MOV dword ptr [ESP + 0x10],0x0
MOV EBP,0x1
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x14]
LEA EAX,[EAX + 0xffef15d0]
MOV dword ptr [ESP + 0x1c],EAX
NOP
MOV EAX,dword ptr [ESP + 0x60]
SUB ESP,0x8
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EAX]
PUSH EBP
PUSH EAX
CALL dword ptr [EDX + 0x50]
MOV EBX,EAX
ADD ESP,0x10
CMP EAX,0x1
JNZ 0x00039015
MOV EAX,dword ptr [ESP + 0x60]
SUB ESP,0x4
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EAX]
PUSH EBP
PUSH EAX
PUSH dword ptr [ESP + 0x24]
CALL dword ptr [EDX + 0x40]
MOV ECX,0x7
MOV EDX,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0x28]
MOV EDI,EDX
CMPSB.REPE ES:EDI,ESI
LEA ESI,[EDX + 0x7]
SETA AL
SBB AL,0x0
ADD ESP,0xc
TEST AL,AL
JZ 0x00038fde
MOV EAX,dword ptr [ESP + 0x14]
MOV ECX,0x8
MOV EDI,EDX
LEA ESI,[EAX + 0xffef15d8]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x00039050
MOV EAX,dword ptr [ESP + 0x60]
MOV EDI,EBP
MOV ECX,EBP
SHR EDI,0x5
SHL EBX,CL
MOV ESI,dword ptr [EAX + 0xc]
OR dword ptr [ESI + EDI*0x4],EBX
LEA ESI,[EDX + 0x8]
MOV EDX,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x14]
MOV ECX,0x9
LEA EDI,[EBX + 0xffef1560]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
MOV EAX,dword ptr [ESP + 0x10]
CMOVZ EAX,EBP
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESP + 0x30]
CMP EDX,EAX
JZ 0x00039015
SUB ESP,0xc
PUSH EDX
CALL 0x001e6db0
ADD ESP,0x10
ADD EBP,0x1
CMP dword ptr [ESP + 0xc],EBP
JA 0x00038f50
MOV EAX,dword ptr [ESP + 0x10]
TEST EAX,EAX
JZ 0x000390ed
SUB ESP,0x4
PUSH dword ptr [ESP + 0x68]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
CALL 0x00036650
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[ESP + 0x30]
CMP EDX,EAX
JZ 0x00039015
SUB ESP,0xc
PUSH EDX
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x001e6db0
ADD ESP,0x10
JMP 0x00039015
MOV EAX,dword ptr [ESP + 0xc]
LEA EAX,[ECX + EAX*0x8]
CMP EDX,EAX
JZ 0x00038f20
MOV ECX,dword ptr [ESP + 0x60]
MOV dword ptr [ECX + 0x24],EAX
JMP 0x00038f20
ADD EAX,0x20
SUB EDX,0x4
JMP 0x00038ef5
SUB ESP,0xc
SUB EAX,EDX
PUSH 0x0
ADD EAX,dword ptr [ESP + 0x1c]
PUSH EAX
PUSH ESI
PUSH EDI
MOV EAX,dword ptr [ESP + 0x7c]
ADD EAX,0xc
PUSH EAX
CALL 0x000502e0
ADD ESP,0x20
JMP 0x00038eff
SUB ESP,0x8
MOV EDI,dword ptr [ESP + 0x14]
MOV ECX,EDI
SUB ECX,EAX
PUSH ECX
MOV EAX,dword ptr [ESP + 0x6c]
ADD EAX,0x20
PUSH EAX
CALL 0x0004af70
ADD ESP,0x10
CMP EDI,0x1
JA 0x00038f2b
MOV EAX,dword ptr [ESP + 0x60]
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [EAX]
LEA EAX,[EDI + 0xffef13ac]
MOV EBX,EDI
PUSH EAX
CALL 0x000293b0
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x00065450
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00038e80(int param_1)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  byte *pbVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  undefined1 uVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  undefined **local_44 [4];\n  undefined1 local_34 [36];\n  \n  bVar19 = 0;\n  local_48 = &__DT_PLTGOT;\n  iVar5 = FUN_00037ff0(param_1,0);\n  local_50[0] = *(uint *)(iVar5 + 0x28);\n  *(int *)(param_1 + 4) = iVar5;\n  iVar6 = *(int *)(param_1 + 0x10);\n  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;\n  if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }\n  uVar12 = local_50[0];\n  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;\n  if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }\n  puVar11 = auStack_5c;\n  if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }\n  uVar4 = **(undefined4 **)(puVar11 + 0x60);\n  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar11 + -0x14) = 0x39108;\n  uVar8 = gettext();\n  *(undefined4 *)(puVar11 + -0xc) = uVar4;\n  *(undefined4 *)(puVar11 + -0x10) = uVar8;\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar11 + -0x14) = 0x39111;\n  FUN_00065450();\n}\n\n" comment (function_definition "void FUN_00038e80(int param_1)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  byte *pbVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  undefined1 uVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  undefined **local_44 [4];\n  undefined1 local_34 [36];\n  \n  bVar19 = 0;\n  local_48 = &__DT_PLTGOT;\n  iVar5 = FUN_00037ff0(param_1,0);\n  local_50[0] = *(uint *)(iVar5 + 0x28);\n  *(int *)(param_1 + 4) = iVar5;\n  iVar6 = *(int *)(param_1 + 0x10);\n  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;\n  if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }\n  uVar12 = local_50[0];\n  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;\n  if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }\n  puVar11 = auStack_5c;\n  if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }\n  uVar4 = **(undefined4 **)(puVar11 + 0x60);\n  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar11 + -0x14) = 0x39108;\n  uVar8 = gettext();\n  *(undefined4 *)(puVar11 + -0xc) = uVar4;\n  *(undefined4 *)(puVar11 + -0x10) = uVar8;\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar11 + -0x14) = 0x39111;\n  FUN_00065450();\n}" primitive_type (function_declarator "FUN_00038e80(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  byte *pbVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  undefined1 uVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  undefined **local_44 [4];\n  undefined1 local_34 [36];\n  \n  bVar19 = 0;\n  local_48 = &__DT_PLTGOT;\n  iVar5 = FUN_00037ff0(param_1,0);\n  local_50[0] = *(uint *)(iVar5 + 0x28);\n  *(int *)(param_1 + 4) = iVar5;\n  iVar6 = *(int *)(param_1 + 0x10);\n  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;\n  if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }\n  uVar12 = local_50[0];\n  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;\n  if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }\n  puVar11 = auStack_5c;\n  if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }\n  uVar4 = **(undefined4 **)(puVar11 + 0x60);\n  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar11 + -0x14) = 0x39108;\n  uVar8 = gettext();\n  *(undefined4 *)(puVar11 + -0xc) = uVar4;\n  *(undefined4 *)(puVar11 + -0x10) = uVar8;\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar11 + -0x14) = 0x39111;\n  FUN_00065450();\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "undefined1 uVar15;" type_identifier identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "undefined1 uVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "uint auStack_64 [2];" type_identifier (array_declarator "auStack_64 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_5c [12];" type_identifier (array_declarator "auStack_5c [12]" identifier [ number_literal ]) ;) (declaration "uint local_50 [2];" type_identifier (array_declarator "local_50 [2]" identifier [ number_literal ]) ;) (declaration "undefined **local_48;" type_identifier (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier)) ;) (declaration "undefined **local_44 [4];" type_identifier (pointer_declarator "**local_44 [4]" * (pointer_declarator "*local_44 [4]" * (array_declarator "local_44 [4]" identifier [ number_literal ]))) ;) (declaration "undefined1 local_34 [36];" type_identifier (array_declarator "local_34 [36]" identifier [ number_literal ]) ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "local_48 = &__DT_PLTGOT;" (assignment_expression "local_48 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "iVar5 = FUN_00037ff0(param_1,0);" (assignment_expression "iVar5 = FUN_00037ff0(param_1,0)" identifier = (call_expression "FUN_00037ff0(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (expression_statement "local_50[0] = *(uint *)(iVar5 + 0x28);" (assignment_expression "local_50[0] = *(uint *)(iVar5 + 0x28)" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(iVar5 + 0x28)" * (cast_expression "(uint *)(iVar5 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" identifier = (binary_expression "*(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (binary_expression "(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" (parenthesized_expression "(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc))" ( (binary_expression "*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) )) * number_literal))) ;) (if_statement "if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" if (parenthesized_expression "(local_50[0] < (uint)(iVar5 - iVar6))" ( (binary_expression "local_50[0] < (uint)(iVar5 - iVar6)" (subscript_expression "local_50[0]" identifier [ number_literal ]) < (call_expression "(uint)(iVar5 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 - iVar6)" ( (binary_expression "iVar5 - iVar6" identifier - identifier) )))) )) (compound_statement "{\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }" { (expression_statement "iVar6 = iVar6 + local_50[0];" (assignment_expression "iVar6 = iVar6 + local_50[0]" identifier = (binary_expression "iVar6 + local_50[0]" identifier + (subscript_expression "local_50[0]" identifier [ number_literal ]))) ;) (expression_statement "iVar5 = iVar6 + 0x1f;" (assignment_expression "iVar5 = iVar6 + 0x1f" identifier = (binary_expression "iVar6 + 0x1f" identifier + number_literal)) ;) (if_statement "if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (compound_statement "{\n      iVar5 = iVar6;\n    }" { (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) })) (expression_statement "iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;" (assignment_expression "iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4" identifier = (binary_expression "*(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + (binary_expression "(iVar5 >> 5) * 4" (parenthesized_expression "(iVar5 >> 5)" ( (binary_expression "iVar5 >> 5" identifier >> number_literal) )) * number_literal))) ;) (expression_statement "iVar6 = iVar6 % 0x20;" (assignment_expression "iVar6 = iVar6 % 0x20" identifier = (binary_expression "iVar6 % 0x20" identifier % number_literal)) ;) (if_statement "if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }" { (expression_statement "iVar6 = iVar6 + 0x20;" (assignment_expression "iVar6 = iVar6 + 0x20" identifier = (binary_expression "iVar6 + 0x20" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar5 + -4;" (assignment_expression "iVar5 = iVar5 + -4" identifier = (binary_expression "iVar5 + -4" identifier + number_literal)) ;) })) (expression_statement "*(int *)(param_1 + 0x14) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar5" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x18) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x18) = iVar6" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" else (compound_statement "{\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" { (expression_statement "FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);" (call_expression "FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0)" identifier (argument_list "(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) , (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , (binary_expression "(iVar6 - iVar5) + local_50[0]" (parenthesized_expression "(iVar6 - iVar5)" ( (binary_expression "iVar6 - iVar5" identifier - identifier) )) + (subscript_expression "local_50[0]" identifier [ number_literal ])) , number_literal ))) ;) }))) (expression_statement "uVar12 = local_50[0];" (assignment_expression "uVar12 = local_50[0]" identifier = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;" (assignment_expression "uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3" identifier = (binary_expression "*(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3" (binary_expression "*(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20)" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" if (parenthesized_expression "(uVar7 < local_50[0])" ( (binary_expression "uVar7 < local_50[0]" identifier < (subscript_expression "local_50[0]" identifier [ number_literal ])) )) (compound_statement "{\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }" { (expression_statement "FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);" (call_expression "FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7)" identifier (argument_list "(param_1 + 0x20,local_50[0] - uVar7)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) , (binary_expression "local_50[0] - uVar7" (subscript_expression "local_50[0]" identifier [ number_literal ]) - identifier) ))) ;) }) (else_clause "else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" else (if_statement "if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" if (parenthesized_expression "((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5))" ( (binary_expression "(local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)" (parenthesized_expression "(local_50[0] < uVar7)" ( (binary_expression "local_50[0] < uVar7" (subscript_expression "local_50[0]" identifier [ number_literal ]) < identifier) )) && (parenthesized_expression "(iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)" ( (comma_expression "iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5" (assignment_expression "iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8" identifier = (binary_expression "*(int *)(param_1 + 0x20) + local_50[0] * 8" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "local_50[0] * 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) * number_literal))) , (binary_expression "*(int *)(param_1 + 0x24) != iVar5" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" { (expression_statement "*(int *)(param_1 + 0x24) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x24) = iVar5" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" identifier = identifier) ;) (if_statement "if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }" if (parenthesized_expression "(1 < uVar12)" ( (binary_expression "1 < uVar12" number_literal < identifier) )) (compound_statement "{\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }" { (expression_statement "local_50[1] = 0;" (assignment_expression "local_50[1] = 0" (subscript_expression "local_50[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (expression_statement "local_44[0] = (undefined **)local_34;" (assignment_expression "local_44[0] = (undefined **)local_34" (subscript_expression "local_44[0]" identifier [ number_literal ]) = (cast_expression "(undefined **)local_34" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "local_44[1] = local_48 + -0x43a8c;" (assignment_expression "local_44[1] = local_48 + -0x43a8c" (subscript_expression "local_44[1]" identifier [ number_literal ]) = (binary_expression "local_48 + -0x43a8c" identifier + number_literal)) ;) (expression_statement "puVar10 = auStack_5c;" (assignment_expression "puVar10 = auStack_5c" identifier = identifier) ;) (do_statement "do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));" do (compound_statement "{\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    }" { (expression_statement "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);" (assignment_expression "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(puVar10 + 0x60) + 4)" * (cast_expression "(int **)(*(int *)(puVar10 + 0x60) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + 0x60) + 4)" ( (binary_expression "*(int *)(puVar10 + 0x60) + 4" (pointer_expression "*(int *)(puVar10 + 0x60)" * (cast_expression "(int *)(puVar10 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x60)" ( (binary_expression "puVar10 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar2;" (assignment_expression "iVar5 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = uVar12;" (assignment_expression "*(uint *)(puVar10 + -0xc) = uVar12" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x10) = piVar2;" (assignment_expression "*(int **)(puVar10 + -0x10) = piVar2" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar5 + 0x50);" (assignment_expression "pcVar3 = *(code **)(iVar5 + 0x50)" identifier = (pointer_expression "*(code **)(iVar5 + 0x50)" * (cast_expression "(code **)(iVar5 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x50)" ( (binary_expression "iVar5 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x38f61;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x38f61" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar3)();" (assignment_expression "iVar5 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" identifier = identifier) ;) (if_statement "if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }" { (expression_statement "uVar15 = puVar10 < (undefined1 *)0x4;" (assignment_expression "uVar15 = puVar10 < (undefined1 *)0x4" identifier = (binary_expression "puVar10 < (undefined1 *)0x4" identifier < (cast_expression "(undefined1 *)0x4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar17 = puVar10 == (undefined1 *)0x4;" (assignment_expression "uVar17 = puVar10 == (undefined1 *)0x4" identifier = (binary_expression "puVar10 == (undefined1 *)0x4" identifier == (cast_expression "(undefined1 *)0x4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);" (assignment_expression "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(puVar10 + 0x60) + 4)" * (cast_expression "(int **)(*(int *)(puVar10 + 0x60) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + 0x60) + 4)" ( (binary_expression "*(int *)(puVar10 + 0x60) + 4" (pointer_expression "*(int *)(puVar10 + 0x60)" * (cast_expression "(int *)(puVar10 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x60)" ( (binary_expression "puVar10 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar2;" (assignment_expression "iVar5 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*(uint *)(puVar10 + -8) = uVar12;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar12" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0xc) = piVar2;" (assignment_expression "*(int **)(puVar10 + -0xc) = piVar2" (pointer_expression "*(int **)(puVar10 + -0xc)" * (cast_expression "(int **)(puVar10 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18)" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar10 + 0x18)" * (cast_expression "(undefined4 *)(puVar10 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x18)" ( (binary_expression "puVar10 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = *(code **)(iVar5 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar5 + 0x40)" identifier = (pointer_expression "*(code **)(iVar5 + 0x40)" * (cast_expression "(code **)(iVar5 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x40)" ( (binary_expression "iVar5 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x38f84;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x38f84" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = 7;" (assignment_expression "iVar5 = 7" identifier = number_literal) ;) (expression_statement "pbVar9 = *(byte **)(puVar10 + 0x24);" (assignment_expression "pbVar9 = *(byte **)(puVar10 + 0x24)" identifier = (pointer_expression "*(byte **)(puVar10 + 0x24)" * (cast_expression "(byte **)(puVar10 + 0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x24)" ( (binary_expression "puVar10 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = *(byte **)(puVar10 + 0x18);" (assignment_expression "pbVar13 = *(byte **)(puVar10 + 0x18)" identifier = (pointer_expression "*(byte **)(puVar10 + 0x18)" * (cast_expression "(byte **)(puVar10 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x18)" ( (binary_expression "puVar10 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "pbVar14 = pbVar9;" (assignment_expression "pbVar14 = pbVar9" identifier = identifier) ;) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);" do (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar15 = *pbVar13 < *pbVar14;" (assignment_expression "uVar15 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "uVar17 = *pbVar13 == *pbVar14;" (assignment_expression "uVar17 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar17)" ( (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (expression_statement "pbVar13 = pbVar9 + 7;" (assignment_expression "pbVar13 = pbVar9 + 7" identifier = (binary_expression "pbVar9 + 7" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;" (assignment_expression "bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15" identifier = (binary_expression "(!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15" (parenthesized_expression "(!(bool)uVar15 && !(bool)uVar17)" ( (binary_expression "!(bool)uVar15 && !(bool)uVar17" (unary_expression "!(bool)uVar15" ! (cast_expression "(bool)uVar15" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar17" ! (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar15" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (if_statement "if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (compound_statement "{\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }" { (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) (expression_statement "pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);" (assignment_expression "pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x10) + -0x10ea28)" ( (binary_expression "*(int *)(puVar10 + 0x10) + -0x10ea28" (pointer_expression "*(int *)(puVar10 + 0x10)" * (cast_expression "(int *)(puVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x10)" ( (binary_expression "puVar10 + 0x10" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar14 = pbVar9;" (assignment_expression "pbVar14 = pbVar9" identifier = identifier) ;) (do_statement "do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);" do (compound_statement "{\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar13 < *pbVar14;" (assignment_expression "bVar16 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar18 = *pbVar13 == *pbVar14;" (assignment_expression "bVar18 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }" if (parenthesized_expression "((!bVar16 && !bVar18) != bVar16)" ( (binary_expression "(!bVar16 && !bVar18) != bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) != identifier) )) (compound_statement "{\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }" { (if_statement "if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }" if (parenthesized_expression "(pbVar9 != puVar10 + 0x2c)" ( (binary_expression "pbVar9 != puVar10 + 0x2c" identifier != (binary_expression "puVar10 + 0x2c" identifier + number_literal)) )) (compound_statement "{\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }" { (expression_statement "*(byte **)(puVar10 + -0x14) = pbVar9;" (assignment_expression "*(byte **)(puVar10 + -0x14) = pbVar9" (pointer_expression "*(byte **)(puVar10 + -0x14)" * (cast_expression "(byte **)(puVar10 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x39065;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x39065" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) })) (goto_statement "goto LAB_00039015;" goto statement_identifier ;) })) (expression_statement "puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);" (assignment_expression "puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" identifier = (cast_expression "(uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" ( (binary_expression "*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4" (pointer_expression "*(int *)(*(int *)(puVar10 + 0x5c) + 0xc)" * (cast_expression "(int *)(*(int *)(puVar10 + 0x5c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x5c) + 0xc)" ( (binary_expression "*(int *)(puVar10 + 0x5c) + 0xc" (pointer_expression "*(int *)(puVar10 + 0x5c)" * (cast_expression "(int *)(puVar10 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x5c)" ( (binary_expression "puVar10 + 0x5c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "(uVar12 >> 5) * 4" (parenthesized_expression "(uVar12 >> 5)" ( (binary_expression "uVar12 >> 5" identifier >> number_literal) )) * number_literal)) )))) ;) (expression_statement "*puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);" (assignment_expression "*puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f)" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 1 << ((byte)uVar12 & 0x1f)" (pointer_expression "*puVar1" * identifier) | (binary_expression "1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "bVar18 = *puVar1 == 0;" (assignment_expression "bVar18 = *puVar1 == 0" identifier = (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" * identifier) == number_literal)) ;) (expression_statement "pbVar13 = pbVar9 + 8;" (assignment_expression "pbVar13 = pbVar9 + 8" identifier = (binary_expression "pbVar9 + 8" identifier + number_literal)) ;) (expression_statement "pbVar9 = *(byte **)(puVar10 + 0x24);" (assignment_expression "pbVar9 = *(byte **)(puVar10 + 0x24)" identifier = (pointer_expression "*(byte **)(puVar10 + 0x24)" * (cast_expression "(byte **)(puVar10 + 0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x24)" ( (binary_expression "puVar10 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);" (assignment_expression "pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x10) + -0x10eaa0)" ( (binary_expression "*(int *)(puVar10 + 0x10) + -0x10eaa0" (pointer_expression "*(int *)(puVar10 + 0x10)" * (cast_expression "(int *)(puVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x10)" ( (binary_expression "puVar10 + 0x10" identifier + number_literal) )))) + number_literal) )))) ;) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);" do (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar13 < *pbVar14;" (assignment_expression "bVar16 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar18 = *pbVar13 == *pbVar14;" (assignment_expression "bVar18 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "uVar7 = *(uint *)(puVar10 + 0xc);" (assignment_expression "uVar7 = *(uint *)(puVar10 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar10 + 0xc)" * (cast_expression "(uint *)(puVar10 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xc)" ( (binary_expression "puVar10 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }" if (parenthesized_expression "((!bVar16 && !bVar18) == bVar16)" ( (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier) )) (compound_statement "{\n          uVar7 = uVar12;\n        }" { (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" identifier = identifier) ;) })) (expression_statement "*(uint *)(puVar10 + 0xc) = uVar7;" (assignment_expression "*(uint *)(puVar10 + 0xc) = uVar7" (pointer_expression "*(uint *)(puVar10 + 0xc)" * (cast_expression "(uint *)(puVar10 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xc)" ( (binary_expression "puVar10 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (if_statement "if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }" if (parenthesized_expression "(pbVar9 != puVar10 + 0x2c)" ( (binary_expression "pbVar9 != puVar10 + 0x2c" identifier != (binary_expression "puVar10 + 0x2c" identifier + number_literal)) )) (compound_statement "{\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }" { (expression_statement "*(byte **)(puVar10 + -0x14) = pbVar9;" (assignment_expression "*(byte **)(puVar10 + -0x14) = pbVar9" (pointer_expression "*(byte **)(puVar10 + -0x14)" * (cast_expression "(byte **)(puVar10 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x39012;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x39012" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) })) })) (labeled_statement "LAB_00039015:\n      uVar12 = uVar12 + 1;" statement_identifier : (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;)) (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(uVar12 < *(uint *)(puVar11 + 0xc))" ( (binary_expression "uVar12 < *(uint *)(puVar11 + 0xc)" identifier < (pointer_expression "*(uint *)(puVar11 + 0xc)" * (cast_expression "(uint *)(puVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xc)" ( (binary_expression "puVar11 + 0xc" identifier + number_literal) ))))) )) ;) (if_statement "if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }" if (parenthesized_expression "(*(int *)(puVar11 + 0x10) != 0)" ( (binary_expression "*(int *)(puVar11 + 0x10) != 0" (pointer_expression "*(int *)(puVar11 + 0x10)" * (cast_expression "(int *)(puVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x10)" ( (binary_expression "puVar11 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }" { (expression_statement "*(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);" (assignment_expression "*(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100)" (pointer_expression "*(undefined4 *)(puVar11 + -8)" * (cast_expression "(undefined4 *)(puVar11 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar11 + 100)" * (cast_expression "(undefined4 *)(puVar11 + 100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 100)" ( (binary_expression "puVar11 + 100" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);" (assignment_expression "*(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10)" (pointer_expression "*(int *)(puVar11 + -0xc)" * (cast_expression "(int *)(puVar11 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(int *)(puVar11 + 0x10)" * (cast_expression "(int *)(puVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x10)" ( (binary_expression "puVar11 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60)" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar11 + 0x60)" * (cast_expression "(undefined4 *)(puVar11 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x60)" ( (binary_expression "puVar11 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x3903f;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x3903f" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00036650();" (call_expression "FUN_00036650()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) })) (expression_statement "uVar4 = **(undefined4 **)(puVar11 + 0x60);" (assignment_expression "uVar4 = **(undefined4 **)(puVar11 + 0x60)" identifier = (pointer_expression "**(undefined4 **)(puVar11 + 0x60)" * (pointer_expression "*(undefined4 **)(puVar11 + 0x60)" * (cast_expression "(undefined4 **)(puVar11 + 0x60)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x60)" ( (binary_expression "puVar11 + 0x60" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;" (assignment_expression "*(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54" (pointer_expression "*(int *)(puVar11 + -0x10)" * (cast_expression "(int *)(puVar11 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar11 + 0x14) + -0x10ec54" (pointer_expression "*(int *)(puVar11 + 0x14)" * (cast_expression "(int *)(puVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x14)" ( (binary_expression "puVar11 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x39108;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x39108" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar8 = gettext();" (assignment_expression "uVar8 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar11 + -0xc) = uVar4;" (assignment_expression "*(undefined4 *)(puVar11 + -0xc) = uVar4" (pointer_expression "*(undefined4 *)(puVar11 + -0xc)" * (cast_expression "(undefined4 *)(puVar11 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x39111;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x39111" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00065450();" (call_expression "FUN_00065450()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: bool verify(Dwo_file * this, File_list * files) */\n\nint __thiscall\ngold::Dwo_file::verify\n          (Dwo_file *this,EVP_PKEY_CTX *ctx,uchar *sig,size_t siglen,uchar *tbs,size_t tbslen)\n\n{\n  _Bit_iterator *p_Var1;\n  uint *puVar2;\n  pointer pSVar3;\n  pointer pSVar4;\n  int *piVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  Relobj *pRVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined3 extraout_var;\n  undefined4 uVar13;\n  _Bit_type *p_Var14;\n  byte *pbVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  byte *pbVar18;\n  byte *pbVar19;\n  undefined1 uVar20;\n  bool bVar21;\n  undefined1 uVar22;\n  bool bVar23;\n  byte bVar24;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  string *local_44;\n  undefined **local_40;\n  undefined4 local_38;\n  string sect_name;\n  \n  bVar24 = 0;\n  local_48 = &_GLOBAL_OFFSET_TABLE_;\n  pRVar8 = make_object(this,(Dwp_output_file *)0x0);\n  local_50[0] = (pRVar8->super_Object).shnum_;\n  p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n  this->obj_ = pRVar8;\n  p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish;\n  uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;\n  iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset +\n           ((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14) * 8;\n  if (local_50[0] < iVar12 - uVar10) {\n    iVar9 = uVar10 + local_50[0];\n    iVar12 = iVar9 + 0x1f;\n    if (-1 < iVar9) {\n      iVar12 = iVar9;\n    }\n    p_Var14 = p_Var14 + (iVar12 >> 5);\n    uVar10 = iVar9 % 0x20;\n    if ((int)uVar10 < 0) {\n      uVar10 = uVar10 + 0x20;\n      p_Var14 = p_Var14 + -1;\n    }\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var14;\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = uVar10;\n  }\n  else {\n    std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false);\n  }\n  uVar10 = local_50[0];\n  pSVar3 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n           _M_finish;\n  pSVar4 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n           _M_start;\n  uVar11 = (int)pSVar3 - (int)pSVar4 >> 3;\n  if (uVar11 < local_50[0]) {\n    std::vector<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>::_M_default_append\n              (&this->sect_offsets_,local_50[0] - uVar11);\n  }\n  else if ((local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)) {\n    (this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n    _M_finish = pSVar4;\n  }\n  puVar17 = auStack_5c;\n  if (1 < uVar10) {\n    local_50[1] = 0;\n    uVar10 = 1;\n    local_44 = &sect_name;\n    local_40 = local_48 + -0x43a8c;\n    puVar16 = auStack_5c;\n    do {\n      piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n      iVar12 = *piVar5;\n      *(uint *)(puVar16 + -0xc) = uVar10;\n      *(int **)(puVar16 + -0x10) = piVar5;\n      pcVar6 = *(code **)(iVar12 + 0x50);\n      *(undefined4 *)(puVar16 + -0x14) = 0x38f61;\n      iVar12 = (*pcVar6)();\n      puVar17 = puVar16;\n      if (iVar12 == 1) {\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }\nLAB_00039015:\n      uVar10 = uVar10 + 1;\n      puVar16 = puVar17;\n    } while (uVar10 < *(uint *)(puVar17 + 0xc));\n    if (*(int *)(puVar17 + 0x10) != 0) {\n      *(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);\n      *(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);\n      *(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);\n      *(undefined4 *)(puVar17 + -0x14) = 0x3903f;\n      bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8));\n      return CONCAT31(extraout_var,bVar21);\n    }\n  }\n  uVar7 = **(undefined4 **)(puVar17 + 0x60);\n  *(int *)(puVar17 + -0x10) = *(int *)(puVar17 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar17 + -0x14) = 0x39108;\n  uVar13 = gettext();\n  *(undefined4 *)(puVar17 + -0xc) = uVar7;\n  *(undefined4 *)(puVar17 + -0x10) = uVar13;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar17 + -0x14) = &UNK_00039111;\n  gold_fatal(*(char **)(puVar17 + -0x10));\n}\n\n" comment comment comment (function_definition "int __thiscall\ngold::Dwo_file::verify\n          (Dwo_file *this,EVP_PKEY_CTX *ctx,uchar *sig,size_t siglen,uchar *tbs,size_t tbslen)\n\n{\n  _Bit_iterator *p_Var1;\n  uint *puVar2;\n  pointer pSVar3;\n  pointer pSVar4;\n  int *piVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  Relobj *pRVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined3 extraout_var;\n  undefined4 uVar13;\n  _Bit_type *p_Var14;\n  byte *pbVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  byte *pbVar18;\n  byte *pbVar19;\n  undefined1 uVar20;\n  bool bVar21;\n  undefined1 uVar22;\n  bool bVar23;\n  byte bVar24;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  string *local_44;\n  undefined **local_40;\n  undefined4 local_38;\n  string sect_name;\n  \n  bVar24 = 0;\n  local_48 = &_GLOBAL_OFFSET_TABLE_;\n  pRVar8 = make_object(this,(Dwp_output_file *)0x0);\n  local_50[0] = (pRVar8->super_Object).shnum_;\n  p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n  this->obj_ = pRVar8;\n  p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish;\n  uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;\n  iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset +\n           ((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14) * 8;\n  if (local_50[0] < iVar12 - uVar10) {\n    iVar9 = uVar10 + local_50[0];\n    iVar12 = iVar9 + 0x1f;\n    if (-1 < iVar9) {\n      iVar12 = iVar9;\n    }\n    p_Var14 = p_Var14 + (iVar12 >> 5);\n    uVar10 = iVar9 % 0x20;\n    if ((int)uVar10 < 0) {\n      uVar10 = uVar10 + 0x20;\n      p_Var14 = p_Var14 + -1;\n    }\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var14;\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = uVar10;\n  }\n  else {\n    std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false);\n  }\n  uVar10 = local_50[0];\n  pSVar3 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n           _M_finish;\n  pSVar4 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n           _M_start;\n  uVar11 = (int)pSVar3 - (int)pSVar4 >> 3;\n  if (uVar11 < local_50[0]) {\n    std::vector<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>::_M_default_append\n              (&this->sect_offsets_,local_50[0] - uVar11);\n  }\n  else if ((local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)) {\n    (this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n    _M_finish = pSVar4;\n  }\n  puVar17 = auStack_5c;\n  if (1 < uVar10) {\n    local_50[1] = 0;\n    uVar10 = 1;\n    local_44 = &sect_name;\n    local_40 = local_48 + -0x43a8c;\n    puVar16 = auStack_5c;\n    do {\n      piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n      iVar12 = *piVar5;\n      *(uint *)(puVar16 + -0xc) = uVar10;\n      *(int **)(puVar16 + -0x10) = piVar5;\n      pcVar6 = *(code **)(iVar12 + 0x50);\n      *(undefined4 *)(puVar16 + -0x14) = 0x38f61;\n      iVar12 = (*pcVar6)();\n      puVar17 = puVar16;\n      if (iVar12 == 1) {\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }\nLAB_00039015:\n      uVar10 = uVar10 + 1;\n      puVar16 = puVar17;\n    } while (uVar10 < *(uint *)(puVar17 + 0xc));\n    if (*(int *)(puVar17 + 0x10) != 0) {\n      *(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);\n      *(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);\n      *(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);\n      *(undefined4 *)(puVar17 + -0x14) = 0x3903f;\n      bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8));\n      return CONCAT31(extraout_var,bVar21);\n    }\n  }\n  uVar7 = **(undefined4 **)(puVar17 + 0x60);\n  *(int *)(puVar17 + -0x10) = *(int *)(puVar17 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar17 + -0x14) = 0x39108;\n  uVar13 = gettext();\n  *(undefined4 *)(puVar17 + -0xc) = uVar7;\n  *(undefined4 *)(puVar17 + -0x10) = uVar13;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar17 + -0x14) = &UNK_00039111;\n  gold_fatal(*(char **)(puVar17 + -0x10));\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwo_file::" identifier : : identifier : :) (function_declarator "verify\n          (Dwo_file *this,EVP_PKEY_CTX *ctx,uchar *sig,size_t siglen,uchar *tbs,size_t tbslen)" identifier (parameter_list "(Dwo_file *this,EVP_PKEY_CTX *ctx,uchar *sig,size_t siglen,uchar *tbs,size_t tbslen)" ( (parameter_declaration "Dwo_file *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "EVP_PKEY_CTX *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) , (parameter_declaration "uchar *sig" type_identifier (pointer_declarator "*sig" * identifier)) , (parameter_declaration "size_t siglen" primitive_type identifier) , (parameter_declaration "uchar *tbs" type_identifier (pointer_declarator "*tbs" * identifier)) , (parameter_declaration "size_t tbslen" primitive_type identifier) ))) (compound_statement "{\n  _Bit_iterator *p_Var1;\n  uint *puVar2;\n  pointer pSVar3;\n  pointer pSVar4;\n  int *piVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  Relobj *pRVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined3 extraout_var;\n  undefined4 uVar13;\n  _Bit_type *p_Var14;\n  byte *pbVar15;\n  undefined1 *puVar16;\n  undefined1 *puVar17;\n  byte *pbVar18;\n  byte *pbVar19;\n  undefined1 uVar20;\n  bool bVar21;\n  undefined1 uVar22;\n  bool bVar23;\n  byte bVar24;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  string *local_44;\n  undefined **local_40;\n  undefined4 local_38;\n  string sect_name;\n  \n  bVar24 = 0;\n  local_48 = &_GLOBAL_OFFSET_TABLE_;\n  pRVar8 = make_object(this,(Dwp_output_file *)0x0);\n  local_50[0] = (pRVar8->super_Object).shnum_;\n  p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n  this->obj_ = pRVar8;\n  p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish;\n  uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;\n  iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset +\n           ((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14) * 8;\n  if (local_50[0] < iVar12 - uVar10) {\n    iVar9 = uVar10 + local_50[0];\n    iVar12 = iVar9 + 0x1f;\n    if (-1 < iVar9) {\n      iVar12 = iVar9;\n    }\n    p_Var14 = p_Var14 + (iVar12 >> 5);\n    uVar10 = iVar9 % 0x20;\n    if ((int)uVar10 < 0) {\n      uVar10 = uVar10 + 0x20;\n      p_Var14 = p_Var14 + -1;\n    }\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var14;\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = uVar10;\n  }\n  else {\n    std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false);\n  }\n  uVar10 = local_50[0];\n  pSVar3 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n           _M_finish;\n  pSVar4 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n           _M_start;\n  uVar11 = (int)pSVar3 - (int)pSVar4 >> 3;\n  if (uVar11 < local_50[0]) {\n    std::vector<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>::_M_default_append\n              (&this->sect_offsets_,local_50[0] - uVar11);\n  }\n  else if ((local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)) {\n    (this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n    _M_finish = pSVar4;\n  }\n  puVar17 = auStack_5c;\n  if (1 < uVar10) {\n    local_50[1] = 0;\n    uVar10 = 1;\n    local_44 = &sect_name;\n    local_40 = local_48 + -0x43a8c;\n    puVar16 = auStack_5c;\n    do {\n      piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n      iVar12 = *piVar5;\n      *(uint *)(puVar16 + -0xc) = uVar10;\n      *(int **)(puVar16 + -0x10) = piVar5;\n      pcVar6 = *(code **)(iVar12 + 0x50);\n      *(undefined4 *)(puVar16 + -0x14) = 0x38f61;\n      iVar12 = (*pcVar6)();\n      puVar17 = puVar16;\n      if (iVar12 == 1) {\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }\nLAB_00039015:\n      uVar10 = uVar10 + 1;\n      puVar16 = puVar17;\n    } while (uVar10 < *(uint *)(puVar17 + 0xc));\n    if (*(int *)(puVar17 + 0x10) != 0) {\n      *(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);\n      *(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);\n      *(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);\n      *(undefined4 *)(puVar17 + -0x14) = 0x3903f;\n      bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8));\n      return CONCAT31(extraout_var,bVar21);\n    }\n  }\n  uVar7 = **(undefined4 **)(puVar17 + 0x60);\n  *(int *)(puVar17 + -0x10) = *(int *)(puVar17 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar17 + -0x14) = 0x39108;\n  uVar13 = gettext();\n  *(undefined4 *)(puVar17 + -0xc) = uVar7;\n  *(undefined4 *)(puVar17 + -0x10) = uVar13;\n                    /* WARNING: Subroutine does not return */\n  *(undefined **)(puVar17 + -0x14) = &UNK_00039111;\n  gold_fatal(*(char **)(puVar17 + -0x10));\n}" { (declaration "_Bit_iterator *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "pointer pSVar3;" type_identifier identifier ;) (declaration "pointer pSVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "Relobj *pRVar8;" type_identifier (pointer_declarator "*pRVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "_Bit_type *p_Var14;" type_identifier (pointer_declarator "*p_Var14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined1 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "undefined1 uVar20;" type_identifier identifier ;) (declaration "bool bVar21;" primitive_type identifier ;) (declaration "undefined1 uVar22;" type_identifier identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "byte bVar24;" type_identifier identifier ;) (declaration "uint auStack_64 [2];" type_identifier (array_declarator "auStack_64 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_5c [12];" type_identifier (array_declarator "auStack_5c [12]" identifier [ number_literal ]) ;) (declaration "uint local_50 [2];" type_identifier (array_declarator "local_50 [2]" identifier [ number_literal ]) ;) (declaration "undefined **local_48;" type_identifier (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier)) ;) (declaration "string *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "undefined **local_40;" type_identifier (pointer_declarator "**local_40" * (pointer_declarator "*local_40" * identifier)) ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "string sect_name;" type_identifier identifier ;) (expression_statement "bVar24 = 0;" (assignment_expression "bVar24 = 0" identifier = number_literal) ;) (expression_statement "local_48 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "local_48 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "pRVar8 = make_object(this,(Dwp_output_file *)0x0);" (assignment_expression "pRVar8 = make_object(this,(Dwp_output_file *)0x0)" identifier = (call_expression "make_object(this,(Dwp_output_file *)0x0)" identifier (argument_list "(this,(Dwp_output_file *)0x0)" ( identifier , (cast_expression "(Dwp_output_file *)0x0" ( (type_descriptor "Dwp_output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "local_50[0] = (pRVar8->super_Object).shnum_;" (assignment_expression "local_50[0] = (pRVar8->super_Object).shnum_" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (field_expression "(pRVar8->super_Object).shnum_" (parenthesized_expression "(pRVar8->super_Object)" ( (field_expression "pRVar8->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;" (field_expression "p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p" (field_expression "p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base" (field_expression "p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start" (field_expression "p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data" (field_expression "p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_" (binary_expression "p_Var14 = (this->is_compressed_).super__Bvector_base<std::allocator<bool" (assignment_expression "p_Var14 = (this->is_compressed_).super__Bvector_base<std" identifier = (binary_expression "(this->is_compressed_).super__Bvector_base<std" (field_expression "(this->is_compressed_).super__Bvector_base" (parenthesized_expression "(this->is_compressed_)" ( (field_expression "this->is_compressed_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "this->obj_ = pRVar8;" (assignment_expression "this->obj_ = pRVar8" (field_expression "this->obj_" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish;" (field_expression "p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish" (field_expression "p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data" (field_expression "p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool>_" (binary_expression "p_Var1 = &(this->is_compressed_).super__Bvector_base<std::allocator<bool" (assignment_expression "p_Var1 = &(this->is_compressed_).super__Bvector_base<std" identifier = (binary_expression "&(this->is_compressed_).super__Bvector_base<std" (pointer_expression "&(this->is_compressed_).super__Bvector_base" & (field_expression "(this->is_compressed_).super__Bvector_base" (parenthesized_expression "(this->is_compressed_)" ( (field_expression "this->is_compressed_" identifier -> field_identifier) )) . field_identifier)) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;" (field_expression "uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset" (field_expression "uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_start.super__Bit_iterator_base" (field_expression "uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_start" (field_expression "uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data" (field_expression "uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_" (binary_expression "uVar10 = (this->is_compressed_).super__Bvector_base<std::allocator<bool" (assignment_expression "uVar10 = (this->is_compressed_).super__Bvector_base<std" identifier = (binary_expression "(this->is_compressed_).super__Bvector_base<std" (field_expression "(this->is_compressed_).super__Bvector_base" (parenthesized_expression "(this->is_compressed_)" ( (field_expression "this->is_compressed_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset +\n           ((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14) * 8;" (binary_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset +\n           ((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14) * 8" (field_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset" (field_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data._M_finish" (field_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n           super__Bvector_impl_data" (field_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool>_" (binary_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std::allocator<bool" (assignment_expression "iVar12 = (this->is_compressed_).super__Bvector_base<std" identifier = (binary_expression "(this->is_compressed_).super__Bvector_base<std" (field_expression "(this->is_compressed_).super__Bvector_base" (parenthesized_expression "(this->is_compressed_)" ( (field_expression "this->is_compressed_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) + (binary_expression "((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14) * 8" (parenthesized_expression "((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14)" ( (binary_expression "(int)(p_Var1->super__Bit_iterator_base)._M_p - (int)p_Var14" (cast_expression "(int)(p_Var1->super__Bit_iterator_base)._M_p" ( (type_descriptor "int" primitive_type) ) (field_expression "(p_Var1->super__Bit_iterator_base)._M_p" (parenthesized_expression "(p_Var1->super__Bit_iterator_base)" ( (field_expression "p_Var1->super__Bit_iterator_base" identifier -> field_identifier) )) . field_identifier)) - (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) ;) (if_statement "if (local_50[0] < iVar12 - uVar10) {\n    iVar9 = uVar10 + local_50[0];\n    iVar12 = iVar9 + 0x1f;\n    if (-1 < iVar9) {\n      iVar12 = iVar9;\n    }\n    p_Var14 = p_Var14 + (iVar12 >> 5);\n    uVar10 = iVar9 % 0x20;\n    if ((int)uVar10 < 0) {\n      uVar10 = uVar10 + 0x20;\n      p_Var14 = p_Var14 + -1;\n    }\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var14;\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = uVar10;\n  }\n  else {\n    std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false);\n  }" if (parenthesized_expression "(local_50[0] < iVar12 - uVar10)" ( (binary_expression "local_50[0] < iVar12 - uVar10" (subscript_expression "local_50[0]" identifier [ number_literal ]) < (binary_expression "iVar12 - uVar10" identifier - identifier)) )) (compound_statement "{\n    iVar9 = uVar10 + local_50[0];\n    iVar12 = iVar9 + 0x1f;\n    if (-1 < iVar9) {\n      iVar12 = iVar9;\n    }\n    p_Var14 = p_Var14 + (iVar12 >> 5);\n    uVar10 = iVar9 % 0x20;\n    if ((int)uVar10 < 0) {\n      uVar10 = uVar10 + 0x20;\n      p_Var14 = p_Var14 + -1;\n    }\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var14;\n    (this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = uVar10;\n  }" { (expression_statement "iVar9 = uVar10 + local_50[0];" (assignment_expression "iVar9 = uVar10 + local_50[0]" identifier = (binary_expression "uVar10 + local_50[0]" identifier + (subscript_expression "local_50[0]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = iVar9 + 0x1f;" (assignment_expression "iVar12 = iVar9 + 0x1f" identifier = (binary_expression "iVar9 + 0x1f" identifier + number_literal)) ;) (if_statement "if (-1 < iVar9) {\n      iVar12 = iVar9;\n    }" if (parenthesized_expression "(-1 < iVar9)" ( (binary_expression "-1 < iVar9" number_literal < identifier) )) (compound_statement "{\n      iVar12 = iVar9;\n    }" { (expression_statement "iVar12 = iVar9;" (assignment_expression "iVar12 = iVar9" identifier = identifier) ;) })) (expression_statement "p_Var14 = p_Var14 + (iVar12 >> 5);" (assignment_expression "p_Var14 = p_Var14 + (iVar12 >> 5)" identifier = (binary_expression "p_Var14 + (iVar12 >> 5)" identifier + (parenthesized_expression "(iVar12 >> 5)" ( (binary_expression "iVar12 >> 5" identifier >> number_literal) )))) ;) (expression_statement "uVar10 = iVar9 % 0x20;" (assignment_expression "uVar10 = iVar9 % 0x20" identifier = (binary_expression "iVar9 % 0x20" identifier % number_literal)) ;) (if_statement "if ((int)uVar10 < 0) {\n      uVar10 = uVar10 + 0x20;\n      p_Var14 = p_Var14 + -1;\n    }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar10 = uVar10 + 0x20;\n      p_Var14 = p_Var14 + -1;\n    }" { (expression_statement "uVar10 = uVar10 + 0x20;" (assignment_expression "uVar10 = uVar10 + 0x20" identifier = (binary_expression "uVar10 + 0x20" identifier + number_literal)) ;) (expression_statement "p_Var14 = p_Var14 + -1;" (assignment_expression "p_Var14 = p_Var14 + -1" identifier = (binary_expression "p_Var14 + -1" identifier + number_literal)) ;) })) (expression_statement "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var14;" (assignment_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = p_Var14" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_" (binary_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool" (binary_expression "(this->is_compressed_).super__Bvector_base<std" (field_expression "(this->is_compressed_).super__Bvector_base" (parenthesized_expression "(this->is_compressed_)" ( (field_expression "this->is_compressed_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = uVar10;" (assignment_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = uVar10" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data._M_finish" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n    super__Bvector_impl_data" (field_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool>_" (binary_expression "(this->is_compressed_).super__Bvector_base<std::allocator<bool" (binary_expression "(this->is_compressed_).super__Bvector_base<std" (field_expression "(this->is_compressed_).super__Bvector_base" (parenthesized_expression "(this->is_compressed_)" ( (field_expression "this->is_compressed_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) }) (else_clause "else {\n    std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false);\n  }" else (compound_statement "{\n    std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false);\n  }" { (labeled_statement "std::vector<bool,_std::allocator<bool>_>::_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false);" statement_identifier (ERROR "::vector<bool,_std::allocator<bool>_>:" : : (comma_expression "vector<bool,_std" (binary_expression "vector<bool" identifier < identifier) , identifier) : : (binary_expression "allocator<bool>_" (binary_expression "allocator<bool" identifier < identifier) > identifier) > :) : (expression_statement "_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false);" (call_expression "_M_fill_insert\n              (&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false)" identifier (argument_list "(&this->is_compressed_,(iterator)p_Var1->super__Bit_iterator_base,\n               (uVar10 - iVar12) + local_50[0],false)" ( (pointer_expression "&this->is_compressed_" & (field_expression "this->is_compressed_" identifier -> field_identifier)) , (cast_expression "(iterator)p_Var1->super__Bit_iterator_base" ( (type_descriptor "iterator" type_identifier) ) (field_expression "p_Var1->super__Bit_iterator_base" identifier -> field_identifier)) , (binary_expression "(uVar10 - iVar12) + local_50[0]" (parenthesized_expression "(uVar10 - iVar12)" ( (binary_expression "uVar10 - iVar12" identifier - identifier) )) + (subscript_expression "local_50[0]" identifier [ number_literal ])) , false ))) ;)) }))) (expression_statement "uVar10 = local_50[0];" (assignment_expression "uVar10 = local_50[0]" identifier = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (ERROR "pSVar3 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std::allocator<gold::" (comma_expression "pSVar3 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std" (assignment_expression "pSVar3 = (this->sect_offsets_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->sect_offsets_).\n           super__Vector_base<gold" (field_expression "(this->sect_offsets_).\n           super__Vector_base" (parenthesized_expression "(this->sect_offsets_)" ( (field_expression "this->sect_offsets_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Section_bounds" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Section_bounds>_>._M_impl.\n           _M_finish;" (field_expression "Section_bounds>_>._M_impl.\n           _M_finish" (field_expression "Section_bounds>_>._M_impl" (binary_expression "Section_bounds>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "pSVar4 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std::allocator<gold::" (comma_expression "pSVar4 = (this->sect_offsets_).\n           super__Vector_base<gold::Section_bounds,_std" (assignment_expression "pSVar4 = (this->sect_offsets_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->sect_offsets_).\n           super__Vector_base<gold" (field_expression "(this->sect_offsets_).\n           super__Vector_base" (parenthesized_expression "(this->sect_offsets_)" ( (field_expression "this->sect_offsets_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Section_bounds" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Section_bounds>_>._M_impl.\n           _M_start;" (field_expression "Section_bounds>_>._M_impl.\n           _M_start" (field_expression "Section_bounds>_>._M_impl" (binary_expression "Section_bounds>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "uVar11 = (int)pSVar3 - (int)pSVar4 >> 3;" (assignment_expression "uVar11 = (int)pSVar3 - (int)pSVar4 >> 3" identifier = (binary_expression "(int)pSVar3 - (int)pSVar4 >> 3" (binary_expression "(int)pSVar3 - (int)pSVar4" (cast_expression "(int)pSVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pSVar4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar11 < local_50[0]) {\n    std::vector<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>::_M_default_append\n              (&this->sect_offsets_,local_50[0] - uVar11);\n  }\n  else if ((local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)) {\n    (this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n    _M_finish = pSVar4;\n  }" if (parenthesized_expression "(uVar11 < local_50[0])" ( (binary_expression "uVar11 < local_50[0]" identifier < (subscript_expression "local_50[0]" identifier [ number_literal ])) )) (compound_statement "{\n    std::vector<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>::_M_default_append\n              (&this->sect_offsets_,local_50[0] - uVar11);\n  }" { (labeled_statement "std::vector<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>::_M_default_append\n              (&this->sect_offsets_,local_50[0] - uVar11);" statement_identifier (ERROR "::vector<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>:" : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Section_bounds,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Section_bounds>_" identifier > identifier) > :) : (expression_statement "_M_default_append\n              (&this->sect_offsets_,local_50[0] - uVar11);" (call_expression "_M_default_append\n              (&this->sect_offsets_,local_50[0] - uVar11)" identifier (argument_list "(&this->sect_offsets_,local_50[0] - uVar11)" ( (pointer_expression "&this->sect_offsets_" & (field_expression "this->sect_offsets_" identifier -> field_identifier)) , (binary_expression "local_50[0] - uVar11" (subscript_expression "local_50[0]" identifier [ number_literal ]) - identifier) ))) ;)) }) (else_clause "else if ((local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)) {\n    (this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n    _M_finish = pSVar4;\n  }" else (if_statement "if ((local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)) {\n    (this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n    _M_finish = pSVar4;\n  }" if (parenthesized_expression "((local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4))" ( (binary_expression "(local_50[0] < uVar11) && (pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)" (parenthesized_expression "(local_50[0] < uVar11)" ( (binary_expression "local_50[0] < uVar11" (subscript_expression "local_50[0]" identifier [ number_literal ]) < identifier) )) && (parenthesized_expression "(pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4)" ( (comma_expression "pSVar4 = pSVar4 + local_50[0], pSVar3 != pSVar4" (assignment_expression "pSVar4 = pSVar4 + local_50[0]" identifier = (binary_expression "pSVar4 + local_50[0]" identifier + (subscript_expression "local_50[0]" identifier [ number_literal ]))) , (binary_expression "pSVar3 != pSVar4" identifier != identifier)) ))) )) (compound_statement "{\n    (this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std::allocator<gold::Section_bounds>_>._M_impl.\n    _M_finish = pSVar4;\n  }" { (ERROR "(this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std::allocator<gold::" (comma_expression "(this->sect_offsets_).\n    super__Vector_base<gold::Section_bounds,_std" (binary_expression "(this->sect_offsets_).\n    super__Vector_base<gold" (field_expression "(this->sect_offsets_).\n    super__Vector_base" (parenthesized_expression "(this->sect_offsets_)" ( (field_expression "this->sect_offsets_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Section_bounds" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Section_bounds>_>._M_impl.\n    _M_finish = pSVar4;" (assignment_expression "Section_bounds>_>._M_impl.\n    _M_finish = pSVar4" (field_expression "Section_bounds>_>._M_impl.\n    _M_finish" (field_expression "Section_bounds>_>._M_impl" (binary_expression "Section_bounds>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) })))) (expression_statement "puVar17 = auStack_5c;" (assignment_expression "puVar17 = auStack_5c" identifier = identifier) ;) (if_statement "if (1 < uVar10) {\n    local_50[1] = 0;\n    uVar10 = 1;\n    local_44 = &sect_name;\n    local_40 = local_48 + -0x43a8c;\n    puVar16 = auStack_5c;\n    do {\n      piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n      iVar12 = *piVar5;\n      *(uint *)(puVar16 + -0xc) = uVar10;\n      *(int **)(puVar16 + -0x10) = piVar5;\n      pcVar6 = *(code **)(iVar12 + 0x50);\n      *(undefined4 *)(puVar16 + -0x14) = 0x38f61;\n      iVar12 = (*pcVar6)();\n      puVar17 = puVar16;\n      if (iVar12 == 1) {\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }\nLAB_00039015:\n      uVar10 = uVar10 + 1;\n      puVar16 = puVar17;\n    } while (uVar10 < *(uint *)(puVar17 + 0xc));\n    if (*(int *)(puVar17 + 0x10) != 0) {\n      *(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);\n      *(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);\n      *(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);\n      *(undefined4 *)(puVar17 + -0x14) = 0x3903f;\n      bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8));\n      return CONCAT31(extraout_var,bVar21);\n    }\n  }" if (parenthesized_expression "(1 < uVar10)" ( (binary_expression "1 < uVar10" number_literal < identifier) )) (compound_statement "{\n    local_50[1] = 0;\n    uVar10 = 1;\n    local_44 = &sect_name;\n    local_40 = local_48 + -0x43a8c;\n    puVar16 = auStack_5c;\n    do {\n      piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n      iVar12 = *piVar5;\n      *(uint *)(puVar16 + -0xc) = uVar10;\n      *(int **)(puVar16 + -0x10) = piVar5;\n      pcVar6 = *(code **)(iVar12 + 0x50);\n      *(undefined4 *)(puVar16 + -0x14) = 0x38f61;\n      iVar12 = (*pcVar6)();\n      puVar17 = puVar16;\n      if (iVar12 == 1) {\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }\nLAB_00039015:\n      uVar10 = uVar10 + 1;\n      puVar16 = puVar17;\n    } while (uVar10 < *(uint *)(puVar17 + 0xc));\n    if (*(int *)(puVar17 + 0x10) != 0) {\n      *(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);\n      *(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);\n      *(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);\n      *(undefined4 *)(puVar17 + -0x14) = 0x3903f;\n      bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8));\n      return CONCAT31(extraout_var,bVar21);\n    }\n  }" { (expression_statement "local_50[1] = 0;" (assignment_expression "local_50[1] = 0" (subscript_expression "local_50[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar10 = 1;" (assignment_expression "uVar10 = 1" identifier = number_literal) ;) (expression_statement "local_44 = &sect_name;" (assignment_expression "local_44 = &sect_name" identifier = (pointer_expression "&sect_name" & identifier)) ;) (expression_statement "local_40 = local_48 + -0x43a8c;" (assignment_expression "local_40 = local_48 + -0x43a8c" identifier = (binary_expression "local_48 + -0x43a8c" identifier + number_literal)) ;) (expression_statement "puVar16 = auStack_5c;" (assignment_expression "puVar16 = auStack_5c" identifier = identifier) ;) (do_statement "do {\n      piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n      iVar12 = *piVar5;\n      *(uint *)(puVar16 + -0xc) = uVar10;\n      *(int **)(puVar16 + -0x10) = piVar5;\n      pcVar6 = *(code **)(iVar12 + 0x50);\n      *(undefined4 *)(puVar16 + -0x14) = 0x38f61;\n      iVar12 = (*pcVar6)();\n      puVar17 = puVar16;\n      if (iVar12 == 1) {\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }\nLAB_00039015:\n      uVar10 = uVar10 + 1;\n      puVar16 = puVar17;\n    } while (uVar10 < *(uint *)(puVar17 + 0xc));" do (compound_statement "{\n      piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n      iVar12 = *piVar5;\n      *(uint *)(puVar16 + -0xc) = uVar10;\n      *(int **)(puVar16 + -0x10) = piVar5;\n      pcVar6 = *(code **)(iVar12 + 0x50);\n      *(undefined4 *)(puVar16 + -0x14) = 0x38f61;\n      iVar12 = (*pcVar6)();\n      puVar17 = puVar16;\n      if (iVar12 == 1) {\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }\nLAB_00039015:\n      uVar10 = uVar10 + 1;\n      puVar16 = puVar17;\n    }" { (expression_statement "piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);" (assignment_expression "piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(puVar16 + 0x60) + 4)" * (cast_expression "(int **)(*(int *)(puVar16 + 0x60) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x60) + 4)" ( (binary_expression "*(int *)(puVar16 + 0x60) + 4" (pointer_expression "*(int *)(puVar16 + 0x60)" * (cast_expression "(int *)(puVar16 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x60)" ( (binary_expression "puVar16 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar12 = *piVar5;" (assignment_expression "iVar12 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "*(uint *)(puVar16 + -0xc) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -0xc) = uVar10" (pointer_expression "*(uint *)(puVar16 + -0xc)" * (cast_expression "(uint *)(puVar16 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0x10) = piVar5;" (assignment_expression "*(int **)(puVar16 + -0x10) = piVar5" (pointer_expression "*(int **)(puVar16 + -0x10)" * (cast_expression "(int **)(puVar16 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar6 = *(code **)(iVar12 + 0x50);" (assignment_expression "pcVar6 = *(code **)(iVar12 + 0x50)" identifier = (pointer_expression "*(code **)(iVar12 + 0x50)" * (cast_expression "(code **)(iVar12 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0x50)" ( (binary_expression "iVar12 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x38f61;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x38f61" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = (*pcVar6)();" (assignment_expression "iVar12 = (*pcVar6)()" identifier = (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "puVar17 = puVar16;" (assignment_expression "puVar17 = puVar16" identifier = identifier) ;) (if_statement "if (iVar12 == 1) {\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }" if (parenthesized_expression "(iVar12 == 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar20 = puVar16 < (undefined1 *)0x4;\n        uVar22 = puVar16 == (undefined1 *)0x4;\n        piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);\n        iVar12 = *piVar5;\n        *(uint *)(puVar16 + -8) = uVar10;\n        *(int **)(puVar16 + -0xc) = piVar5;\n        *(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);\n        pcVar6 = *(code **)(iVar12 + 0x40);\n        *(undefined4 *)(puVar16 + -0x14) = 0x38f84;\n        (*pcVar6)();\n        iVar12 = 7;\n        pbVar15 = *(byte **)(puVar16 + 0x24);\n        pbVar18 = *(byte **)(puVar16 + 0x18);\n        pbVar19 = pbVar15;\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);\n        pbVar18 = pbVar15 + 7;\n        puVar17 = puVar16 + -4;\n        bVar21 = false;\n        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;\n        if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }\n        bVar21 = false;\n        iVar12 = 9;\n        pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);\n        uVar11 = *(uint *)(puVar16 + 0xc);\n        if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }\n        *(uint *)(puVar16 + 0xc) = uVar11;\n        puVar17 = puVar16 + -4;\n        if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }\n      }" { (expression_statement "uVar20 = puVar16 < (undefined1 *)0x4;" (assignment_expression "uVar20 = puVar16 < (undefined1 *)0x4" identifier = (binary_expression "puVar16 < (undefined1 *)0x4" identifier < (cast_expression "(undefined1 *)0x4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar22 = puVar16 == (undefined1 *)0x4;" (assignment_expression "uVar22 = puVar16 == (undefined1 *)0x4" identifier = (binary_expression "puVar16 == (undefined1 *)0x4" identifier == (cast_expression "(undefined1 *)0x4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4);" (assignment_expression "piVar5 = *(int **)(*(int *)(puVar16 + 0x60) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(puVar16 + 0x60) + 4)" * (cast_expression "(int **)(*(int *)(puVar16 + 0x60) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x60) + 4)" ( (binary_expression "*(int *)(puVar16 + 0x60) + 4" (pointer_expression "*(int *)(puVar16 + 0x60)" * (cast_expression "(int *)(puVar16 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x60)" ( (binary_expression "puVar16 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar12 = *piVar5;" (assignment_expression "iVar12 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "*(uint *)(puVar16 + -8) = uVar10;" (assignment_expression "*(uint *)(puVar16 + -8) = uVar10" (pointer_expression "*(uint *)(puVar16 + -8)" * (cast_expression "(uint *)(puVar16 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar16 + -0xc) = piVar5;" (assignment_expression "*(int **)(puVar16 + -0xc) = piVar5" (pointer_expression "*(int **)(puVar16 + -0xc)" * (cast_expression "(int **)(puVar16 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0xc)" ( (binary_expression "puVar16 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18);" (assignment_expression "*(undefined4 *)(puVar16 + -0x10) = *(undefined4 *)(puVar16 + 0x18)" (pointer_expression "*(undefined4 *)(puVar16 + -0x10)" * (cast_expression "(undefined4 *)(puVar16 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x10)" ( (binary_expression "puVar16 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar16 + 0x18)" * (cast_expression "(undefined4 *)(puVar16 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = *(code **)(iVar12 + 0x40);" (assignment_expression "pcVar6 = *(code **)(iVar12 + 0x40)" identifier = (pointer_expression "*(code **)(iVar12 + 0x40)" * (cast_expression "(code **)(iVar12 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0x40)" ( (binary_expression "iVar12 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x14) = 0x38f84;" (assignment_expression "*(undefined4 *)(puVar16 + -0x14) = 0x38f84" (pointer_expression "*(undefined4 *)(puVar16 + -0x14)" * (cast_expression "(undefined4 *)(puVar16 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar12 = 7;" (assignment_expression "iVar12 = 7" identifier = number_literal) ;) (expression_statement "pbVar15 = *(byte **)(puVar16 + 0x24);" (assignment_expression "pbVar15 = *(byte **)(puVar16 + 0x24)" identifier = (pointer_expression "*(byte **)(puVar16 + 0x24)" * (cast_expression "(byte **)(puVar16 + 0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pbVar18 = *(byte **)(puVar16 + 0x18);" (assignment_expression "pbVar18 = *(byte **)(puVar16 + 0x18)" identifier = (pointer_expression "*(byte **)(puVar16 + 0x18)" * (cast_expression "(byte **)(puVar16 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x18)" ( (binary_expression "puVar16 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "pbVar19 = pbVar15;" (assignment_expression "pbVar19 = pbVar15" identifier = identifier) ;) (do_statement "do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while ((bool)uVar22);" do (compound_statement "{\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          uVar20 = *pbVar18 < *pbVar19;\n          uVar22 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "uVar20 = *pbVar18 < *pbVar19;" (assignment_expression "uVar20 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "uVar22 = *pbVar18 == *pbVar19;" (assignment_expression "uVar22 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar22)" ( (cast_expression "(bool)uVar22" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (expression_statement "pbVar18 = pbVar15 + 7;" (assignment_expression "pbVar18 = pbVar15 + 7" identifier = (binary_expression "pbVar15 + 7" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar16 + -4;" (assignment_expression "puVar17 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;" (assignment_expression "bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20" identifier = (binary_expression "(!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20" (parenthesized_expression "(!(bool)uVar20 && !(bool)uVar22)" ( (binary_expression "!(bool)uVar20 && !(bool)uVar22" (unary_expression "!(bool)uVar20" ! (cast_expression "(bool)uVar20" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar22" ! (cast_expression "(bool)uVar22" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar20" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (if_statement "if (!bVar23) {\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n          iVar12 = 8;\n          pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);\n          pbVar19 = pbVar15;\n          do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);\n          if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);\n          *puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);\n          bVar23 = *puVar2 == 0;\n          pbVar18 = pbVar15 + 8;\n          pbVar15 = *(byte **)(puVar16 + 0x24);\n        }" { (expression_statement "iVar12 = 8;" (assignment_expression "iVar12 = 8" identifier = number_literal) ;) (expression_statement "pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28);" (assignment_expression "pbVar18 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28)" identifier = (cast_expression "(byte *)(*(int *)(puVar16 + 0x10) + -0x10ea28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x10) + -0x10ea28)" ( (binary_expression "*(int *)(puVar16 + 0x10) + -0x10ea28" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar19 = pbVar15;" (assignment_expression "pbVar19 = pbVar15" identifier = identifier) ;) (do_statement "do {\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          } while (bVar23);" do (compound_statement "{\n            if (iVar12 == 0) break;\n            iVar12 = iVar12 + -1;\n            bVar21 = *pbVar18 < *pbVar19;\n            bVar23 = *pbVar18 == *pbVar19;\n            pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n            pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n          }" { (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (if_statement "if ((!bVar21 && !bVar23) != bVar21) {\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }" if (parenthesized_expression "((!bVar21 && !bVar23) != bVar21)" ( (binary_expression "(!bVar21 && !bVar23) != bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" ( (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) != identifier) )) (compound_statement "{\n            if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }\n            goto LAB_00039015;\n          }" { (if_statement "if (pbVar15 != puVar16 + 0x2c) {\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }" if (parenthesized_expression "(pbVar15 != puVar16 + 0x2c)" ( (binary_expression "pbVar15 != puVar16 + 0x2c" identifier != (binary_expression "puVar16 + 0x2c" identifier + number_literal)) )) (compound_statement "{\n              *(byte **)(puVar16 + -0x14) = pbVar15;\n              *(undefined4 *)(puVar16 + -0x18) = 0x39065;\n              operator_delete(*(void **)(puVar16 + -0x14));\n              puVar17 = puVar16 + -4;\n            }" { (expression_statement "*(byte **)(puVar16 + -0x14) = pbVar15;" (assignment_expression "*(byte **)(puVar16 + -0x14) = pbVar15" (pointer_expression "*(byte **)(puVar16 + -0x14)" * (cast_expression "(byte **)(puVar16 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x39065;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x39065" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)(puVar16 + -0x14));" (call_expression "operator_delete(*(void **)(puVar16 + -0x14))" identifier (argument_list "(*(void **)(puVar16 + -0x14))" ( (pointer_expression "*(void **)(puVar16 + -0x14)" * (cast_expression "(void **)(puVar16 + -0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) ))) ;) (expression_statement "puVar17 = puVar16 + -4;" (assignment_expression "puVar17 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) })) (goto_statement "goto LAB_00039015;" goto statement_identifier ;) })) (expression_statement "puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4);" (assignment_expression "puVar2 = (uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4)" identifier = (cast_expression "(uint *)(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4)" ( (binary_expression "*(int *)(*(int *)(puVar16 + 0x5c) + 0xc) + (uVar10 >> 5) * 4" (pointer_expression "*(int *)(*(int *)(puVar16 + 0x5c) + 0xc)" * (cast_expression "(int *)(*(int *)(puVar16 + 0x5c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x5c) + 0xc)" ( (binary_expression "*(int *)(puVar16 + 0x5c) + 0xc" (pointer_expression "*(int *)(puVar16 + 0x5c)" * (cast_expression "(int *)(puVar16 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x5c)" ( (binary_expression "puVar16 + 0x5c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "(uVar10 >> 5) * 4" (parenthesized_expression "(uVar10 >> 5)" ( (binary_expression "uVar10 >> 5" identifier >> number_literal) )) * number_literal)) )))) ;) (expression_statement "*puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f);" (assignment_expression "*puVar2 = *puVar2 | 1 << ((byte)uVar10 & 0x1f)" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 1 << ((byte)uVar10 & 0x1f)" (pointer_expression "*puVar2" * identifier) | (binary_expression "1 << ((byte)uVar10 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar10 & 0x1f)" ( (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "bVar23 = *puVar2 == 0;" (assignment_expression "bVar23 = *puVar2 == 0" identifier = (binary_expression "*puVar2 == 0" (pointer_expression "*puVar2" * identifier) == number_literal)) ;) (expression_statement "pbVar18 = pbVar15 + 8;" (assignment_expression "pbVar18 = pbVar15 + 8" identifier = (binary_expression "pbVar15 + 8" identifier + number_literal)) ;) (expression_statement "pbVar15 = *(byte **)(puVar16 + 0x24);" (assignment_expression "pbVar15 = *(byte **)(puVar16 + 0x24)" identifier = (pointer_expression "*(byte **)(puVar16 + 0x24)" * (cast_expression "(byte **)(puVar16 + 0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x24)" ( (binary_expression "puVar16 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "iVar12 = 9;" (assignment_expression "iVar12 = 9" identifier = number_literal) ;) (expression_statement "pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0);" (assignment_expression "pbVar19 = (byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0)" identifier = (cast_expression "(byte *)(*(int *)(puVar16 + 0x10) + -0x10eaa0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0x10) + -0x10eaa0)" ( (binary_expression "*(int *)(puVar16 + 0x10) + -0x10eaa0" (pointer_expression "*(int *)(puVar16 + 0x10)" * (cast_expression "(int *)(puVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x10)" ( (binary_expression "puVar16 + 0x10" identifier + number_literal) )))) + number_literal) )))) ;) (do_statement "do {\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        } while (bVar23);" do (compound_statement "{\n          if (iVar12 == 0) break;\n          iVar12 = iVar12 + -1;\n          bVar21 = *pbVar18 < *pbVar19;\n          bVar23 = *pbVar18 == *pbVar19;\n          pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;\n          pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;\n        }" { (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar18 < *pbVar19;" (assignment_expression "bVar21 = *pbVar18 < *pbVar19" identifier = (binary_expression "*pbVar18 < *pbVar19" (pointer_expression "*pbVar18" * identifier) < (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "bVar23 = *pbVar18 == *pbVar19;" (assignment_expression "bVar23 = *pbVar18 == *pbVar19" identifier = (binary_expression "*pbVar18 == *pbVar19" (pointer_expression "*pbVar18" * identifier) == (pointer_expression "*pbVar19" * identifier))) ;) (expression_statement "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar18 = pbVar18 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar18 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar18 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1;" (assignment_expression "pbVar19 = pbVar19 + (uint)bVar24 * -2 + 1" identifier = (binary_expression "pbVar19 + (uint)bVar24 * -2 + 1" (binary_expression "pbVar19 + (uint)bVar24 * -2" identifier + (binary_expression "(uint)bVar24 * -2" (cast_expression "(uint)bVar24" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "uVar11 = *(uint *)(puVar16 + 0xc);" (assignment_expression "uVar11 = *(uint *)(puVar16 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((!bVar21 && !bVar23) == bVar21) {\n          uVar11 = uVar10;\n        }" if (parenthesized_expression "((!bVar21 && !bVar23) == bVar21)" ( (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" ( (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier) )) (compound_statement "{\n          uVar11 = uVar10;\n        }" { (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "*(uint *)(puVar16 + 0xc) = uVar11;" (assignment_expression "*(uint *)(puVar16 + 0xc) = uVar11" (pointer_expression "*(uint *)(puVar16 + 0xc)" * (cast_expression "(uint *)(puVar16 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xc)" ( (binary_expression "puVar16 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar17 = puVar16 + -4;" (assignment_expression "puVar17 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) (if_statement "if (pbVar15 != puVar16 + 0x2c) {\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }" if (parenthesized_expression "(pbVar15 != puVar16 + 0x2c)" ( (binary_expression "pbVar15 != puVar16 + 0x2c" identifier != (binary_expression "puVar16 + 0x2c" identifier + number_literal)) )) (compound_statement "{\n          *(byte **)(puVar16 + -0x14) = pbVar15;\n          *(undefined4 *)(puVar16 + -0x18) = 0x39012;\n          operator_delete(*(void **)(puVar16 + -0x14));\n          puVar17 = puVar16 + -4;\n        }" { (expression_statement "*(byte **)(puVar16 + -0x14) = pbVar15;" (assignment_expression "*(byte **)(puVar16 + -0x14) = pbVar15" (pointer_expression "*(byte **)(puVar16 + -0x14)" * (cast_expression "(byte **)(puVar16 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar16 + -0x18) = 0x39012;" (assignment_expression "*(undefined4 *)(puVar16 + -0x18) = 0x39012" (pointer_expression "*(undefined4 *)(puVar16 + -0x18)" * (cast_expression "(undefined4 *)(puVar16 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -0x18)" ( (binary_expression "puVar16 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)(puVar16 + -0x14));" (call_expression "operator_delete(*(void **)(puVar16 + -0x14))" identifier (argument_list "(*(void **)(puVar16 + -0x14))" ( (pointer_expression "*(void **)(puVar16 + -0x14)" * (cast_expression "(void **)(puVar16 + -0x14)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + -0x14)" ( (binary_expression "puVar16 + -0x14" identifier + number_literal) )))) ))) ;) (expression_statement "puVar17 = puVar16 + -4;" (assignment_expression "puVar17 = puVar16 + -4" identifier = (binary_expression "puVar16 + -4" identifier + number_literal)) ;) })) })) (labeled_statement "LAB_00039015:\n      uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "puVar16 = puVar17;" (assignment_expression "puVar16 = puVar17" identifier = identifier) ;) }) while (parenthesized_expression "(uVar10 < *(uint *)(puVar17 + 0xc))" ( (binary_expression "uVar10 < *(uint *)(puVar17 + 0xc)" identifier < (pointer_expression "*(uint *)(puVar17 + 0xc)" * (cast_expression "(uint *)(puVar17 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0xc)" ( (binary_expression "puVar17 + 0xc" identifier + number_literal) ))))) )) ;) (if_statement "if (*(int *)(puVar17 + 0x10) != 0) {\n      *(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);\n      *(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);\n      *(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);\n      *(undefined4 *)(puVar17 + -0x14) = 0x3903f;\n      bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8));\n      return CONCAT31(extraout_var,bVar21);\n    }" if (parenthesized_expression "(*(int *)(puVar17 + 0x10) != 0)" ( (binary_expression "*(int *)(puVar17 + 0x10) != 0" (pointer_expression "*(int *)(puVar17 + 0x10)" * (cast_expression "(int *)(puVar17 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x10)" ( (binary_expression "puVar17 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);\n      *(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);\n      *(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);\n      *(undefined4 *)(puVar17 + -0x14) = 0x3903f;\n      bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8));\n      return CONCAT31(extraout_var,bVar21);\n    }" { (expression_statement "*(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100);" (assignment_expression "*(undefined4 *)(puVar17 + -8) = *(undefined4 *)(puVar17 + 100)" (pointer_expression "*(undefined4 *)(puVar17 + -8)" * (cast_expression "(undefined4 *)(puVar17 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar17 + 100)" * (cast_expression "(undefined4 *)(puVar17 + 100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 100)" ( (binary_expression "puVar17 + 100" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10);" (assignment_expression "*(int *)(puVar17 + -0xc) = *(int *)(puVar17 + 0x10)" (pointer_expression "*(int *)(puVar17 + -0xc)" * (cast_expression "(int *)(puVar17 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(int *)(puVar17 + 0x10)" * (cast_expression "(int *)(puVar17 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x10)" ( (binary_expression "puVar17 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60);" (assignment_expression "*(undefined4 *)(puVar17 + -0x10) = *(undefined4 *)(puVar17 + 0x60)" (pointer_expression "*(undefined4 *)(puVar17 + -0x10)" * (cast_expression "(undefined4 *)(puVar17 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar17 + 0x60)" * (cast_expression "(undefined4 *)(puVar17 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x60)" ( (binary_expression "puVar17 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x3903f;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x3903f" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8));" (assignment_expression "bVar21 = verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8))" identifier = (call_expression "verify_dwo_list(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8))" identifier (argument_list "(*(Dwo_file **)(puVar17 + -0x10),*(uint *)(puVar17 + -0xc),\n                               *(File_list **)(puVar17 + -8))" ( (pointer_expression "*(Dwo_file **)(puVar17 + -0x10)" * (cast_expression "(Dwo_file **)(puVar17 + -0x10)" ( (type_descriptor "Dwo_file **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) , (pointer_expression "*(uint *)(puVar17 + -0xc)" * (cast_expression "(uint *)(puVar17 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) , (pointer_expression "*(File_list **)(puVar17 + -8)" * (cast_expression "(File_list **)(puVar17 + -8)" ( (type_descriptor "File_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -8)" ( (binary_expression "puVar17 + -8" identifier + number_literal) )))) )))) ;) (return_statement "return CONCAT31(extraout_var,bVar21);" return (call_expression "CONCAT31(extraout_var,bVar21)" identifier (argument_list "(extraout_var,bVar21)" ( identifier , identifier ))) ;) })) })) (expression_statement "uVar7 = **(undefined4 **)(puVar17 + 0x60);" (assignment_expression "uVar7 = **(undefined4 **)(puVar17 + 0x60)" identifier = (pointer_expression "**(undefined4 **)(puVar17 + 0x60)" * (pointer_expression "*(undefined4 **)(puVar17 + 0x60)" * (cast_expression "(undefined4 **)(puVar17 + 0x60)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + 0x60)" ( (binary_expression "puVar17 + 0x60" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(puVar17 + -0x10) = *(int *)(puVar17 + 0x14) + -0x10ec54;" (assignment_expression "*(int *)(puVar17 + -0x10) = *(int *)(puVar17 + 0x14) + -0x10ec54" (pointer_expression "*(int *)(puVar17 + -0x10)" * (cast_expression "(int *)(puVar17 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar17 + 0x14) + -0x10ec54" (pointer_expression "*(int *)(puVar17 + 0x14)" * (cast_expression "(int *)(puVar17 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x14)" ( (binary_expression "puVar17 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x14) = 0x39108;" (assignment_expression "*(undefined4 *)(puVar17 + -0x14) = 0x39108" (pointer_expression "*(undefined4 *)(puVar17 + -0x14)" * (cast_expression "(undefined4 *)(puVar17 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar13 = gettext();" (assignment_expression "uVar13 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar17 + -0xc) = uVar7;" (assignment_expression "*(undefined4 *)(puVar17 + -0xc) = uVar7" (pointer_expression "*(undefined4 *)(puVar17 + -0xc)" * (cast_expression "(undefined4 *)(puVar17 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0xc)" ( (binary_expression "puVar17 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar17 + -0x10) = uVar13;" (assignment_expression "*(undefined4 *)(puVar17 + -0x10) = uVar13" (pointer_expression "*(undefined4 *)(puVar17 + -0x10)" * (cast_expression "(undefined4 *)(puVar17 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined **)(puVar17 + -0x14) = &UNK_00039111;" (assignment_expression "*(undefined **)(puVar17 + -0x14) = &UNK_00039111" (pointer_expression "*(undefined **)(puVar17 + -0x14)" * (cast_expression "(undefined **)(puVar17 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x14)" ( (binary_expression "puVar17 + -0x14" identifier + number_literal) )))) = (pointer_expression "&UNK_00039111" & identifier)) ;) (expression_statement "gold_fatal(*(char **)(puVar17 + -0x10));" (call_expression "gold_fatal(*(char **)(puVar17 + -0x10))" identifier (argument_list "(*(char **)(puVar17 + -0x10))" ( (pointer_expression "*(char **)(puVar17 + -0x10)" * (cast_expression "(char **)(puVar17 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar17 + -0x10)" ( (binary_expression "puVar17 + -0x10" identifier + number_literal) )))) ))) ;) })))
(translation_unit "void FUN_00038e80(int param_1)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  byte *pbVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  undefined1 uVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  undefined **local_44 [4];\n  undefined1 local_34 [36];\n  \n  bVar19 = 0;\n  local_48 = &__DT_PLTGOT;\n  iVar5 = FUN_00037ff0(param_1,0);\n  local_50[0] = *(uint *)(iVar5 + 0x28);\n  *(int *)(param_1 + 4) = iVar5;\n  iVar6 = *(int *)(param_1 + 0x10);\n  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;\n  if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }\n  uVar12 = local_50[0];\n  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;\n  if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }\n  puVar11 = auStack_5c;\n  if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }\n  uVar4 = **(undefined4 **)(puVar11 + 0x60);\n  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar11 + -0x14) = 0x39108;\n  uVar8 = gettext();\n  *(undefined4 *)(puVar11 + -0xc) = uVar4;\n  *(undefined4 *)(puVar11 + -0x10) = uVar8;\n                    \n  *(undefined4 *)(puVar11 + -0x14) = 0x39111;\n  FUN_00065450();\n}\n\n" (function_definition "void FUN_00038e80(int param_1)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  byte *pbVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  undefined1 uVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  undefined **local_44 [4];\n  undefined1 local_34 [36];\n  \n  bVar19 = 0;\n  local_48 = &__DT_PLTGOT;\n  iVar5 = FUN_00037ff0(param_1,0);\n  local_50[0] = *(uint *)(iVar5 + 0x28);\n  *(int *)(param_1 + 4) = iVar5;\n  iVar6 = *(int *)(param_1 + 0x10);\n  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;\n  if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }\n  uVar12 = local_50[0];\n  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;\n  if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }\n  puVar11 = auStack_5c;\n  if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }\n  uVar4 = **(undefined4 **)(puVar11 + 0x60);\n  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar11 + -0x14) = 0x39108;\n  uVar8 = gettext();\n  *(undefined4 *)(puVar11 + -0xc) = uVar4;\n  *(undefined4 *)(puVar11 + -0x10) = uVar8;\n                    \n  *(undefined4 *)(puVar11 + -0x14) = 0x39111;\n  FUN_00065450();\n}" primitive_type (function_declarator "FUN_00038e80(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  byte *pbVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  undefined1 uVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  undefined **local_44 [4];\n  undefined1 local_34 [36];\n  \n  bVar19 = 0;\n  local_48 = &__DT_PLTGOT;\n  iVar5 = FUN_00037ff0(param_1,0);\n  local_50[0] = *(uint *)(iVar5 + 0x28);\n  *(int *)(param_1 + 4) = iVar5;\n  iVar6 = *(int *)(param_1 + 0x10);\n  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;\n  if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }\n  uVar12 = local_50[0];\n  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;\n  if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }\n  puVar11 = auStack_5c;\n  if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }\n  uVar4 = **(undefined4 **)(puVar11 + 0x60);\n  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar11 + -0x14) = 0x39108;\n  uVar8 = gettext();\n  *(undefined4 *)(puVar11 + -0xc) = uVar4;\n  *(undefined4 *)(puVar11 + -0x10) = uVar8;\n                    \n  *(undefined4 *)(puVar11 + -0x14) = 0x39111;\n  FUN_00065450();\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "undefined1 uVar15;" type_identifier identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "undefined1 uVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "uint auStack_64 [2];" type_identifier (array_declarator "auStack_64 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_5c [12];" type_identifier (array_declarator "auStack_5c [12]" identifier [ number_literal ]) ;) (declaration "uint local_50 [2];" type_identifier (array_declarator "local_50 [2]" identifier [ number_literal ]) ;) (declaration "undefined **local_48;" type_identifier (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier)) ;) (declaration "undefined **local_44 [4];" type_identifier (pointer_declarator "**local_44 [4]" * (pointer_declarator "*local_44 [4]" * (array_declarator "local_44 [4]" identifier [ number_literal ]))) ;) (declaration "undefined1 local_34 [36];" type_identifier (array_declarator "local_34 [36]" identifier [ number_literal ]) ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "local_48 = &__DT_PLTGOT;" (assignment_expression "local_48 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "iVar5 = FUN_00037ff0(param_1,0);" (assignment_expression "iVar5 = FUN_00037ff0(param_1,0)" identifier = (call_expression "FUN_00037ff0(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (expression_statement "local_50[0] = *(uint *)(iVar5 + 0x28);" (assignment_expression "local_50[0] = *(uint *)(iVar5 + 0x28)" (subscript_expression "local_50[0]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(iVar5 + 0x28)" * (cast_expression "(uint *)(iVar5 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" identifier = (binary_expression "*(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (binary_expression "(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" (parenthesized_expression "(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc))" ( (binary_expression "*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) )) * number_literal))) ;) (if_statement "if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" if (parenthesized_expression "(local_50[0] < (uint)(iVar5 - iVar6))" ( (binary_expression "local_50[0] < (uint)(iVar5 - iVar6)" (subscript_expression "local_50[0]" identifier [ number_literal ]) < (call_expression "(uint)(iVar5 - iVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 - iVar6)" ( (binary_expression "iVar5 - iVar6" identifier - identifier) )))) )) (compound_statement "{\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }" { (expression_statement "iVar6 = iVar6 + local_50[0];" (assignment_expression "iVar6 = iVar6 + local_50[0]" identifier = (binary_expression "iVar6 + local_50[0]" identifier + (subscript_expression "local_50[0]" identifier [ number_literal ]))) ;) (expression_statement "iVar5 = iVar6 + 0x1f;" (assignment_expression "iVar5 = iVar6 + 0x1f" identifier = (binary_expression "iVar6 + 0x1f" identifier + number_literal)) ;) (if_statement "if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }" if (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) (compound_statement "{\n      iVar5 = iVar6;\n    }" { (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) })) (expression_statement "iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;" (assignment_expression "iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4" identifier = (binary_expression "*(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + (binary_expression "(iVar5 >> 5) * 4" (parenthesized_expression "(iVar5 >> 5)" ( (binary_expression "iVar5 >> 5" identifier >> number_literal) )) * number_literal))) ;) (expression_statement "iVar6 = iVar6 % 0x20;" (assignment_expression "iVar6 = iVar6 % 0x20" identifier = (binary_expression "iVar6 % 0x20" identifier % number_literal)) ;) (if_statement "if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }" { (expression_statement "iVar6 = iVar6 + 0x20;" (assignment_expression "iVar6 = iVar6 + 0x20" identifier = (binary_expression "iVar6 + 0x20" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar5 + -4;" (assignment_expression "iVar5 = iVar5 + -4" identifier = (binary_expression "iVar5 + -4" identifier + number_literal)) ;) })) (expression_statement "*(int *)(param_1 + 0x14) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar5" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x18) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x18) = iVar6" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" else (compound_statement "{\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" { (expression_statement "FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);" (call_expression "FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0)" identifier (argument_list "(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) , (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) , (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , (binary_expression "(iVar6 - iVar5) + local_50[0]" (parenthesized_expression "(iVar6 - iVar5)" ( (binary_expression "iVar6 - iVar5" identifier - identifier) )) + (subscript_expression "local_50[0]" identifier [ number_literal ])) , number_literal ))) ;) }))) (expression_statement "uVar12 = local_50[0];" (assignment_expression "uVar12 = local_50[0]" identifier = (subscript_expression "local_50[0]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;" (assignment_expression "uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3" identifier = (binary_expression "*(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3" (binary_expression "*(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20)" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" if (parenthesized_expression "(uVar7 < local_50[0])" ( (binary_expression "uVar7 < local_50[0]" identifier < (subscript_expression "local_50[0]" identifier [ number_literal ])) )) (compound_statement "{\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }" { (expression_statement "FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);" (call_expression "FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7)" identifier (argument_list "(param_1 + 0x20,local_50[0] - uVar7)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) , (binary_expression "local_50[0] - uVar7" (subscript_expression "local_50[0]" identifier [ number_literal ]) - identifier) ))) ;) }) (else_clause "else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" else (if_statement "if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" if (parenthesized_expression "((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5))" ( (binary_expression "(local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)" (parenthesized_expression "(local_50[0] < uVar7)" ( (binary_expression "local_50[0] < uVar7" (subscript_expression "local_50[0]" identifier [ number_literal ]) < identifier) )) && (parenthesized_expression "(iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)" ( (comma_expression "iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5" (assignment_expression "iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8" identifier = (binary_expression "*(int *)(param_1 + 0x20) + local_50[0] * 8" (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + (binary_expression "local_50[0] * 8" (subscript_expression "local_50[0]" identifier [ number_literal ]) * number_literal))) , (binary_expression "*(int *)(param_1 + 0x24) != iVar5" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" { (expression_statement "*(int *)(param_1 + 0x24) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x24) = iVar5" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" identifier = identifier) ;) (if_statement "if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }" if (parenthesized_expression "(1 < uVar12)" ( (binary_expression "1 < uVar12" number_literal < identifier) )) (compound_statement "{\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }" { (expression_statement "local_50[1] = 0;" (assignment_expression "local_50[1] = 0" (subscript_expression "local_50[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (expression_statement "local_44[0] = (undefined **)local_34;" (assignment_expression "local_44[0] = (undefined **)local_34" (subscript_expression "local_44[0]" identifier [ number_literal ]) = (cast_expression "(undefined **)local_34" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "local_44[1] = local_48 + -0x43a8c;" (assignment_expression "local_44[1] = local_48 + -0x43a8c" (subscript_expression "local_44[1]" identifier [ number_literal ]) = (binary_expression "local_48 + -0x43a8c" identifier + number_literal)) ;) (expression_statement "puVar10 = auStack_5c;" (assignment_expression "puVar10 = auStack_5c" identifier = identifier) ;) (do_statement "do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));" do (compound_statement "{\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    }" { (expression_statement "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);" (assignment_expression "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(puVar10 + 0x60) + 4)" * (cast_expression "(int **)(*(int *)(puVar10 + 0x60) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + 0x60) + 4)" ( (binary_expression "*(int *)(puVar10 + 0x60) + 4" (pointer_expression "*(int *)(puVar10 + 0x60)" * (cast_expression "(int *)(puVar10 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x60)" ( (binary_expression "puVar10 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar2;" (assignment_expression "iVar5 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*(uint *)(puVar10 + -0xc) = uVar12;" (assignment_expression "*(uint *)(puVar10 + -0xc) = uVar12" (pointer_expression "*(uint *)(puVar10 + -0xc)" * (cast_expression "(uint *)(puVar10 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x10) = piVar2;" (assignment_expression "*(int **)(puVar10 + -0x10) = piVar2" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(iVar5 + 0x50);" (assignment_expression "pcVar3 = *(code **)(iVar5 + 0x50)" identifier = (pointer_expression "*(code **)(iVar5 + 0x50)" * (cast_expression "(code **)(iVar5 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x50)" ( (binary_expression "iVar5 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x38f61;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x38f61" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar3)();" (assignment_expression "iVar5 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" identifier = identifier) ;) (if_statement "if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }" { (expression_statement "uVar15 = puVar10 < (undefined1 *)0x4;" (assignment_expression "uVar15 = puVar10 < (undefined1 *)0x4" identifier = (binary_expression "puVar10 < (undefined1 *)0x4" identifier < (cast_expression "(undefined1 *)0x4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar17 = puVar10 == (undefined1 *)0x4;" (assignment_expression "uVar17 = puVar10 == (undefined1 *)0x4" identifier = (binary_expression "puVar10 == (undefined1 *)0x4" identifier == (cast_expression "(undefined1 *)0x4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);" (assignment_expression "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(puVar10 + 0x60) + 4)" * (cast_expression "(int **)(*(int *)(puVar10 + 0x60) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + 0x60) + 4)" ( (binary_expression "*(int *)(puVar10 + 0x60) + 4" (pointer_expression "*(int *)(puVar10 + 0x60)" * (cast_expression "(int *)(puVar10 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x60)" ( (binary_expression "puVar10 + 0x60" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar2;" (assignment_expression "iVar5 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*(uint *)(puVar10 + -8) = uVar12;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar12" (pointer_expression "*(uint *)(puVar10 + -8)" * (cast_expression "(uint *)(puVar10 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0xc) = piVar2;" (assignment_expression "*(int **)(puVar10 + -0xc) = piVar2" (pointer_expression "*(int **)(puVar10 + -0xc)" * (cast_expression "(int **)(puVar10 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18)" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" * (cast_expression "(undefined4 *)(puVar10 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar10 + 0x18)" * (cast_expression "(undefined4 *)(puVar10 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x18)" ( (binary_expression "puVar10 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = *(code **)(iVar5 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar5 + 0x40)" identifier = (pointer_expression "*(code **)(iVar5 + 0x40)" * (cast_expression "(code **)(iVar5 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x40)" ( (binary_expression "iVar5 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x38f84;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x38f84" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar5 = 7;" (assignment_expression "iVar5 = 7" identifier = number_literal) ;) (expression_statement "pbVar9 = *(byte **)(puVar10 + 0x24);" (assignment_expression "pbVar9 = *(byte **)(puVar10 + 0x24)" identifier = (pointer_expression "*(byte **)(puVar10 + 0x24)" * (cast_expression "(byte **)(puVar10 + 0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x24)" ( (binary_expression "puVar10 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = *(byte **)(puVar10 + 0x18);" (assignment_expression "pbVar13 = *(byte **)(puVar10 + 0x18)" identifier = (pointer_expression "*(byte **)(puVar10 + 0x18)" * (cast_expression "(byte **)(puVar10 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x18)" ( (binary_expression "puVar10 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "pbVar14 = pbVar9;" (assignment_expression "pbVar14 = pbVar9" identifier = identifier) ;) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);" do (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar15 = *pbVar13 < *pbVar14;" (assignment_expression "uVar15 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "uVar17 = *pbVar13 == *pbVar14;" (assignment_expression "uVar17 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar17)" ( (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (expression_statement "pbVar13 = pbVar9 + 7;" (assignment_expression "pbVar13 = pbVar9 + 7" identifier = (binary_expression "pbVar9 + 7" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;" (assignment_expression "bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15" identifier = (binary_expression "(!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15" (parenthesized_expression "(!(bool)uVar15 && !(bool)uVar17)" ( (binary_expression "!(bool)uVar15 && !(bool)uVar17" (unary_expression "!(bool)uVar15" ! (cast_expression "(bool)uVar15" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar17" ! (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar15" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (if_statement "if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (compound_statement "{\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }" { (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) (expression_statement "pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);" (assignment_expression "pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x10) + -0x10ea28)" ( (binary_expression "*(int *)(puVar10 + 0x10) + -0x10ea28" (pointer_expression "*(int *)(puVar10 + 0x10)" * (cast_expression "(int *)(puVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x10)" ( (binary_expression "puVar10 + 0x10" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar14 = pbVar9;" (assignment_expression "pbVar14 = pbVar9" identifier = identifier) ;) (do_statement "do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);" do (compound_statement "{\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar13 < *pbVar14;" (assignment_expression "bVar16 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar18 = *pbVar13 == *pbVar14;" (assignment_expression "bVar18 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }" if (parenthesized_expression "((!bVar16 && !bVar18) != bVar16)" ( (binary_expression "(!bVar16 && !bVar18) != bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) != identifier) )) (compound_statement "{\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }" { (if_statement "if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }" if (parenthesized_expression "(pbVar9 != puVar10 + 0x2c)" ( (binary_expression "pbVar9 != puVar10 + 0x2c" identifier != (binary_expression "puVar10 + 0x2c" identifier + number_literal)) )) (compound_statement "{\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }" { (expression_statement "*(byte **)(puVar10 + -0x14) = pbVar9;" (assignment_expression "*(byte **)(puVar10 + -0x14) = pbVar9" (pointer_expression "*(byte **)(puVar10 + -0x14)" * (cast_expression "(byte **)(puVar10 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x39065;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x39065" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) })) (goto_statement "goto LAB_00039015;" goto statement_identifier ;) })) (expression_statement "puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);" (assignment_expression "puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" identifier = (cast_expression "(uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" ( (binary_expression "*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4" (pointer_expression "*(int *)(*(int *)(puVar10 + 0x5c) + 0xc)" * (cast_expression "(int *)(*(int *)(puVar10 + 0x5c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x5c) + 0xc)" ( (binary_expression "*(int *)(puVar10 + 0x5c) + 0xc" (pointer_expression "*(int *)(puVar10 + 0x5c)" * (cast_expression "(int *)(puVar10 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x5c)" ( (binary_expression "puVar10 + 0x5c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "(uVar12 >> 5) * 4" (parenthesized_expression "(uVar12 >> 5)" ( (binary_expression "uVar12 >> 5" identifier >> number_literal) )) * number_literal)) )))) ;) (expression_statement "*puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);" (assignment_expression "*puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f)" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 1 << ((byte)uVar12 & 0x1f)" (pointer_expression "*puVar1" * identifier) | (binary_expression "1 << ((byte)uVar12 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x1f)" ( (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (expression_statement "bVar18 = *puVar1 == 0;" (assignment_expression "bVar18 = *puVar1 == 0" identifier = (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" * identifier) == number_literal)) ;) (expression_statement "pbVar13 = pbVar9 + 8;" (assignment_expression "pbVar13 = pbVar9 + 8" identifier = (binary_expression "pbVar9 + 8" identifier + number_literal)) ;) (expression_statement "pbVar9 = *(byte **)(puVar10 + 0x24);" (assignment_expression "pbVar9 = *(byte **)(puVar10 + 0x24)" identifier = (pointer_expression "*(byte **)(puVar10 + 0x24)" * (cast_expression "(byte **)(puVar10 + 0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x24)" ( (binary_expression "puVar10 + 0x24" identifier + number_literal) ))))) ;) })) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);" (assignment_expression "pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0x10) + -0x10eaa0)" ( (binary_expression "*(int *)(puVar10 + 0x10) + -0x10eaa0" (pointer_expression "*(int *)(puVar10 + 0x10)" * (cast_expression "(int *)(puVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x10)" ( (binary_expression "puVar10 + 0x10" identifier + number_literal) )))) + number_literal) )))) ;) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);" do (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar13 < *pbVar14;" (assignment_expression "bVar16 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar18 = *pbVar13 == *pbVar14;" (assignment_expression "bVar18 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "uVar7 = *(uint *)(puVar10 + 0xc);" (assignment_expression "uVar7 = *(uint *)(puVar10 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar10 + 0xc)" * (cast_expression "(uint *)(puVar10 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xc)" ( (binary_expression "puVar10 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }" if (parenthesized_expression "((!bVar16 && !bVar18) == bVar16)" ( (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier) )) (compound_statement "{\n          uVar7 = uVar12;\n        }" { (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" identifier = identifier) ;) })) (expression_statement "*(uint *)(puVar10 + 0xc) = uVar7;" (assignment_expression "*(uint *)(puVar10 + 0xc) = uVar7" (pointer_expression "*(uint *)(puVar10 + 0xc)" * (cast_expression "(uint *)(puVar10 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xc)" ( (binary_expression "puVar10 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (if_statement "if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }" if (parenthesized_expression "(pbVar9 != puVar10 + 0x2c)" ( (binary_expression "pbVar9 != puVar10 + 0x2c" identifier != (binary_expression "puVar10 + 0x2c" identifier + number_literal)) )) (compound_statement "{\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }" { (expression_statement "*(byte **)(puVar10 + -0x14) = pbVar9;" (assignment_expression "*(byte **)(puVar10 + -0x14) = pbVar9" (pointer_expression "*(byte **)(puVar10 + -0x14)" * (cast_expression "(byte **)(puVar10 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x39012;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x39012" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" * (cast_expression "(undefined4 *)(puVar10 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) })) })) (labeled_statement "LAB_00039015:\n      uVar12 = uVar12 + 1;" statement_identifier : (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;)) (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" identifier = identifier) ;) }) while (parenthesized_expression "(uVar12 < *(uint *)(puVar11 + 0xc))" ( (binary_expression "uVar12 < *(uint *)(puVar11 + 0xc)" identifier < (pointer_expression "*(uint *)(puVar11 + 0xc)" * (cast_expression "(uint *)(puVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xc)" ( (binary_expression "puVar11 + 0xc" identifier + number_literal) ))))) )) ;) (if_statement "if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }" if (parenthesized_expression "(*(int *)(puVar11 + 0x10) != 0)" ( (binary_expression "*(int *)(puVar11 + 0x10) != 0" (pointer_expression "*(int *)(puVar11 + 0x10)" * (cast_expression "(int *)(puVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x10)" ( (binary_expression "puVar11 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }" { (expression_statement "*(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);" (assignment_expression "*(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100)" (pointer_expression "*(undefined4 *)(puVar11 + -8)" * (cast_expression "(undefined4 *)(puVar11 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -8)" ( (binary_expression "puVar11 + -8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar11 + 100)" * (cast_expression "(undefined4 *)(puVar11 + 100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 100)" ( (binary_expression "puVar11 + 100" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);" (assignment_expression "*(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10)" (pointer_expression "*(int *)(puVar11 + -0xc)" * (cast_expression "(int *)(puVar11 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = (pointer_expression "*(int *)(puVar11 + 0x10)" * (cast_expression "(int *)(puVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x10)" ( (binary_expression "puVar11 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60)" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar11 + 0x60)" * (cast_expression "(undefined4 *)(puVar11 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x60)" ( (binary_expression "puVar11 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x3903f;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x3903f" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00036650();" (call_expression "FUN_00036650()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) })) (expression_statement "uVar4 = **(undefined4 **)(puVar11 + 0x60);" (assignment_expression "uVar4 = **(undefined4 **)(puVar11 + 0x60)" identifier = (pointer_expression "**(undefined4 **)(puVar11 + 0x60)" * (pointer_expression "*(undefined4 **)(puVar11 + 0x60)" * (cast_expression "(undefined4 **)(puVar11 + 0x60)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x60)" ( (binary_expression "puVar11 + 0x60" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;" (assignment_expression "*(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54" (pointer_expression "*(int *)(puVar11 + -0x10)" * (cast_expression "(int *)(puVar11 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar11 + 0x14) + -0x10ec54" (pointer_expression "*(int *)(puVar11 + 0x14)" * (cast_expression "(int *)(puVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x14)" ( (binary_expression "puVar11 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x39108;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x39108" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar8 = gettext();" (assignment_expression "uVar8 = gettext()" identifier = (call_expression "gettext()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(puVar11 + -0xc) = uVar4;" (assignment_expression "*(undefined4 *)(puVar11 + -0xc) = uVar4" (pointer_expression "*(undefined4 *)(puVar11 + -0xc)" * (cast_expression "(undefined4 *)(puVar11 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0xc)" ( (binary_expression "puVar11 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" * (cast_expression "(undefined4 *)(puVar11 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x10)" ( (binary_expression "puVar11 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x39111;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x39111" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" * (cast_expression "(undefined4 *)(puVar11 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x14)" ( (binary_expression "puVar11 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00065450();" (call_expression "FUN_00065450()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (array_declarator IDENT [ LIT ]))) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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) )))) = 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 IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (subscript_expression IDENT [ LIT ])) , LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) && (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) == (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_00038e80(int param_1)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  byte *pbVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  undefined1 uVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  undefined **local_44 [4];\n  undefined1 local_34 [36];\n  \n  bVar19 = 0;\n  local_48 = &__DT_PLTGOT;\n  iVar5 = FUN_00037ff0(param_1,0);\n  local_50[0] = *(uint *)(iVar5 + 0x28);\n  *(int *)(param_1 + 4) = iVar5;\n  iVar6 = *(int *)(param_1 + 0x10);\n  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;\n  if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }\n  uVar12 = local_50[0];\n  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;\n  if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }\n  puVar11 = auStack_5c;\n  if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }\n  uVar4 = **(undefined4 **)(puVar11 + 0x60);\n  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar11 + -0x14) = 0x39108;\n  uVar8 = gettext();\n  *(undefined4 *)(puVar11 + -0xc) = uVar4;\n  *(undefined4 *)(puVar11 + -0x10) = uVar8;\n                    \n  *(undefined4 *)(puVar11 + -0x14) = 0x39111;\n  FUN_00065450();\n}" (primitive_type "void") (function_declarator "FUN_00038e80(int param_1)" (identifier "FUN_00038e80") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 uVar8;\n  byte *pbVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  undefined1 uVar15;\n  bool bVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  uint auStack_64 [2];\n  undefined1 auStack_5c [12];\n  uint local_50 [2];\n  undefined **local_48;\n  undefined **local_44 [4];\n  undefined1 local_34 [36];\n  \n  bVar19 = 0;\n  local_48 = &__DT_PLTGOT;\n  iVar5 = FUN_00037ff0(param_1,0);\n  local_50[0] = *(uint *)(iVar5 + 0x28);\n  *(int *)(param_1 + 4) = iVar5;\n  iVar6 = *(int *)(param_1 + 0x10);\n  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;\n  if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }\n  uVar12 = local_50[0];\n  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;\n  if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }\n  puVar11 = auStack_5c;\n  if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }\n  uVar4 = **(undefined4 **)(puVar11 + 0x60);\n  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;\n  *(undefined4 *)(puVar11 + -0x14) = 0x39108;\n  uVar8 = gettext();\n  *(undefined4 *)(puVar11 + -0xc) = uVar4;\n  *(undefined4 *)(puVar11 + -0x10) = uVar8;\n                    \n  *(undefined4 *)(puVar11 + -0x14) = 0x39111;\n  FUN_00065450();\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "undefined1 *puVar10;" (type_identifier "undefined1") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined1 *puVar11;" (type_identifier "undefined1") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "undefined1 uVar15;" (type_identifier "undefined1") (identifier "uVar15") (; ";")) (declaration "bool bVar16;" (primitive_type "bool") (identifier "bVar16") (; ";")) (declaration "undefined1 uVar17;" (type_identifier "undefined1") (identifier "uVar17") (; ";")) (declaration "bool bVar18;" (primitive_type "bool") (identifier "bVar18") (; ";")) (declaration "byte bVar19;" (type_identifier "byte") (identifier "bVar19") (; ";")) (declaration "uint auStack_64 [2];" (type_identifier "uint") (array_declarator "auStack_64 [2]" (identifier "auStack_64") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined1 auStack_5c [12];" (type_identifier "undefined1") (array_declarator "auStack_5c [12]" (identifier "auStack_5c") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "uint local_50 [2];" (type_identifier "uint") (array_declarator "local_50 [2]" (identifier "local_50") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined **local_48;" (type_identifier "undefined") (pointer_declarator "**local_48" (* "*") (pointer_declarator "*local_48" (* "*") (identifier "local_48"))) (; ";")) (declaration "undefined **local_44 [4];" (type_identifier "undefined") (pointer_declarator "**local_44 [4]" (* "*") (pointer_declarator "*local_44 [4]" (* "*") (array_declarator "local_44 [4]" (identifier "local_44") ([ "[") (number_literal "4") (] "]")))) (; ";")) (declaration "undefined1 local_34 [36];" (type_identifier "undefined1") (array_declarator "local_34 [36]" (identifier "local_34") ([ "[") (number_literal "36") (] "]")) (; ";")) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" (identifier "bVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = &__DT_PLTGOT;" (assignment_expression "local_48 = &__DT_PLTGOT" (identifier "local_48") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "iVar5 = FUN_00037ff0(param_1,0);" (assignment_expression "iVar5 = FUN_00037ff0(param_1,0)" (identifier "iVar5") (= "=") (call_expression "FUN_00037ff0(param_1,0)" (identifier "FUN_00037ff0") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_50[0] = *(uint *)(iVar5 + 0x28);" (assignment_expression "local_50[0] = *(uint *)(iVar5 + 0x28)" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*(uint *)(iVar5 + 0x28)" (* "*") (cast_expression "(uint *)(iVar5 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar6 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x10)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" (identifier "iVar5") (= "=") (binary_expression "*(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (binary_expression "(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8" (parenthesized_expression "(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc))" (( "(") (binary_expression "*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (* "*") (number_literal "8")))) (; ";")) (if_statement "if (local_50[0] < (uint)(iVar5 - iVar6)) {\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }\n  else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" (if "if") (parenthesized_expression "(local_50[0] < (uint)(iVar5 - iVar6))" (( "(") (binary_expression "local_50[0] < (uint)(iVar5 - iVar6)" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (< "<") (call_expression "(uint)(iVar5 - iVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 - iVar6)" (( "(") (binary_expression "iVar5 - iVar6" (identifier "iVar5") (- "-") (identifier "iVar6")) () ")")))) () ")")) (compound_statement "{\n    iVar6 = iVar6 + local_50[0];\n    iVar5 = iVar6 + 0x1f;\n    if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }\n    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;\n    iVar6 = iVar6 % 0x20;\n    if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }\n    *(int *)(param_1 + 0x14) = iVar5;\n    *(int *)(param_1 + 0x18) = iVar6;\n  }" ({ "{") (expression_statement "iVar6 = iVar6 + local_50[0];" (assignment_expression "iVar6 = iVar6 + local_50[0]" (identifier "iVar6") (= "=") (binary_expression "iVar6 + local_50[0]" (identifier "iVar6") (+ "+") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "iVar5 = iVar6 + 0x1f;" (assignment_expression "iVar5 = iVar6 + 0x1f" (identifier "iVar5") (= "=") (binary_expression "iVar6 + 0x1f" (identifier "iVar6") (+ "+") (number_literal "0x1f"))) (; ";")) (if_statement "if (-1 < iVar6) {\n      iVar5 = iVar6;\n    }" (if "if") (parenthesized_expression "(-1 < iVar6)" (( "(") (binary_expression "-1 < iVar6" (number_literal "-1") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n      iVar5 = iVar6;\n    }" ({ "{") (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" (identifier "iVar5") (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (expression_statement "iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;" (assignment_expression "iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4" (identifier "iVar5") (= "=") (binary_expression "*(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (binary_expression "(iVar5 >> 5) * 4" (parenthesized_expression "(iVar5 >> 5)" (( "(") (binary_expression "iVar5 >> 5" (identifier "iVar5") (>> ">>") (number_literal "5")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "iVar6 = iVar6 % 0x20;" (assignment_expression "iVar6 = iVar6 % 0x20" (identifier "iVar6") (= "=") (binary_expression "iVar6 % 0x20" (identifier "iVar6") (% "%") (number_literal "0x20"))) (; ";")) (if_statement "if (iVar6 < 0) {\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }" (if "if") (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar6 = iVar6 + 0x20;\n      iVar5 = iVar5 + -4;\n    }" ({ "{") (expression_statement "iVar6 = iVar6 + 0x20;" (assignment_expression "iVar6 = iVar6 + 0x20" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 0x20" (identifier "iVar6") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "iVar5 = iVar5 + -4;" (assignment_expression "iVar5 = iVar5 + -4" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -4" (identifier "iVar5") (+ "+") (number_literal "-4"))) (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 0x14) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar5" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(int *)(param_1 + 0x18) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x18) = iVar6" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (} "}")) (else_clause "else {\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" (else "else") (compound_statement "{\n    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);\n  }" ({ "{") (expression_statement "FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0);" (call_expression "FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0)" (identifier "FUN_000502e0") (argument_list "(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),\n                 (iVar6 - iVar5) + local_50[0],0)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) (, ",") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (binary_expression "(iVar6 - iVar5) + local_50[0]" (parenthesized_expression "(iVar6 - iVar5)" (( "(") (binary_expression "iVar6 - iVar5" (identifier "iVar6") (- "-") (identifier "iVar5")) () ")")) (+ "+") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar12 = local_50[0];" (assignment_expression "uVar12 = local_50[0]" (identifier "uVar12") (= "=") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;" (assignment_expression "uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3" (identifier "uVar7") (= "=") (binary_expression "*(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3" (binary_expression "*(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20)" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if (uVar7 < local_50[0]) {\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }\n  else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" (if "if") (parenthesized_expression "(uVar7 < local_50[0])" (( "(") (binary_expression "uVar7 < local_50[0]" (identifier "uVar7") (< "<") (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]"))) () ")")) (compound_statement "{\n    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);\n  }" ({ "{") (expression_statement "FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);" (call_expression "FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7)" (identifier "FUN_0004af70") (argument_list "(param_1 + 0x20,local_50[0] - uVar7)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) (, ",") (binary_expression "local_50[0] - uVar7" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (- "-") (identifier "uVar7")) () ")"))) (; ";")) (} "}")) (else_clause "else if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" (else "else") (if_statement "if ((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" (if "if") (parenthesized_expression "((local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5))" (( "(") (binary_expression "(local_50[0] < uVar7) &&\n          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)" (parenthesized_expression "(local_50[0] < uVar7)" (( "(") (binary_expression "local_50[0] < uVar7" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (< "<") (identifier "uVar7")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)" (( "(") (comma_expression "iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5" (assignment_expression "iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8" (identifier "iVar5") (= "=") (binary_expression "*(int *)(param_1 + 0x20) + local_50[0] * 8" (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (binary_expression "local_50[0] * 8" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (* "*") (number_literal "8")))) (, ",") (binary_expression "*(int *)(param_1 + 0x24) != iVar5" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (identifier "iVar5"))) () ")"))) () ")")) (compound_statement "{\n    *(int *)(param_1 + 0x24) = iVar5;\n  }" ({ "{") (expression_statement "*(int *)(param_1 + 0x24) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x24) = iVar5" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (} "}"))))) (expression_statement "puVar11 = auStack_5c;" (assignment_expression "puVar11 = auStack_5c" (identifier "puVar11") (= "=") (identifier "auStack_5c")) (; ";")) (if_statement "if (1 < uVar12) {\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(1 < uVar12)" (( "(") (binary_expression "1 < uVar12" (number_literal "1") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n    local_50[1] = 0;\n    uVar12 = 1;\n    local_44[0] = (undefined **)local_34;\n    local_44[1] = local_48 + -0x43a8c;\n    puVar10 = auStack_5c;\n    do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));\n    if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }\n  }" ({ "{") (expression_statement "local_50[1] = 0;" (assignment_expression "local_50[1] = 0" (subscript_expression "local_50[1]" (identifier "local_50") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_44[0] = (undefined **)local_34;" (assignment_expression "local_44[0] = (undefined **)local_34" (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(undefined **)local_34" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_34"))) (; ";")) (expression_statement "local_44[1] = local_48 + -0x43a8c;" (assignment_expression "local_44[1] = local_48 + -0x43a8c" (subscript_expression "local_44[1]" (identifier "local_44") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_48 + -0x43a8c" (identifier "local_48") (+ "+") (number_literal "-0x43a8c"))) (; ";")) (expression_statement "puVar10 = auStack_5c;" (assignment_expression "puVar10 = auStack_5c" (identifier "puVar10") (= "=") (identifier "auStack_5c")) (; ";")) (do_statement "do {\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    } while (uVar12 < *(uint *)(puVar11 + 0xc));" (do "do") (compound_statement "{\n      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n      iVar5 = *piVar2;\n      *(uint *)(puVar10 + -0xc) = uVar12;\n      *(int **)(puVar10 + -0x10) = piVar2;\n      pcVar3 = *(code **)(iVar5 + 0x50);\n      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;\n      iVar5 = (*pcVar3)();\n      puVar11 = puVar10;\n      if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }\nLAB_00039015:\n      uVar12 = uVar12 + 1;\n      puVar10 = puVar11;\n    }" ({ "{") (expression_statement "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);" (assignment_expression "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(*(int *)(puVar10 + 0x60) + 4)" (* "*") (cast_expression "(int **)(*(int *)(puVar10 + 0x60) + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x60) + 4)" (( "(") (binary_expression "*(int *)(puVar10 + 0x60) + 4" (pointer_expression "*(int *)(puVar10 + 0x60)" (* "*") (cast_expression "(int *)(puVar10 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x60)" (( "(") (binary_expression "puVar10 + 0x60" (identifier "puVar10") (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar5 = *piVar2;" (assignment_expression "iVar5 = *piVar2" (identifier "iVar5") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*(uint *)(puVar10 + -0xc) = uVar12;" (assignment_expression "*(uint *)(puVar10 + -0xc) = uVar12" (pointer_expression "*(uint *)(puVar10 + -0xc)" (* "*") (cast_expression "(uint *)(puVar10 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x10) = piVar2;" (assignment_expression "*(int **)(puVar10 + -0x10) = piVar2" (pointer_expression "*(int **)(puVar10 + -0x10)" (* "*") (cast_expression "(int **)(puVar10 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar2")) (; ";")) (expression_statement "pcVar3 = *(code **)(iVar5 + 0x50);" (assignment_expression "pcVar3 = *(code **)(iVar5 + 0x50)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(iVar5 + 0x50)" (* "*") (cast_expression "(code **)(iVar5 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x50)" (( "(") (binary_expression "iVar5 + 0x50" (identifier "iVar5") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x38f61;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x38f61" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x38f61")) (; ";")) (expression_statement "iVar5 = (*pcVar3)();" (assignment_expression "iVar5 = (*pcVar3)()" (identifier "iVar5") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" (identifier "puVar11") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if (iVar5 == 1) {\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }" (if "if") (parenthesized_expression "(iVar5 == 1)" (( "(") (binary_expression "iVar5 == 1" (identifier "iVar5") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        uVar15 = puVar10 < (undefined1 *)0x4;\n        uVar17 = puVar10 == (undefined1 *)0x4;\n        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);\n        iVar5 = *piVar2;\n        *(uint *)(puVar10 + -8) = uVar12;\n        *(int **)(puVar10 + -0xc) = piVar2;\n        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);\n        pcVar3 = *(code **)(iVar5 + 0x40);\n        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;\n        (*pcVar3)();\n        iVar5 = 7;\n        pbVar9 = *(byte **)(puVar10 + 0x24);\n        pbVar13 = *(byte **)(puVar10 + 0x18);\n        pbVar14 = pbVar9;\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);\n        pbVar13 = pbVar9 + 7;\n        puVar11 = puVar10 + -4;\n        bVar16 = false;\n        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;\n        if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }\n        bVar16 = false;\n        iVar5 = 9;\n        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);\n        do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);\n        uVar7 = *(uint *)(puVar10 + 0xc);\n        if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }\n        *(uint *)(puVar10 + 0xc) = uVar7;\n        puVar11 = puVar10 + -4;\n        if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }\n      }" ({ "{") (expression_statement "uVar15 = puVar10 < (undefined1 *)0x4;" (assignment_expression "uVar15 = puVar10 < (undefined1 *)0x4" (identifier "uVar15") (= "=") (binary_expression "puVar10 < (undefined1 *)0x4" (identifier "puVar10") (< "<") (cast_expression "(undefined1 *)0x4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x4")))) (; ";")) (expression_statement "uVar17 = puVar10 == (undefined1 *)0x4;" (assignment_expression "uVar17 = puVar10 == (undefined1 *)0x4" (identifier "uVar17") (= "=") (binary_expression "puVar10 == (undefined1 *)0x4" (identifier "puVar10") (== "==") (cast_expression "(undefined1 *)0x4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x4")))) (; ";")) (expression_statement "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);" (assignment_expression "piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(*(int *)(puVar10 + 0x60) + 4)" (* "*") (cast_expression "(int **)(*(int *)(puVar10 + 0x60) + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x60) + 4)" (( "(") (binary_expression "*(int *)(puVar10 + 0x60) + 4" (pointer_expression "*(int *)(puVar10 + 0x60)" (* "*") (cast_expression "(int *)(puVar10 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x60)" (( "(") (binary_expression "puVar10 + 0x60" (identifier "puVar10") (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar5 = *piVar2;" (assignment_expression "iVar5 = *piVar2" (identifier "iVar5") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*(uint *)(puVar10 + -8) = uVar12;" (assignment_expression "*(uint *)(puVar10 + -8) = uVar12" (pointer_expression "*(uint *)(puVar10 + -8)" (* "*") (cast_expression "(uint *)(puVar10 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(int **)(puVar10 + -0xc) = piVar2;" (assignment_expression "*(int **)(puVar10 + -0xc) = piVar2" (pointer_expression "*(int **)(puVar10 + -0xc)" (* "*") (cast_expression "(int **)(puVar10 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);" (assignment_expression "*(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18)" (pointer_expression "*(undefined4 *)(puVar10 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar10 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x18)" (( "(") (binary_expression "puVar10 + 0x18" (identifier "puVar10") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "pcVar3 = *(code **)(iVar5 + 0x40);" (assignment_expression "pcVar3 = *(code **)(iVar5 + 0x40)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(iVar5 + 0x40)" (* "*") (cast_expression "(code **)(iVar5 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x40)" (( "(") (binary_expression "iVar5 + 0x40" (identifier "iVar5") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x38f84;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x38f84" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x38f84")) (; ";")) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = 7;" (assignment_expression "iVar5 = 7" (identifier "iVar5") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar9 = *(byte **)(puVar10 + 0x24);" (assignment_expression "pbVar9 = *(byte **)(puVar10 + 0x24)" (identifier "pbVar9") (= "=") (pointer_expression "*(byte **)(puVar10 + 0x24)" (* "*") (cast_expression "(byte **)(puVar10 + 0x24)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x24)" (( "(") (binary_expression "puVar10 + 0x24" (identifier "puVar10") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "pbVar13 = *(byte **)(puVar10 + 0x18);" (assignment_expression "pbVar13 = *(byte **)(puVar10 + 0x18)" (identifier "pbVar13") (= "=") (pointer_expression "*(byte **)(puVar10 + 0x18)" (* "*") (cast_expression "(byte **)(puVar10 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x18)" (( "(") (binary_expression "puVar10 + 0x18" (identifier "puVar10") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "pbVar14 = pbVar9;" (assignment_expression "pbVar14 = pbVar9" (identifier "pbVar14") (= "=") (identifier "pbVar9")) (; ";")) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while ((bool)uVar17);" (do "do") (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          uVar15 = *pbVar13 < *pbVar14;\n          uVar17 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar15 = *pbVar13 < *pbVar14;" (assignment_expression "uVar15 = *pbVar13 < *pbVar14" (identifier "uVar15") (= "=") (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "uVar17 = *pbVar13 == *pbVar14;" (assignment_expression "uVar17 = *pbVar13 == *pbVar14" (identifier "uVar17") (= "=") (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (== "==") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((bool)uVar17)" (( "(") (cast_expression "(bool)uVar17" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar17")) () ")")) (; ";")) (expression_statement "pbVar13 = pbVar9 + 7;" (assignment_expression "pbVar13 = pbVar9 + 7" (identifier "pbVar13") (= "=") (binary_expression "pbVar9 + 7" (identifier "pbVar9") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" (identifier "puVar11") (= "=") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;" (assignment_expression "bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15" (identifier "bVar18") (= "=") (binary_expression "(!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15" (parenthesized_expression "(!(bool)uVar15 && !(bool)uVar17)" (( "(") (binary_expression "!(bool)uVar15 && !(bool)uVar17" (unary_expression "!(bool)uVar15" (! "!") (cast_expression "(bool)uVar15" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar15"))) (&& "&&") (unary_expression "!(bool)uVar17" (! "!") (cast_expression "(bool)uVar17" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar17")))) () ")")) (== "==") (cast_expression "(bool)uVar15" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar15")))) (; ";")) (if_statement "if (!bVar18) {\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }" (if "if") (parenthesized_expression "(!bVar18)" (( "(") (unary_expression "!bVar18" (! "!") (identifier "bVar18")) () ")")) (compound_statement "{\n          iVar5 = 8;\n          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);\n          pbVar14 = pbVar9;\n          do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }\n          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);\n          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);\n          bVar18 = *puVar1 == 0;\n          pbVar13 = pbVar9 + 8;\n          pbVar9 = *(byte **)(puVar10 + 0x24);\n        }" ({ "{") (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" (identifier "iVar5") (= "=") (number_literal "8")) (; ";")) (expression_statement "pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);" (assignment_expression "pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28)" (identifier "pbVar13") (= "=") (cast_expression "(byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x10) + -0x10ea28)" (( "(") (binary_expression "*(int *)(puVar10 + 0x10) + -0x10ea28" (pointer_expression "*(int *)(puVar10 + 0x10)" (* "*") (cast_expression "(int *)(puVar10 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x10)" (( "(") (binary_expression "puVar10 + 0x10" (identifier "puVar10") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-0x10ea28")) () ")")))) (; ";")) (expression_statement "pbVar14 = pbVar9;" (assignment_expression "pbVar14 = pbVar9" (identifier "pbVar14") (= "=") (identifier "pbVar9")) (; ";")) (do_statement "do {\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          } while (bVar18);" (do "do") (compound_statement "{\n            if (iVar5 == 0) break;\n            iVar5 = iVar5 + -1;\n            bVar16 = *pbVar13 < *pbVar14;\n            bVar18 = *pbVar13 == *pbVar14;\n            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n          }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar13 < *pbVar14;" (assignment_expression "bVar16 = *pbVar13 < *pbVar14" (identifier "bVar16") (= "=") (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "bVar18 = *pbVar13 == *pbVar14;" (assignment_expression "bVar18 = *pbVar13 == *pbVar14" (identifier "bVar18") (= "=") (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (== "==") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (if_statement "if ((!bVar16 && !bVar18) != bVar16) {\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }" (if "if") (parenthesized_expression "((!bVar16 && !bVar18) != bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar18) != bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" (( "(") (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (!= "!=") (identifier "bVar16")) () ")")) (compound_statement "{\n            if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }\n            goto LAB_00039015;\n          }" ({ "{") (if_statement "if (pbVar9 != puVar10 + 0x2c) {\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }" (if "if") (parenthesized_expression "(pbVar9 != puVar10 + 0x2c)" (( "(") (binary_expression "pbVar9 != puVar10 + 0x2c" (identifier "pbVar9") (!= "!=") (binary_expression "puVar10 + 0x2c" (identifier "puVar10") (+ "+") (number_literal "0x2c"))) () ")")) (compound_statement "{\n              *(byte **)(puVar10 + -0x14) = pbVar9;\n              *(undefined4 *)(puVar10 + -0x18) = 0x39065;\n              FUN_001e6db0();\n              puVar11 = puVar10 + -4;\n            }" ({ "{") (expression_statement "*(byte **)(puVar10 + -0x14) = pbVar9;" (assignment_expression "*(byte **)(puVar10 + -0x14) = pbVar9" (pointer_expression "*(byte **)(puVar10 + -0x14)" (* "*") (cast_expression "(byte **)(puVar10 + -0x14)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "pbVar9")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x39065;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x39065" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x39065")) (; ";")) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" (identifier "FUN_001e6db0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" (identifier "puVar11") (= "=") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00039015;" (goto "goto") (statement_identifier "LAB_00039015") (; ";")) (} "}"))) (expression_statement "puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);" (assignment_expression "puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4)" (( "(") (binary_expression "*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4" (pointer_expression "*(int *)(*(int *)(puVar10 + 0x5c) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(puVar10 + 0x5c) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x5c) + 0xc)" (( "(") (binary_expression "*(int *)(puVar10 + 0x5c) + 0xc" (pointer_expression "*(int *)(puVar10 + 0x5c)" (* "*") (cast_expression "(int *)(puVar10 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x5c)" (( "(") (binary_expression "puVar10 + 0x5c" (identifier "puVar10") (+ "+") (number_literal "0x5c")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (binary_expression "(uVar12 >> 5) * 4" (parenthesized_expression "(uVar12 >> 5)" (( "(") (binary_expression "uVar12 >> 5" (identifier "uVar12") (>> ">>") (number_literal "5")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);" (assignment_expression "*puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f)" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 | 1 << ((byte)uVar12 & 0x1f)" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (| "|") (binary_expression "1 << ((byte)uVar12 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar12 & 0x1f)" (( "(") (binary_expression "(byte)uVar12 & 0x1f" (cast_expression "(byte)uVar12" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar12")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "bVar18 = *puVar1 == 0;" (assignment_expression "bVar18 = *puVar1 == 0" (identifier "bVar18") (= "=") (binary_expression "*puVar1 == 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "pbVar13 = pbVar9 + 8;" (assignment_expression "pbVar13 = pbVar9 + 8" (identifier "pbVar13") (= "=") (binary_expression "pbVar9 + 8" (identifier "pbVar9") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "pbVar9 = *(byte **)(puVar10 + 0x24);" (assignment_expression "pbVar9 = *(byte **)(puVar10 + 0x24)" (identifier "pbVar9") (= "=") (pointer_expression "*(byte **)(puVar10 + 0x24)" (* "*") (cast_expression "(byte **)(puVar10 + 0x24)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x24)" (( "(") (binary_expression "puVar10 + 0x24" (identifier "puVar10") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "iVar5 = 9;" (assignment_expression "iVar5 = 9" (identifier "iVar5") (= "=") (number_literal "9")) (; ";")) (expression_statement "pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);" (assignment_expression "pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0)" (identifier "pbVar14") (= "=") (cast_expression "(byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0x10) + -0x10eaa0)" (( "(") (binary_expression "*(int *)(puVar10 + 0x10) + -0x10eaa0" (pointer_expression "*(int *)(puVar10 + 0x10)" (* "*") (cast_expression "(int *)(puVar10 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x10)" (( "(") (binary_expression "puVar10 + 0x10" (identifier "puVar10") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-0x10eaa0")) () ")")))) (; ";")) (do_statement "do {\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        } while (bVar18);" (do "do") (compound_statement "{\n          if (iVar5 == 0) break;\n          iVar5 = iVar5 + -1;\n          bVar16 = *pbVar13 < *pbVar14;\n          bVar18 = *pbVar13 == *pbVar14;\n          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar5 == 0) break;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar13 < *pbVar14;" (assignment_expression "bVar16 = *pbVar13 < *pbVar14" (identifier "bVar16") (= "=") (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "bVar18 = *pbVar13 == *pbVar14;" (assignment_expression "bVar18 = *pbVar13 == *pbVar14" (identifier "bVar18") (= "=") (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (== "==") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "uVar7 = *(uint *)(puVar10 + 0xc);" (assignment_expression "uVar7 = *(uint *)(puVar10 + 0xc)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(puVar10 + 0xc)" (* "*") (cast_expression "(uint *)(puVar10 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xc)" (( "(") (binary_expression "puVar10 + 0xc" (identifier "puVar10") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if ((!bVar16 && !bVar18) == bVar16) {\n          uVar7 = uVar12;\n        }" (if "if") (parenthesized_expression "((!bVar16 && !bVar18) == bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" (( "(") (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar16")) () ")")) (compound_statement "{\n          uVar7 = uVar12;\n        }" ({ "{") (expression_statement "uVar7 = uVar12;" (assignment_expression "uVar7 = uVar12" (identifier "uVar7") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "*(uint *)(puVar10 + 0xc) = uVar7;" (assignment_expression "*(uint *)(puVar10 + 0xc) = uVar7" (pointer_expression "*(uint *)(puVar10 + 0xc)" (* "*") (cast_expression "(uint *)(puVar10 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xc)" (( "(") (binary_expression "puVar10 + 0xc" (identifier "puVar10") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" (identifier "puVar11") (= "=") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (pbVar9 != puVar10 + 0x2c) {\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }" (if "if") (parenthesized_expression "(pbVar9 != puVar10 + 0x2c)" (( "(") (binary_expression "pbVar9 != puVar10 + 0x2c" (identifier "pbVar9") (!= "!=") (binary_expression "puVar10 + 0x2c" (identifier "puVar10") (+ "+") (number_literal "0x2c"))) () ")")) (compound_statement "{\n          *(byte **)(puVar10 + -0x14) = pbVar9;\n          *(undefined4 *)(puVar10 + -0x18) = 0x39012;\n          FUN_001e6db0();\n          puVar11 = puVar10 + -4;\n        }" ({ "{") (expression_statement "*(byte **)(puVar10 + -0x14) = pbVar9;" (assignment_expression "*(byte **)(puVar10 + -0x14) = pbVar9" (pointer_expression "*(byte **)(puVar10 + -0x14)" (* "*") (cast_expression "(byte **)(puVar10 + -0x14)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "pbVar9")) (; ";")) (expression_statement "*(undefined4 *)(puVar10 + -0x18) = 0x39012;" (assignment_expression "*(undefined4 *)(puVar10 + -0x18) = 0x39012" (pointer_expression "*(undefined4 *)(puVar10 + -0x18)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0x39012")) (; ";")) (expression_statement "FUN_001e6db0();" (call_expression "FUN_001e6db0()" (identifier "FUN_001e6db0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar11 = puVar10 + -4;" (assignment_expression "puVar11 = puVar10 + -4" (identifier "puVar11") (= "=") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00039015:\n      uVar12 = uVar12 + 1;" (statement_identifier "LAB_00039015") (: ":") (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar10 = puVar11;" (assignment_expression "puVar10 = puVar11" (identifier "puVar10") (= "=") (identifier "puVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 < *(uint *)(puVar11 + 0xc))" (( "(") (binary_expression "uVar12 < *(uint *)(puVar11 + 0xc)" (identifier "uVar12") (< "<") (pointer_expression "*(uint *)(puVar11 + 0xc)" (* "*") (cast_expression "(uint *)(puVar11 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0xc)" (( "(") (binary_expression "puVar11 + 0xc" (identifier "puVar11") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (; ";")) (if_statement "if (*(int *)(puVar11 + 0x10) != 0) {\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }" (if "if") (parenthesized_expression "(*(int *)(puVar11 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(puVar11 + 0x10) != 0" (pointer_expression "*(int *)(puVar11 + 0x10)" (* "*") (cast_expression "(int *)(puVar11 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0x10)" (( "(") (binary_expression "puVar11 + 0x10" (identifier "puVar11") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);\n      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);\n      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);\n      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;\n      FUN_00036650();\n      return;\n    }" ({ "{") (expression_statement "*(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);" (assignment_expression "*(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100)" (pointer_expression "*(undefined4 *)(puVar11 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -8)" (( "(") (binary_expression "puVar11 + -8" (identifier "puVar11") (+ "+") (number_literal "-8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar11 + 100)" (* "*") (cast_expression "(undefined4 *)(puVar11 + 100)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 100)" (( "(") (binary_expression "puVar11 + 100" (identifier "puVar11") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);" (assignment_expression "*(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10)" (pointer_expression "*(int *)(puVar11 + -0xc)" (* "*") (cast_expression "(int *)(puVar11 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "*(int *)(puVar11 + 0x10)" (* "*") (cast_expression "(int *)(puVar11 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0x10)" (( "(") (binary_expression "puVar11 + 0x10" (identifier "puVar11") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60)" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar11 + 0x60)" (* "*") (cast_expression "(undefined4 *)(puVar11 + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0x60)" (( "(") (binary_expression "puVar11 + 0x60" (identifier "puVar11") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x3903f;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x3903f" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x3903f")) (; ";")) (expression_statement "FUN_00036650();" (call_expression "FUN_00036650()" (identifier "FUN_00036650") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar4 = **(undefined4 **)(puVar11 + 0x60);" (assignment_expression "uVar4 = **(undefined4 **)(puVar11 + 0x60)" (identifier "uVar4") (= "=") (pointer_expression "**(undefined4 **)(puVar11 + 0x60)" (* "*") (pointer_expression "*(undefined4 **)(puVar11 + 0x60)" (* "*") (cast_expression "(undefined4 **)(puVar11 + 0x60)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x60)" (( "(") (binary_expression "puVar11 + 0x60" (identifier "puVar11") (+ "+") (number_literal "0x60")) () ")")))))) (; ";")) (expression_statement "*(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;" (assignment_expression "*(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54" (pointer_expression "*(int *)(puVar11 + -0x10)" (* "*") (cast_expression "(int *)(puVar11 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "*(int *)(puVar11 + 0x14) + -0x10ec54" (pointer_expression "*(int *)(puVar11 + 0x14)" (* "*") (cast_expression "(int *)(puVar11 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0x14)" (( "(") (binary_expression "puVar11 + 0x14" (identifier "puVar11") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "-0x10ec54"))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x39108;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x39108" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39108")) (; ";")) (expression_statement "uVar8 = gettext();" (assignment_expression "uVar8 = gettext()" (identifier "uVar8") (= "=") (call_expression "gettext()" (identifier "gettext") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0xc) = uVar4;" (assignment_expression "*(undefined4 *)(puVar11 + -0xc) = uVar4" (pointer_expression "*(undefined4 *)(puVar11 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0xc)" (( "(") (binary_expression "puVar11 + -0xc" (identifier "puVar11") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x10) = uVar8;" (assignment_expression "*(undefined4 *)(puVar11 + -0x10) = uVar8" (pointer_expression "*(undefined4 *)(puVar11 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x10)" (( "(") (binary_expression "puVar11 + -0x10" (identifier "puVar11") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x14) = 0x39111;" (assignment_expression "*(undefined4 *)(puVar11 + -0x14) = 0x39111" (pointer_expression "*(undefined4 *)(puVar11 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x14)" (( "(") (binary_expression "puVar11 + -0x14" (identifier "puVar11") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x39111")) (; ";")) (expression_statement "FUN_00065450();" (call_expression "FUN_00065450()" (identifier "FUN_00065450") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: bool verify(Dwo_file * this, File_list * files) */

int __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *ctx,type_3 *sig,size_t siglen,type_3 *tbs,size_t tbslen)

{
  type_4 *p_Var1;
  type_5 *puVar2;
  type_6 var_14;
  type_6 var_13;
  int *piVar5;
  type_7 *pcVar6;
  type_8 uVar7;
  type_9 *pRVar8;
  int var_7;
  type_5 var_6;
  type_5 var_11;
  int var_5;
  type_10 extraout_var;
  type_8 uVar13;
  type_11 *var_8;
  type_12 *var_19;
  type_13 *var_16;
  type_13 *var_22;
  type_12 *var_17;
  type_12 *var_18;
  type_13 uVar20;
  bool var_20;
  type_13 uVar22;
  bool bVar23;
  type_12 bVar24;
  type_5 auStack_64 [2];
  type_13 auStack_5c [12];
  type_5 local_50 [2];
  type_14 **var_15;
  type_15 *local_44;
  type_14 **local_40;
  type_8 local_38;
  type_15 sect_name;
  
  bVar24 = 0;
  var_15 = &_GLOBAL_OFFSET_TABLE_;
  pRVar8 = var_1(this,(type_16 *)0x0);
  local_50[0] = (pRVar8->super_Object).shnum_;
  var_8 = (this->is_compressed_).super__Bvector_base<var_2::allocator<var_3>var_4>._M_impl.
            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;
  this->obj_ = pRVar8;
  p_Var1 = &(this->is_compressed_).super__Bvector_base<var_2::allocator<var_3>var_4>._M_impl.
            super__Bvector_impl_data._M_finish;
  var_6 = (this->is_compressed_).super__Bvector_base<var_2::allocator<var_3>var_4>._M_impl.
           super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;
  var_5 = (this->is_compressed_).super__Bvector_base<var_2::allocator<var_3>var_4>._M_impl.
           super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset +
           ((int)(p_Var1->super__Bit_iterator_base)._M_p - (int)var_8) * 8;
  if (local_50[0] < var_5 - var_6) {
    var_7 = var_6 + local_50[0];
    var_5 = var_7 + 0x1f;
    if (-1 < var_7) {
      var_5 = var_7;
    }
    var_8 = var_8 + (var_5 >> 5);
    var_6 = var_7 % 0x20;
    if ((int)var_6 < 0) {
      var_6 = var_6 + 0x20;
      var_8 = var_8 + -1;
    }
    (this->is_compressed_).super__Bvector_base<var_2::allocator<var_3>var_4>._M_impl.
    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p = var_8;
    (this->is_compressed_).super__Bvector_base<var_2::allocator<var_3>var_4>._M_impl.
    super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset = var_6;
  }
  else {
    std::vector<var_3,_std::allocator<var_3>var_4>::var_9
              (&this->is_compressed_,(type_17)p_Var1->super__Bit_iterator_base,
               (var_6 - var_5) + local_50[0],false);
  }
  var_6 = local_50[0];
  var_14 = (this->sect_offsets_).
           super__Vector_base<gold::var_10,_std::allocator<gold::var_10>var_4>._M_impl.
           _M_finish;
  var_13 = (this->sect_offsets_).
           super__Vector_base<gold::var_10,_std::allocator<gold::var_10>var_4>._M_impl.
           _M_start;
  var_11 = (int)var_14 - (int)var_13 >> 3;
  if (var_11 < local_50[0]) {
    std::vector<gold::var_10,_std::allocator<gold::var_10>var_4>::var_12
              (&this->sect_offsets_,local_50[0] - var_11);
  }
  else if ((local_50[0] < var_11) && (var_13 = var_13 + local_50[0], var_14 != var_13)) {
    (this->sect_offsets_).
    super__Vector_base<gold::var_10,_std::allocator<gold::var_10>var_4>._M_impl.
    _M_finish = var_13;
  }
  var_22 = auStack_5c;
  if (1 < var_6) {
    local_50[1] = 0;
    var_6 = 1;
    local_44 = &sect_name;
    local_40 = var_15 + -0x43a8c;
    var_16 = auStack_5c;
    do {
      piVar5 = *(int **)(*(int *)(var_16 + 0x60) + 4);
      var_5 = *piVar5;
      *(type_5 *)(var_16 + -0xc) = var_6;
      *(int **)(var_16 + -0x10) = piVar5;
      pcVar6 = *(type_7 **)(var_5 + 0x50);
      *(type_8 *)(var_16 + -0x14) = 0x38f61;
      var_5 = (*pcVar6)();
      var_22 = var_16;
      if (var_5 == 1) {
        uVar20 = var_16 < (type_13 *)0x4;
        uVar22 = var_16 == (type_13 *)0x4;
        piVar5 = *(int **)(*(int *)(var_16 + 0x60) + 4);
        var_5 = *piVar5;
        *(type_5 *)(var_16 + -8) = var_6;
        *(int **)(var_16 + -0xc) = piVar5;
        *(type_8 *)(var_16 + -0x10) = *(type_8 *)(var_16 + 0x18);
        pcVar6 = *(type_7 **)(var_5 + 0x40);
        *(type_8 *)(var_16 + -0x14) = 0x38f84;
        (*pcVar6)();
        var_5 = 7;
        var_19 = *(type_12 **)(var_16 + 0x24);
        var_17 = *(type_12 **)(var_16 + 0x18);
        var_18 = var_19;
        do {
          if (var_5 == 0) break;
          var_5 = var_5 + -1;
          uVar20 = *var_17 < *var_18;
          uVar22 = *var_17 == *var_18;
          var_17 = var_17 + (type_5)bVar24 * -2 + 1;
          var_18 = var_18 + (type_5)bVar24 * -2 + 1;
        } while ((bool)uVar22);
        var_17 = var_19 + 7;
        var_22 = var_16 + -4;
        var_20 = false;
        bVar23 = (!(bool)uVar20 && !(bool)uVar22) == (bool)uVar20;
        if (!bVar23) {
          var_5 = 8;
          var_17 = (type_12 *)(*(int *)(var_16 + 0x10) + -0x10ea28);
          var_18 = var_19;
          do {
            if (var_5 == 0) break;
            var_5 = var_5 + -1;
            var_20 = *var_17 < *var_18;
            bVar23 = *var_17 == *var_18;
            var_17 = var_17 + (type_5)bVar24 * -2 + 1;
            var_18 = var_18 + (type_5)bVar24 * -2 + 1;
          } while (bVar23);
          if ((!var_20 && !bVar23) != var_20) {
            if (var_19 != var_16 + 0x2c) {
              *(type_12 **)(var_16 + -0x14) = var_19;
              *(type_8 *)(var_16 + -0x18) = 0x39065;
              var_21(*(void **)(var_16 + -0x14));
              var_22 = var_16 + -4;
            }
            goto LAB_00039015;
          }
          puVar2 = (type_5 *)(*(int *)(*(int *)(var_16 + 0x5c) + 0xc) + (var_6 >> 5) * 4);
          *puVar2 = *puVar2 | 1 << ((type_12)var_6 & 0x1f);
          bVar23 = *puVar2 == 0;
          var_17 = var_19 + 8;
          var_19 = *(type_12 **)(var_16 + 0x24);
        }
        var_20 = false;
        var_5 = 9;
        var_18 = (type_12 *)(*(int *)(var_16 + 0x10) + -0x10eaa0);
        do {
          if (var_5 == 0) break;
          var_5 = var_5 + -1;
          var_20 = *var_17 < *var_18;
          bVar23 = *var_17 == *var_18;
          var_17 = var_17 + (type_5)bVar24 * -2 + 1;
          var_18 = var_18 + (type_5)bVar24 * -2 + 1;
        } while (bVar23);
        var_11 = *(type_5 *)(var_16 + 0xc);
        if ((!var_20 && !bVar23) == var_20) {
          var_11 = var_6;
        }
        *(type_5 *)(var_16 + 0xc) = var_11;
        var_22 = var_16 + -4;
        if (var_19 != var_16 + 0x2c) {
          *(type_12 **)(var_16 + -0x14) = var_19;
          *(type_8 *)(var_16 + -0x18) = 0x39012;
          var_21(*(void **)(var_16 + -0x14));
          var_22 = var_16 + -4;
        }
      }
LAB_00039015:
      var_6 = var_6 + 1;
      var_16 = var_22;
    } while (var_6 < *(type_5 *)(var_22 + 0xc));
    if (*(int *)(var_22 + 0x10) != 0) {
      *(type_8 *)(var_22 + -8) = *(type_8 *)(var_22 + 100);
      *(int *)(var_22 + -0xc) = *(int *)(var_22 + 0x10);
      *(type_8 *)(var_22 + -0x10) = *(type_8 *)(var_22 + 0x60);
      *(type_8 *)(var_22 + -0x14) = 0x3903f;
      var_20 = var_23(*(type_1 **)(var_22 + -0x10),*(type_5 *)(var_22 + -0xc),
                               *(type_18 **)(var_22 + -8));
      return var_24(extraout_var,var_20);
    }
  }
  uVar7 = **(type_8 **)(var_22 + 0x60);
  *(int *)(var_22 + -0x10) = *(int *)(var_22 + 0x14) + -0x10ec54;
  *(type_8 *)(var_22 + -0x14) = 0x39108;
  uVar13 = var_25();
  *(type_8 *)(var_22 + -0xc) = uVar7;
  *(type_8 *)(var_22 + -0x10) = uVar13;
                    /* WARNING: Subroutine does not return */
  *(type_14 **)(var_22 + -0x14) = &UNK_00039111;
  var_26(*(char **)(var_22 + -0x10));
}


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

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

void MASKED(int param_1)

{
  uint *puVar1;
  int *piVar2;
  code *pcVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined4 uVar8;
  byte *pbVar9;
  undefined1 *puVar10;
  undefined1 *puVar11;
  uint uVar12;
  byte *pbVar13;
  byte *pbVar14;
  undefined1 uVar15;
  bool bVar16;
  undefined1 uVar17;
  bool bVar18;
  byte bVar19;
  uint auStack_64 [2];
  undefined1 auStack_5c [12];
  uint local_50 [2];
  undefined **local_48;
  undefined **local_44 [4];
  undefined1 local_34 [36];
  
  bVar19 = 0;
  local_48 = &__DT_PLTGOT;
  iVar5 = FUN_00037ff0(param_1,0);
  local_50[0] = *(uint *)(iVar5 + 0x28);
  *(int *)(param_1 + 4) = iVar5;
  iVar6 = *(int *)(param_1 + 0x10);
  iVar5 = *(int *)(param_1 + 0x18) + (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) * 8;
  if (local_50[0] < (uint)(iVar5 - iVar6)) {
    iVar6 = iVar6 + local_50[0];
    iVar5 = iVar6 + 0x1f;
    if (-1 < iVar6) {
      iVar5 = iVar6;
    }
    iVar5 = *(int *)(param_1 + 0xc) + (iVar5 >> 5) * 4;
    iVar6 = iVar6 % 0x20;
    if (iVar6 < 0) {
      iVar6 = iVar6 + 0x20;
      iVar5 = iVar5 + -4;
    }
    *(int *)(param_1 + 0x14) = iVar5;
    *(int *)(param_1 + 0x18) = iVar6;
  }
  else {
    FUN_000502e0(param_1 + 0xc,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),
                 (iVar6 - iVar5) + local_50[0],0);
  }
  uVar12 = local_50[0];
  uVar7 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20) >> 3;
  if (uVar7 < local_50[0]) {
    FUN_0004af70(param_1 + 0x20,local_50[0] - uVar7);
  }
  else if ((local_50[0] < uVar7) &&
          (iVar5 = *(int *)(param_1 + 0x20) + local_50[0] * 8, *(int *)(param_1 + 0x24) != iVar5)) {
    *(int *)(param_1 + 0x24) = iVar5;
  }
  puVar11 = auStack_5c;
  if (1 < uVar12) {
    local_50[1] = 0;
    uVar12 = 1;
    local_44[0] = (undefined **)local_34;
    local_44[1] = local_48 + -0x43a8c;
    puVar10 = auStack_5c;
    do {
      piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);
      iVar5 = *piVar2;
      *(uint *)(puVar10 + -0xc) = uVar12;
      *(int **)(puVar10 + -0x10) = piVar2;
      pcVar3 = *(code **)(iVar5 + 0x50);
      *(undefined4 *)(puVar10 + -0x14) = 0x38f61;
      iVar5 = (*pcVar3)();
      puVar11 = puVar10;
      if (iVar5 == 1) {
        uVar15 = puVar10 < (undefined1 *)0x4;
        uVar17 = puVar10 == (undefined1 *)0x4;
        piVar2 = *(int **)(*(int *)(puVar10 + 0x60) + 4);
        iVar5 = *piVar2;
        *(uint *)(puVar10 + -8) = uVar12;
        *(int **)(puVar10 + -0xc) = piVar2;
        *(undefined4 *)(puVar10 + -0x10) = *(undefined4 *)(puVar10 + 0x18);
        pcVar3 = *(code **)(iVar5 + 0x40);
        *(undefined4 *)(puVar10 + -0x14) = 0x38f84;
        (*pcVar3)();
        iVar5 = 7;
        pbVar9 = *(byte **)(puVar10 + 0x24);
        pbVar13 = *(byte **)(puVar10 + 0x18);
        pbVar14 = pbVar9;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          uVar15 = *pbVar13 < *pbVar14;
          uVar17 = *pbVar13 == *pbVar14;
          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;
          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
        } while ((bool)uVar17);
        pbVar13 = pbVar9 + 7;
        puVar11 = puVar10 + -4;
        bVar16 = false;
        bVar18 = (!(bool)uVar15 && !(bool)uVar17) == (bool)uVar15;
        if (!bVar18) {
          iVar5 = 8;
          pbVar13 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10ea28);
          pbVar14 = pbVar9;
          do {
            if (iVar5 == 0) break;
            iVar5 = iVar5 + -1;
            bVar16 = *pbVar13 < *pbVar14;
            bVar18 = *pbVar13 == *pbVar14;
            pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;
            pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
          } while (bVar18);
          if ((!bVar16 && !bVar18) != bVar16) {
            if (pbVar9 != puVar10 + 0x2c) {
              *(byte **)(puVar10 + -0x14) = pbVar9;
              *(undefined4 *)(puVar10 + -0x18) = 0x39065;
              FUN_001e6db0();
              puVar11 = puVar10 + -4;
            }
            goto LAB_00039015;
          }
          puVar1 = (uint *)(*(int *)(*(int *)(puVar10 + 0x5c) + 0xc) + (uVar12 >> 5) * 4);
          *puVar1 = *puVar1 | 1 << ((byte)uVar12 & 0x1f);
          bVar18 = *puVar1 == 0;
          pbVar13 = pbVar9 + 8;
          pbVar9 = *(byte **)(puVar10 + 0x24);
        }
        bVar16 = false;
        iVar5 = 9;
        pbVar14 = (byte *)(*(int *)(puVar10 + 0x10) + -0x10eaa0);
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar16 = *pbVar13 < *pbVar14;
          bVar18 = *pbVar13 == *pbVar14;
          pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;
          pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
        } while (bVar18);
        uVar7 = *(uint *)(puVar10 + 0xc);
        if ((!bVar16 && !bVar18) == bVar16) {
          uVar7 = uVar12;
        }
        *(uint *)(puVar10 + 0xc) = uVar7;
        puVar11 = puVar10 + -4;
        if (pbVar9 != puVar10 + 0x2c) {
          *(byte **)(puVar10 + -0x14) = pbVar9;
          *(undefined4 *)(puVar10 + -0x18) = 0x39012;
          FUN_001e6db0();
          puVar11 = puVar10 + -4;
        }
      }
LAB_00039015:
      uVar12 = uVar12 + 1;
      puVar10 = puVar11;
    } while (uVar12 < *(uint *)(puVar11 + 0xc));
    if (*(int *)(puVar11 + 0x10) != 0) {
      *(undefined4 *)(puVar11 + -8) = *(undefined4 *)(puVar11 + 100);
      *(int *)(puVar11 + -0xc) = *(int *)(puVar11 + 0x10);
      *(undefined4 *)(puVar11 + -0x10) = *(undefined4 *)(puVar11 + 0x60);
      *(undefined4 *)(puVar11 + -0x14) = 0x3903f;
      FUN_00036650();
      return;
    }
  }
  uVar4 = **(undefined4 **)(puVar11 + 0x60);
  *(int *)(puVar11 + -0x10) = *(int *)(puVar11 + 0x14) + -0x10ec54;
  *(undefined4 *)(puVar11 + -0x14) = 0x39108;
  uVar8 = gettext();
  *(undefined4 *)(puVar11 + -0xc) = uVar4;
  *(undefined4 *)(puVar11 + -0x10) = uVar8;
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)(puVar11 + -0x14) = 0x39111;
  FUN_00065450();
}

