
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: void create_shdrs(Layout * this, Output_section * shstrtab_section,
   off_t * poff) */

void __thiscall
gold::Layout::create_shdrs(Layout *this,Output_section *shstrtab_section,off_t *poff)

{
  int *piVar1;
  undefined4 *puVar2;
  byte bVar3;
  Output_section_headers *pOVar4;
  int iVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined4 uVar8;
  _func_int_varargs **pp_Var9;
  undefined4 extraout_v1;
  uint uVar10;
  int iVar11;
  undefined4 unaff_s1;
  undefined4 unaff_s3;
  int *piVar12;
  longlong lVar13;
  off_t oVar14;
  longlong lVar15;
  int iVar16;
  undefined4 in_stack_ffffffd4;
  
  lVar15 = CONCAT44(unaff_s3,unaff_s1);
  iVar16 = 0x4c9240;
  pOVar4 = (Output_section_headers *)(*(code *)PTR_operator_new_004c13a8)(0x40);
                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */
  (**(code **)(iVar16 + -0x70cc))
            (pOVar4,this,&this->segment_list_,&this->section_list_,&this->unattached_section_list_,
             &this->namepool_,shstrtab_section);
  piVar12 = *(int **)(iVar16 + -0x788c);
  iVar5 = (**(code **)(iVar16 + -0x70f4))(*piVar12);
  if (iVar5 == 0) {
    pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;
    iVar5 = *(int *)poff;
    oVar14 = *poff;
    lVar15 = *poff;
    if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {
      lVar13 = (**(code **)(iVar16 + -0x70c4))();
    }
    else {
      iVar7 = (*pp_Var9[3])(pOVar4);
      lVar13 = CONCAT44(iVar7,pp_Var9);
    }
    uVar10 = (uint)oVar14 - 1;
    iVar7 = iVar16;
    if (lVar13 == 0) goto LAB_001b298c;
    lVar15 = lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10);
    lVar15 = CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &
                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),
                      (uint)lVar15 & -(int)lVar13);
    goto LAB_001b298c;
  }
  pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;
  if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) {
    if (pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0)) {
      oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);
      iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;
      iVar7 = iVar16;
      if (iVar5 << 1 < 0) goto LAB_001b2bfc;
      iVar11 = *(int *)(iVar16 + -0x77f0);
      if (iVar5 << 3 < 0) goto LAB_001b2c00;
      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;
      (pOVar4->super_Output_data).data_size_ = oVar14;
      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;
    }
    else {
      (*pp_Var9[0xd])(pOVar4);
      iVar7 = iVar16;
      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;
      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;
    }
  }
  if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {
    oVar14 = (**(code **)(iVar16 + -0x70c4))();
  }
  else {
    iVar5 = (*pp_Var9[3])(pOVar4);
    oVar14 = CONCAT44(iVar5,pp_Var9);
  }
  lVar15 = Free_list::allocate(&this->free_list_,oVar14,*poff,CONCAT44(iVar16,in_stack_ffffffd4));
  uVar8 = (undefined4)lVar15;
  iVar7 = iVar16;
  if ((int)((ulonglong)lVar15 >> 0x20) == -1) goto LAB_001b2c50;
  do {
    puVar6 = (undefined4 *)*piVar12;
    if ((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)) {
LAB_001b298c:
      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {
        bVar3 = (pOVar4->super_Output_data).field_0x20;
        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;
        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;
        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;
        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;
        (pOVar4->super_Output_data).offset_ = lVar15;
        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;
        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||
           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,
           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {
          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;
          iVar16 = (int)((ulonglong)lVar15 >> 0x20);
          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))
          {
            *poff = lVar15;
          }
          this->section_headers_ = pOVar4;
          return;
        }
        goto LAB_001b2c74;
      }
    }
    else {
      piVar1 = (int *)(iVar16 + -0x77f0);
      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {
        puVar2 = (undefined4 *)(iVar16 + -0x7228);
        iVar16 = iVar7;
        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,
                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);
        iVar7 = iVar16;
        goto LAB_001b298c;
      }
LAB_001b2be0:
      (**(code **)(iVar16 + -0x7810))
                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);
LAB_001b2bfc:
      iVar11 = *(int *)(iVar16 + -0x77f0);
LAB_001b2c00:
      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);
LAB_001b2c18:
      (**(code **)(iVar16 + -0x7810))
                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);
    }
    uVar8 = (undefined4)lVar15;
    (**(code **)(iVar16 + -0x7810))
              (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4);
    lVar15 = CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1);
LAB_001b2c50:
    iVar11 = (int)((ulonglong)lVar15 >> 0x20);
    iVar5 = (int)lVar15;
    lVar15 = CONCAT44(iVar11,uVar8);
  } while (iVar5 != iVar11);
  uVar8 = (**(code **)(iVar16 + -0x3610))(*(int *)(iVar16 + -0x77f0) + 0x3514);
  iVar16 = iVar7;
  (**(code **)(iVar7 + -0x70e8))(uVar8);
LAB_001b2c74:
  iVar5 = *(int *)(iVar7 + -0x7fc4) + 0x3574;
  (**(code **)(iVar7 + -0x7810))(iVar5,0x163,*(int *)(iVar7 + -0x77f0) + 0x4598);
                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */
  (**(code **)(iVar16 + -0x7e1c))(pOVar4,0x40);
  (**(code **)(iVar16 + -0x7f78))(iVar5);
  return;
}



/* gold::Layout::create_shdrs(gold::Output_section const*, long long*) */

uint __thiscall gold::Layout::create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)

{
  int *piVar1;
  byte bVar2;
  longlong lVar3;
  int *piVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 extraout_v1;
  uint uVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  undefined4 unaff_s1;
  undefined4 unaff_s3;
  int iVar10;
  int *piVar11;
  int in_t9;
  code *pcVar12;
  int iVar13;
  int iVar14;
  longlong lVar15;
  undefined8 uVar16;
  longlong lVar17;
  undefined4 in_stack_ffffffd4;
  
  lVar17 = CONCAT44(unaff_s3,unaff_s1);
  iVar13 = in_t9 + 0x3169bc;
  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);
                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */
  (**(code **)(iVar13 + -0x70cc))
            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);
  piVar11 = *(int **)(iVar13 + -0x788c);
  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);
  if (iVar5 == 0) {
    iVar5 = *(int *)param_2;
    lVar3 = *param_2;
    lVar17 = *param_2;
    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {
      lVar15 = (**(code **)(iVar13 + -0x70c4))();
    }
    else {
      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);
    }
    uVar7 = (uint)lVar3 - 1;
    iVar14 = iVar13;
    if (lVar15 == 0) goto LAB_001b298c;
    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);
    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &
                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),
                      (uint)lVar17 & -(int)lVar15);
    goto LAB_001b298c;
  }
  iVar5 = *piVar4;
  if (-1 < piVar4[8] << 1) {
    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {
      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);
      iVar14 = iVar13;
      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;
      iVar5 = *(int *)(iVar13 + -0x77f0);
      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;
      iVar5 = *piVar4;
      *(undefined8 *)(piVar4 + 4) = uVar16;
      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;
    }
    else {
      (**(code **)(iVar5 + 0x34))(piVar4);
      iVar14 = iVar13;
      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;
      iVar5 = *piVar4;
    }
  }
  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {
    lVar17 = (**(code **)(iVar13 + -0x70c4))();
  }
  else {
    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);
  }
  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));
  uVar6 = (undefined4)lVar17;
  iVar14 = iVar13;
  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;
  do {
    puVar8 = (undefined4 *)*piVar11;
    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {
LAB_001b298c:
      if (-1 < piVar4[8]) {
        bVar2 = *(byte *)(piVar4 + 8);
        piVar4[3] = 0;
        piVar4[2] = 0;
        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;
        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;
        *(longlong *)(piVar4 + 6) = lVar17;
        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;
        if ((piVar4[8] << 1 < 0) ||
           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {
          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);
          iVar13 = (int)((ulonglong)lVar17 >> 0x20);
          if ((*(int *)param_2 < iVar13) ||
             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {
            *param_2 = lVar17;
          }
          *(int **)(this + 0x16c) = piVar4;
          return (uint)lVar17;
        }
        goto LAB_001b2c74;
      }
    }
    else {
      piVar1 = (int *)(iVar13 + -0x77f0);
      if (piVar4[8] << 1 < 0) {
        puVar9 = (undefined4 *)(iVar13 + -0x7228);
        iVar13 = iVar14;
        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);
        iVar14 = iVar13;
        goto LAB_001b298c;
      }
LAB_001b2be0:
      (**(code **)(iVar13 + -0x7810))
                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);
LAB_001b2bfc:
      iVar5 = *(int *)(iVar13 + -0x77f0);
LAB_001b2c00:
      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);
LAB_001b2c18:
      (**(code **)(iVar13 + -0x7810))
                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);
    }
    uVar6 = (undefined4)lVar17;
    (**(code **)(iVar13 + -0x7810))
              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);
    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);
LAB_001b2c50:
    iVar10 = (int)((ulonglong)lVar17 >> 0x20);
    iVar5 = (int)lVar17;
    lVar17 = CONCAT44(iVar10,uVar6);
  } while (iVar5 != iVar10);
  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);
  iVar13 = iVar14;
  (**(code **)(iVar14 + -0x70e8))(uVar6);
LAB_001b2c74:
  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;
  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);
                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */
  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);
  pcVar12 = *(code **)(iVar13 + -0x7f78);
  (*pcVar12)();
  puVar8 = *(undefined4 **)(iVar5 + 0x130);
  uVar7 = 0;
  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {
    return 0;
  }
  do {
    puVar9 = puVar8 + 1;
    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);
    uVar7 = uVar7 + iVar13;
    puVar8 = puVar9;
  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);
  return uVar7;
}


lui gp,0x31
addiu gp,gp,0x69bc
addu gp,gp,t9
addiu sp,sp,-0x50
lw t9,-0x7e98(gp)
sw s2,0x34(sp)
or s2,a0,zero
li a0,0x40
sw gp,0x20(sp)
sw s4,0x3c(sp)
or s4,a2,zero
sw s0,0x2c(sp)
or s0,a1,zero
sw ra,0x4c(sp)
sw s7,0x48(sp)
sw s6,0x44(sp)
sw s5,0x40(sp)
sw s3,0x38(sp)
jalr t9
_sw s1,0x30(sp)
addiu a0,s2,0x8
lw gp,0x20(sp)
addiu v1,s2,0x148
addiu a3,s2,0x13c
sw s0,0x18(sp)
addiu a2,s2,0x130
sw a0,0x14(sp)
sw v1,0x10(sp)
or a1,s2,zero
lw t9,-0x70cc(gp)
or a0,v0,zero
jalr t9
_or s0,v0,zero
lw gp,0x20(sp)
lw s5,-0x788c(gp)
lw t9,-0x70f4(gp)
jalr t9
_lw a0,0x0(s5)
bne v0,zero,0x001b2a78
_lw gp,0x20(sp)
lw v1,0x0(s0)
lw v0,-0x70c8(gp)
lw s3,0x0(s4)
lw t9,0xc(v1)
bne t9,v0,0x001b2bc0
_lw s1,0x4(s4)
lw t9,-0x70c4(gp)
jalr t9
_nop
lw gp,0x20(sp)
or a0,v0,v1
beq a0,zero,0x001b298c
_addiu a0,s1,-0x1
addiu s3,s3,-0x1
sltu s1,a0,s1
addu s3,s1,s3
addu s1,a0,v1
subu v1,zero,v1
addu s3,s3,v0
subu v0,zero,v0
sltu a0,s1,a0
sltu a1,zero,v1
addu a0,a0,s3
subu s3,v0,a1
and s1,s1,v1
and s3,a0,s3
lw v0,0x20(s0)
bltz v0,0x001b2c34
_or a3,zero,zero
lbu v0,0x20(s0)
li a0,0x1
or a2,zero,zero
ins v0,a0,0x7,0x1
sw a3,0xc(s0)
sw a2,0x8(s0)
sb v0,0x20(s0)
lw v1,0x20(s0)
ext v1,v1,0x1d,0x1
bne v1,zero,0x001b2c18
_ins v0,a0,0x5,0x1
sw s3,0x18(s0)
sw s1,0x1c(s0)
sb v0,0x20(s0)
lw v0,0x20(s0)
ext v0,v0,0x1e,0x1
bne v0,zero,0x001b2a00
_nop
lw v0,0x0(s0)
lw t9,0x38(v0)
jalr t9
_or a0,s0,zero
lw v0,0x20(s0)
ext v0,v0,0x1e,0x1
beq v0,zero,0x001b2c74
_lw gp,0x20(sp)
lw v0,0x14(s0)
lw a0,0x10(s0)
lw v1,0x0(s4)
addu v0,s1,v0
addu s3,s3,a0
sltu s1,v0,s1
addu s1,s1,s3
slt a0,v1,s1
bne a0,zero,0x001b2a40
_nop
bne v1,s1,0x001b2a4c
_lw ra,0x4c(sp)
lw v1,0x4(s4)
sltu v1,v1,v0
beq v1,zero,0x001b2a50
_lw s7,0x48(sp)
sw s1,0x0(s4)
sw v0,0x4(s4)
lw ra,0x4c(sp)
lw s7,0x48(sp)
lw s6,0x44(sp)
lw s5,0x40(sp)
lw s4,0x3c(sp)
lw s3,0x38(sp)
lw s1,0x30(sp)
sw s0,0x16c(s2)
lw s2,0x34(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x50
lw v0,0x20(s0)
ext v0,v0,0x1e,0x1
bne v0,zero,0x001b2b04
_lw v1,0x0(s0)
lw t9,0x34(v1)
lw v0,-0x70c0(gp)
bne t9,v0,0x001b2ae8
_nop
lw t9,-0x70bc(gp)
jalr t9
_or a0,s0,zero
lw a0,0x20(s0)
or s6,v0,zero
lw gp,0x20(sp)
ext v0,a0,0x1e,0x1
bne v0,zero,0x001b2bfc
_or s7,v1,zero
ext a0,a0,0x1c,0x1
bne a0,zero,0x001b2c00
_lw a2,-0x77f0(gp)
lbu v0,0x20(s0)
li a0,0x1
lw v1,0x0(s0)
sw s7,0x14(s0)
ins v0,a0,0x6,0x1
sw s6,0x10(s0)
b 0x001b2b0c
_sb v0,0x20(s0)
jalr t9
_or a0,s0,zero
lw v0,0x20(s0)
ext v0,v0,0x1e,0x1
beq v0,zero,0x001b2be0
_lw gp,0x20(sp)
lw v1,0x0(s0)
lw s7,0x14(s0)
lw s6,0x10(s0)
lw t9,0xc(v1)
lw v0,-0x70c8(gp)
bne t9,v0,0x001b2bd0
_nop
lw t9,-0x70c4(gp)
jalr t9
_nop
lw gp,0x20(sp)
lw t1,0x4(s4)
addiu a0,s2,0x258
lw t0,0x0(s4)
or a3,s7,zero
lw t9,-0x70f0(gp)
or a2,s6,zero
sw v1,0x14(sp)
sw v0,0x10(sp)
sw t1,0x1c(sp)
bal 0x001af978
_sw t0,0x18(sp)
li a0,-0x1
or s3,v0,zero
lw gp,0x20(sp)
beq s3,a0,0x001b2c50
_or s1,v1,zero
lw v0,0x0(s5)
lw v1,0x8(v0)
beq v1,zero,0x001b298c
_nop
lw v1,0x14(v0)
andi v1,v1,0x10
beq v1,zero,0x001b298c
_nop
lw v1,0x20(s0)
lw a0,0x0(v0)
ext v0,v1,0x1e,0x1
beq v0,zero,0x001b2be0
_lw a1,-0x77f0(gp)
or a2,s1,zero
lw a3,0x14(s0)
lw t9,-0x7228(gp)
addiu a1,a1,0x3560
jalr t9
_addu a3,a3,s1
b 0x001b298c
_lw gp,0x20(sp)
jalr t9
_or a0,s0,zero
b 0x001b294c
_lw gp,0x20(sp)
jalr t9
_or a0,s0,zero
b 0x001b2b2c
_lw gp,0x20(sp)
lw a2,-0x77f0(gp)
li a1,0xcf
lw a0,-0x7fc4(gp)
lw t9,-0x7810(gp)
addiu a2,a2,0x47dc
jalr t9
_addiu a0,a0,0x3574
lw a2,-0x77f0(gp)
li a1,0x218
lw a0,-0x7fc4(gp)
lw t9,-0x7810(gp)
addiu a2,a2,0x45e0
jalr t9
_addiu a0,a0,0x3574
lw a2,-0x77f0(gp)
li a1,0x14b
lw a0,-0x7fc4(gp)
lw t9,-0x7810(gp)
addiu a2,a2,0x44d4
jalr t9
_addiu a0,a0,0x3574
lw a2,-0x77f0(gp)
li a1,0x142
lw a0,-0x7fc4(gp)
lw t9,-0x7810(gp)
addiu a2,a2,0x44e4
jalr t9
_addiu a0,a0,0x3574
bne v1,s3,0x001b2b6c
_lw a0,-0x77f0(gp)
lw t9,-0x3610(gp)
jalr t9
_addiu a0,a0,0x3514
lw gp,0x20(sp)
lw t9,-0x70e8(gp)
jalr t9
_or a0,v0,zero
lw a2,-0x77f0(gp)
li a1,0x163
lw a0,-0x7fc4(gp)
lw t9,-0x7810(gp)
addiu a2,a2,0x4598
jalr t9
_addiu a0,a0,0x3574
lw gp,0x20(sp)
li a1,0x40
or s1,a0,zero
lw t9,-0x7e1c(gp)
jalr t9
_or a0,s0,zero
lw gp,0x20(sp)
lw t9,-0x7f78(gp)
jalr t9
_or a0,s1,zero
(translation_unit "/* gold::Layout::create_shdrs(gold::Output_section const*, long long*) */\n\nuint __thiscall gold::Layout::create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)\n\n{\n  int *piVar1;\n  byte bVar2;\n  longlong lVar3;\n  int *piVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 extraout_v1;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int iVar10;\n  int *piVar11;\n  int in_t9;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar17 = CONCAT44(unaff_s3,unaff_s1);\n  iVar13 = in_t9 + 0x3169bc;\n  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);\n                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */\n  (**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);\n  piVar11 = *(int **)(iVar13 + -0x788c);\n  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);\n  if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }\n  iVar5 = *piVar4;\n  if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }\n  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }\n  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));\n  uVar6 = (undefined4)lVar17;\n  iVar14 = iVar13;\n  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);\n  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);\n  iVar13 = iVar14;\n  (**(code **)(iVar14 + -0x70e8))(uVar6);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);\n                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */\n  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);\n  pcVar12 = *(code **)(iVar13 + -0x7f78);\n  (*pcVar12)();\n  puVar8 = *(undefined4 **)(iVar5 + 0x130);\n  uVar7 = 0;\n  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }\n  do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);\n  return uVar7;\n}\n\n" comment (function_definition "uint __thiscall gold::Layout::create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)\n\n{\n  int *piVar1;\n  byte bVar2;\n  longlong lVar3;\n  int *piVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 extraout_v1;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int iVar10;\n  int *piVar11;\n  int in_t9;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar17 = CONCAT44(unaff_s3,unaff_s1);\n  iVar13 = in_t9 + 0x3169bc;\n  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);\n                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */\n  (**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);\n  piVar11 = *(int **)(iVar13 + -0x788c);\n  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);\n  if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }\n  iVar5 = *piVar4;\n  if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }\n  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }\n  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));\n  uVar6 = (undefined4)lVar17;\n  iVar14 = iVar13;\n  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);\n  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);\n  iVar13 = iVar14;\n  (**(code **)(iVar14 + -0x70e8))(uVar6);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);\n                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */\n  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);\n  pcVar12 = *(code **)(iVar13 + -0x7f78);\n  (*pcVar12)();\n  puVar8 = *(undefined4 **)(iVar5 + 0x130);\n  uVar7 = 0;\n  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }\n  do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);\n  return uVar7;\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)" identifier (parameter_list "(Layout *this,Output_section *param_1,longlong *param_2)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_section *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "longlong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  longlong lVar3;\n  int *piVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 extraout_v1;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int iVar10;\n  int *piVar11;\n  int in_t9;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar17 = CONCAT44(unaff_s3,unaff_s1);\n  iVar13 = in_t9 + 0x3169bc;\n  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);\n                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */\n  (**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);\n  piVar11 = *(int **)(iVar13 + -0x788c);\n  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);\n  if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }\n  iVar5 = *piVar4;\n  if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }\n  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }\n  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));\n  uVar6 = (undefined4)lVar17;\n  iVar14 = iVar13;\n  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);\n  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);\n  iVar13 = iVar14;\n  (**(code **)(iVar14 + -0x70e8))(uVar6);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);\n                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */\n  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);\n  pcVar12 = *(code **)(iVar13 + -0x7f78);\n  (*pcVar12)();\n  puVar8 = *(undefined4 **)(iVar5 + 0x130);\n  uVar7 = 0;\n  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }\n  do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);\n  return uVar7;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 extraout_v1;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 unaff_s1;" type_identifier identifier ;) (declaration "undefined4 unaff_s3;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "longlong lVar15;" type_identifier identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "longlong lVar17;" type_identifier identifier ;) (declaration "undefined4 in_stack_ffffffd4;" type_identifier identifier ;) (expression_statement "lVar17 = CONCAT44(unaff_s3,unaff_s1);" (assignment_expression "lVar17 = CONCAT44(unaff_s3,unaff_s1)" identifier = (call_expression "CONCAT44(unaff_s3,unaff_s1)" identifier (argument_list "(unaff_s3,unaff_s1)" ( identifier , identifier )))) ;) (expression_statement "iVar13 = in_t9 + 0x3169bc;" (assignment_expression "iVar13 = in_t9 + 0x3169bc" identifier = (binary_expression "in_t9 + 0x3169bc" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);" (assignment_expression "piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40)" identifier = (cast_expression "(int *)(**(code **)(in_t9 + 0x30eb24))(0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0x30eb24))(0x40)" (parenthesized_expression "(**(code **)(in_t9 + 0x30eb24))" ( (pointer_expression "**(code **)(in_t9 + 0x30eb24)" * (pointer_expression "*(code **)(in_t9 + 0x30eb24)" * (cast_expression "(code **)(in_t9 + 0x30eb24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x30eb24)" ( (binary_expression "in_t9 + 0x30eb24" identifier + number_literal) ))))) )) (argument_list "(0x40)" ( number_literal ))))) ;) comment (expression_statement "(**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);" (call_expression "(**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1)" (parenthesized_expression "(**(code **)(iVar13 + -0x70cc))" ( (pointer_expression "**(code **)(iVar13 + -0x70cc)" * (pointer_expression "*(code **)(iVar13 + -0x70cc)" * (cast_expression "(code **)(iVar13 + -0x70cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70cc)" ( (binary_expression "iVar13 + -0x70cc" identifier + number_literal) ))))) )) (argument_list "(piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1)" ( identifier , identifier , (binary_expression "this + 0x130" identifier + number_literal) , (binary_expression "this + 0x13c" identifier + number_literal) , (binary_expression "this + 0x148" identifier + number_literal) , (binary_expression "this + 8" identifier + number_literal) , identifier ))) ;) (expression_statement "piVar11 = *(int **)(iVar13 + -0x788c);" (assignment_expression "piVar11 = *(int **)(iVar13 + -0x788c)" identifier = (pointer_expression "*(int **)(iVar13 + -0x788c)" * (cast_expression "(int **)(iVar13 + -0x788c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x788c)" ( (binary_expression "iVar13 + -0x788c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);" (assignment_expression "iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11)" identifier = (call_expression "(**(code **)(iVar13 + -0x70f4))(*piVar11)" (parenthesized_expression "(**(code **)(iVar13 + -0x70f4))" ( (pointer_expression "**(code **)(iVar13 + -0x70f4)" * (pointer_expression "*(code **)(iVar13 + -0x70f4)" * (cast_expression "(code **)(iVar13 + -0x70f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70f4)" ( (binary_expression "iVar13 + -0x70f4" identifier + number_literal) ))))) )) (argument_list "(*piVar11)" ( (pointer_expression "*piVar11" * identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }" { (expression_statement "iVar5 = *(int *)param_2;" (assignment_expression "iVar5 = *(int *)param_2" identifier = (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "lVar3 = *param_2;" (assignment_expression "lVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "lVar17 = *param_2;" (assignment_expression "lVar17 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" if (parenthesized_expression "(*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8))" ( (binary_expression "*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)" (pointer_expression "*(code **)(*piVar4 + 0xc)" * (cast_expression "(code **)(*piVar4 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0xc)" ( (binary_expression "*piVar4 + 0xc" (pointer_expression "*piVar4" * identifier) + number_literal) )))) == (pointer_expression "*(code **)(iVar13 + -0x70c8)" * (cast_expression "(code **)(iVar13 + -0x70c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c8)" ( (binary_expression "iVar13 + -0x70c8" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }" { (expression_statement "lVar15 = (**(code **)(iVar13 + -0x70c4))();" (assignment_expression "lVar15 = (**(code **)(iVar13 + -0x70c4))()" identifier = (call_expression "(**(code **)(iVar13 + -0x70c4))()" (parenthesized_expression "(**(code **)(iVar13 + -0x70c4))" ( (pointer_expression "**(code **)(iVar13 + -0x70c4)" * (pointer_expression "*(code **)(iVar13 + -0x70c4)" * (cast_expression "(code **)(iVar13 + -0x70c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c4)" ( (binary_expression "iVar13 + -0x70c4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" else (compound_statement "{\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" { (expression_statement "lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);" (assignment_expression "lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4)" identifier = (call_expression "(**(code **)(*piVar4 + 0xc))(piVar4)" (parenthesized_expression "(**(code **)(*piVar4 + 0xc))" ( (pointer_expression "**(code **)(*piVar4 + 0xc)" * (pointer_expression "*(code **)(*piVar4 + 0xc)" * (cast_expression "(code **)(*piVar4 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0xc)" ( (binary_expression "*piVar4 + 0xc" (pointer_expression "*piVar4" * identifier) + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier )))) ;) }))) (expression_statement "uVar7 = (uint)lVar3 - 1;" (assignment_expression "uVar7 = (uint)lVar3 - 1" identifier = (binary_expression "(uint)lVar3 - 1" (cast_expression "(uint)lVar3" ( (type_descriptor "uint" type_identifier) ) identifier) - number_literal)) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (if_statement "if (lVar15 == 0) goto LAB_001b298c;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;)) (expression_statement "lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);" (assignment_expression "lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" identifier = (binary_expression "lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" identifier + (call_expression "CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" identifier (argument_list "((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" ( (binary_expression "(uint)(uVar7 < (uint)lVar3) + iVar5 + -1" (binary_expression "(uint)(uVar7 < (uint)lVar3) + iVar5" (call_expression "(uint)(uVar7 < (uint)lVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < (uint)lVar3)" ( (binary_expression "uVar7 < (uint)lVar3" identifier < (cast_expression "(uint)lVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) + identifier) + number_literal) , identifier ))))) ;) (expression_statement "lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);" (assignment_expression "lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" identifier = (call_expression "CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" identifier (argument_list "((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" ( (binary_expression "(uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20)" (call_expression "(uint)((ulonglong)lVar17 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) & (binary_expression "-(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20)" (unary_expression "-(uint)(-(int)lVar15 != 0)" - (call_expression "(uint)(-(int)lVar15 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-(int)lVar15 != 0)" ( (binary_expression "-(int)lVar15 != 0" (unary_expression "-(int)lVar15" - (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier)) != number_literal) )))) - (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) , (binary_expression "(uint)lVar17 & -(int)lVar15" (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier) & (unary_expression "-(int)lVar15" - (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;) })) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }" if (parenthesized_expression "(-1 < piVar4[8] << 1)" ( (binary_expression "-1 < piVar4[8] << 1" number_literal < (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal)) )) (compound_statement "{\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }" { (if_statement "if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" if (parenthesized_expression "(*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0))" ( (binary_expression "*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)" (pointer_expression "*(code **)(iVar5 + 0x34)" * (cast_expression "(code **)(iVar5 + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) )))) == (pointer_expression "*(code **)(iVar13 + -0x70c0)" * (cast_expression "(code **)(iVar13 + -0x70c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c0)" ( (binary_expression "iVar13 + -0x70c0" identifier + number_literal) ))))) )) (compound_statement "{\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }" { (expression_statement "uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);" (assignment_expression "uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4)" identifier = (call_expression "(**(code **)(iVar13 + -0x70bc))(piVar4)" (parenthesized_expression "(**(code **)(iVar13 + -0x70bc))" ( (pointer_expression "**(code **)(iVar13 + -0x70bc)" * (pointer_expression "*(code **)(iVar13 + -0x70bc)" * (cast_expression "(code **)(iVar13 + -0x70bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70bc)" ( (binary_expression "iVar13 + -0x70bc" identifier + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier )))) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (if_statement "if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;" if (parenthesized_expression "(piVar4[8] << 1 < 0)" ( (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2bfc;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)(iVar13 + -0x77f0);" (assignment_expression "iVar5 = *(int *)(iVar13 + -0x77f0)" identifier = (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) ))))) ;) (if_statement "if (piVar4[8] << 3 < 0) goto LAB_001b2c00;" if (parenthesized_expression "(piVar4[8] << 3 < 0)" ( (binary_expression "piVar4[8] << 3 < 0" (binary_expression "piVar4[8] << 3" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2c00;" goto statement_identifier ;)) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "*(undefined8 *)(piVar4 + 4) = uVar16;" (assignment_expression "*(undefined8 *)(piVar4 + 4) = uVar16" (pointer_expression "*(undefined8 *)(piVar4 + 4)" * (cast_expression "(undefined8 *)(piVar4 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 4)" ( (binary_expression "piVar4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;" (assignment_expression "*(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40" (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar4 + 8) & 0xbf | 0x40" (binary_expression "*(byte *)(piVar4 + 8) & 0xbf" (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }) (else_clause "else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" else (compound_statement "{\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" { (expression_statement "(**(code **)(iVar5 + 0x34))(piVar4);" (call_expression "(**(code **)(iVar5 + 0x34))(piVar4)" (parenthesized_expression "(**(code **)(iVar5 + 0x34))" ( (pointer_expression "**(code **)(iVar5 + 0x34)" * (pointer_expression "*(code **)(iVar5 + 0x34)" * (cast_expression "(code **)(iVar5 + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier ))) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (if_statement "if (-1 < piVar4[8] << 1) goto LAB_001b2be0;" if (parenthesized_expression "(-1 < piVar4[8] << 1)" ( (binary_expression "-1 < piVar4[8] << 1" number_literal < (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal)) )) (goto_statement "goto LAB_001b2be0;" goto statement_identifier ;)) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) }))) })) (if_statement "if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" if (parenthesized_expression "(*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8))" ( (binary_expression "*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)" (pointer_expression "*(code **)(iVar5 + 0xc)" * (cast_expression "(code **)(iVar5 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) == (pointer_expression "*(code **)(iVar13 + -0x70c8)" * (cast_expression "(code **)(iVar13 + -0x70c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c8)" ( (binary_expression "iVar13 + -0x70c8" identifier + number_literal) ))))) )) (compound_statement "{\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }" { (expression_statement "lVar17 = (**(code **)(iVar13 + -0x70c4))();" (assignment_expression "lVar17 = (**(code **)(iVar13 + -0x70c4))()" identifier = (call_expression "(**(code **)(iVar13 + -0x70c4))()" (parenthesized_expression "(**(code **)(iVar13 + -0x70c4))" ( (pointer_expression "**(code **)(iVar13 + -0x70c4)" * (pointer_expression "*(code **)(iVar13 + -0x70c4)" * (cast_expression "(code **)(iVar13 + -0x70c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c4)" ( (binary_expression "iVar13 + -0x70c4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" else (compound_statement "{\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" { (expression_statement "lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);" (assignment_expression "lVar17 = (**(code **)(iVar5 + 0xc))(piVar4)" identifier = (call_expression "(**(code **)(iVar5 + 0xc))(piVar4)" (parenthesized_expression "(**(code **)(iVar5 + 0xc))" ( (pointer_expression "**(code **)(iVar5 + 0xc)" * (pointer_expression "*(code **)(iVar5 + 0xc)" * (cast_expression "(code **)(iVar5 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier )))) ;) }))) (ERROR "lVar17 = Free_list::" (assignment_expression "lVar17 = Free_list" identifier = identifier) : :) (expression_statement "allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));" (call_expression "allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4))" identifier (argument_list "(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4))" ( identifier , (pointer_expression "*param_2" * identifier) , (call_expression "CONCAT44(iVar13,in_stack_ffffffd4)" identifier (argument_list "(iVar13,in_stack_ffffffd4)" ( identifier , identifier ))) ))) ;) (expression_statement "uVar6 = (undefined4)lVar17;" (assignment_expression "uVar6 = (undefined4)lVar17" identifier = (cast_expression "(undefined4)lVar17" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (if_statement "if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;" if (parenthesized_expression "((int)((ulonglong)lVar17 >> 0x20) == -1)" ( (binary_expression "(int)((ulonglong)lVar17 >> 0x20) == -1" (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) (goto_statement "goto LAB_001b2c50;" goto statement_identifier ;)) (do_statement "do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);" do (compound_statement "{\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  }" { (expression_statement "puVar8 = (undefined4 *)*piVar11;" (assignment_expression "puVar8 = (undefined4 *)*piVar11" identifier = (cast_expression "(undefined4 *)*piVar11" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier))) ;) (if_statement "if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" if (parenthesized_expression "((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0))" ( (binary_expression "(puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)" (parenthesized_expression "(puVar8[2] == 0)" ( (binary_expression "puVar8[2] == 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "((puVar8[5] & 0x10) == 0)" ( (binary_expression "(puVar8[5] & 0x10) == 0" (parenthesized_expression "(puVar8[5] & 0x10)" ( (binary_expression "puVar8[5] & 0x10" (subscript_expression "puVar8[5]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }" { (labeled_statement "LAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" statement_identifier : (if_statement "if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" if (parenthesized_expression "(-1 < piVar4[8])" ( (binary_expression "-1 < piVar4[8]" number_literal < (subscript_expression "piVar4[8]" identifier [ number_literal ])) )) (compound_statement "{\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" { (expression_statement "bVar2 = *(byte *)(piVar4 + 8);" (assignment_expression "bVar2 = *(byte *)(piVar4 + 8)" identifier = (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;" (assignment_expression "*(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80" (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) )))) = (binary_expression "bVar2 & 0x7f | 0x80" (binary_expression "bVar2 & 0x7f" identifier & number_literal) | number_literal)) ;) (if_statement "if (piVar4[8] << 2 < 0) goto LAB_001b2c18;" if (parenthesized_expression "(piVar4[8] << 2 < 0)" ( (binary_expression "piVar4[8] << 2 < 0" (binary_expression "piVar4[8] << 2" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2c18;" goto statement_identifier ;)) (expression_statement "*(longlong *)(piVar4 + 6) = lVar17;" (assignment_expression "*(longlong *)(piVar4 + 6) = lVar17" (pointer_expression "*(longlong *)(piVar4 + 6)" * (cast_expression "(longlong *)(piVar4 + 6)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 6)" ( (binary_expression "piVar4 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;" (assignment_expression "*(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0" (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) )))) = (binary_expression "bVar2 & 0x5f | 0xa0" (binary_expression "bVar2 & 0x5f" identifier & number_literal) | number_literal)) ;) (if_statement "if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }" if (parenthesized_expression "((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0))" ( (binary_expression "(piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)" (parenthesized_expression "(piVar4[8] << 1 < 0)" ( (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) || (parenthesized_expression "((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)" ( (comma_expression "(**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0" (call_expression "(**(code **)(*piVar4 + 0x38))(piVar4)" (parenthesized_expression "(**(code **)(*piVar4 + 0x38))" ( (pointer_expression "**(code **)(*piVar4 + 0x38)" * (pointer_expression "*(code **)(*piVar4 + 0x38)" * (cast_expression "(code **)(*piVar4 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0x38)" ( (binary_expression "*piVar4 + 0x38" (pointer_expression "*piVar4" * identifier) + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier ))) , (comma_expression "iVar13 = iVar14, piVar4[8] << 1 < 0" (assignment_expression "iVar13 = iVar14" identifier = identifier) , (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal))) ))) )) (compound_statement "{\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }" { (expression_statement "lVar17 = lVar17 + *(longlong *)(piVar4 + 4);" (assignment_expression "lVar17 = lVar17 + *(longlong *)(piVar4 + 4)" identifier = (binary_expression "lVar17 + *(longlong *)(piVar4 + 4)" identifier + (pointer_expression "*(longlong *)(piVar4 + 4)" * (cast_expression "(longlong *)(piVar4 + 4)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 4)" ( (binary_expression "piVar4 + 4" identifier + number_literal) )))))) ;) (expression_statement "iVar13 = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "iVar13 = (int)((ulonglong)lVar17 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }" if (parenthesized_expression "((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17))))" ( (binary_expression "(*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))" (parenthesized_expression "(*(int *)param_2 < iVar13)" ( (binary_expression "*(int *)param_2 < iVar13" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) )) || (parenthesized_expression "((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))" ( (parenthesized_expression "(*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17))" ( (binary_expression "*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)" (binary_expression "*(int *)param_2 == iVar13" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == identifier) && (parenthesized_expression "((uint)*param_2 < (uint)lVar17)" ( (binary_expression "(uint)*param_2 < (uint)lVar17" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier) < (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n            *param_2 = lVar17;\n          }" { (expression_statement "*param_2 = lVar17;" (assignment_expression "*param_2 = lVar17" (pointer_expression "*param_2" * identifier) = identifier) ;) })) (expression_statement "*(int **)(this + 0x16c) = piVar4;" (assignment_expression "*(int **)(this + 0x16c) = piVar4" (pointer_expression "*(int **)(this + 0x16c)" * (cast_expression "(int **)(this + 0x16c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x16c)" ( (binary_expression "this + 0x16c" identifier + number_literal) )))) = identifier) ;) (return_statement "return (uint)lVar17;" return (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier) ;) })) (goto_statement "goto LAB_001b2c74;" goto statement_identifier ;) }))) }) (else_clause "else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" else (compound_statement "{\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" { (expression_statement "piVar1 = (int *)(iVar13 + -0x77f0);" (assignment_expression "piVar1 = (int *)(iVar13 + -0x77f0)" identifier = (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) ;) (if_statement "if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }" if (parenthesized_expression "(piVar4[8] << 1 < 0)" ( (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) (compound_statement "{\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }" { (expression_statement "puVar9 = (undefined4 *)(iVar13 + -0x7228);" (assignment_expression "puVar9 = (undefined4 *)(iVar13 + -0x7228)" identifier = (cast_expression "(undefined4 *)(iVar13 + -0x7228)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7228)" ( (binary_expression "iVar13 + -0x7228" identifier + number_literal) )))) ;) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) (expression_statement "(*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);" (call_expression "(*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17)" (parenthesized_expression "(*(code *)*puVar9)" ( (pointer_expression "*(code *)*puVar9" * (cast_expression "(code *)*puVar9" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) )) (argument_list "(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17)" ( (pointer_expression "*puVar8" * identifier) , (binary_expression "*piVar1 + 0x3560" (pointer_expression "*piVar1" * identifier) + number_literal) , (cast_expression "(int)lVar17" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "piVar4[5] + (int)lVar17" (subscript_expression "piVar4[5]" identifier [ number_literal ]) + (cast_expression "(int)lVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;) })) (labeled_statement "LAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);" statement_identifier : (expression_statement "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);" (call_expression "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" ( (pointer_expression "**(code **)(iVar13 + -0x7810)" * (pointer_expression "*(code **)(iVar13 + -0x7810)" * (cast_expression "(code **)(iVar13 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7810)" ( (binary_expression "iVar13 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc)" ( (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" * (cast_expression "(int *)(iVar13 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7fc4)" ( (binary_expression "iVar13 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x47dc" (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);" statement_identifier : (expression_statement "iVar5 = *(int *)(iVar13 + -0x77f0);" (assignment_expression "iVar5 = *(int *)(iVar13 + -0x77f0)" identifier = (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);" statement_identifier : (expression_statement "(**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);" (call_expression "(**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" ( (pointer_expression "**(code **)(iVar13 + -0x7810)" * (pointer_expression "*(code **)(iVar13 + -0x7810)" * (cast_expression "(code **)(iVar13 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7810)" ( (binary_expression "iVar13 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0)" ( (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" * (cast_expression "(int *)(iVar13 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7fc4)" ( (binary_expression "iVar13 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "iVar5 + 0x45e0" identifier + number_literal) ))) ;)) (labeled_statement "LAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);" statement_identifier : (expression_statement "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);" (call_expression "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" ( (pointer_expression "**(code **)(iVar13 + -0x7810)" * (pointer_expression "*(code **)(iVar13 + -0x7810)" * (cast_expression "(code **)(iVar13 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7810)" ( (binary_expression "iVar13 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4)" ( (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" * (cast_expression "(int *)(iVar13 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7fc4)" ( (binary_expression "iVar13 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x44d4" (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;)) }))) (expression_statement "uVar6 = (undefined4)lVar17;" (assignment_expression "uVar6 = (undefined4)lVar17" identifier = (cast_expression "(undefined4)lVar17" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "(**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);" (call_expression "(**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" ( (pointer_expression "**(code **)(iVar13 + -0x7810)" * (pointer_expression "*(code **)(iVar13 + -0x7810)" * (cast_expression "(code **)(iVar13 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7810)" ( (binary_expression "iVar13 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4)" ( (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" * (cast_expression "(int *)(iVar13 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7fc4)" ( (binary_expression "iVar13 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x44e4" (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);" (assignment_expression "lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" identifier (argument_list "((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" ( (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) (labeled_statement "LAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);" statement_identifier : (expression_statement "iVar10 = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "iVar10 = (int)((ulonglong)lVar17 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "iVar5 = (int)lVar17;" (assignment_expression "iVar5 = (int)lVar17" identifier = (cast_expression "(int)lVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar17 = CONCAT44(iVar10,uVar6);" (assignment_expression "lVar17 = CONCAT44(iVar10,uVar6)" identifier = (call_expression "CONCAT44(iVar10,uVar6)" identifier (argument_list "(iVar10,uVar6)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar5 != iVar10)" ( (binary_expression "iVar5 != iVar10" identifier != identifier) )) ;) (expression_statement "uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);" (assignment_expression "uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514)" identifier = (call_expression "(**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514)" (parenthesized_expression "(**(code **)(iVar13 + -0x3610))" ( (pointer_expression "**(code **)(iVar13 + -0x3610)" * (pointer_expression "*(code **)(iVar13 + -0x3610)" * (cast_expression "(code **)(iVar13 + -0x3610)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x3610)" ( (binary_expression "iVar13 + -0x3610" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x77f0) + 0x3514)" ( (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x3514" (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) (expression_statement "(**(code **)(iVar14 + -0x70e8))(uVar6);" (call_expression "(**(code **)(iVar14 + -0x70e8))(uVar6)" (parenthesized_expression "(**(code **)(iVar14 + -0x70e8))" ( (pointer_expression "**(code **)(iVar14 + -0x70e8)" * (pointer_expression "*(code **)(iVar14 + -0x70e8)" * (cast_expression "(code **)(iVar14 + -0x70e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + -0x70e8)" ( (binary_expression "iVar14 + -0x70e8" identifier + number_literal) ))))) )) (argument_list "(uVar6)" ( identifier ))) ;) (labeled_statement "LAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;" statement_identifier : (expression_statement "iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;" (assignment_expression "iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574" identifier = (binary_expression "*(int *)(iVar14 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar14 + -0x7fc4)" * (cast_expression "(int *)(iVar14 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0x7fc4)" ( (binary_expression "iVar14 + -0x7fc4" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "(**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);" (call_expression "(**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598)" (parenthesized_expression "(**(code **)(iVar14 + -0x7810))" ( (pointer_expression "**(code **)(iVar14 + -0x7810)" * (pointer_expression "*(code **)(iVar14 + -0x7810)" * (cast_expression "(code **)(iVar14 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + -0x7810)" ( (binary_expression "iVar14 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598)" ( identifier , number_literal , (binary_expression "*(int *)(iVar14 + -0x77f0) + 0x4598" (pointer_expression "*(int *)(iVar14 + -0x77f0)" * (cast_expression "(int *)(iVar14 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0x77f0)" ( (binary_expression "iVar14 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;) comment (expression_statement "(**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);" (call_expression "(**(code **)(iVar13 + -0x7e1c))(piVar4,0x40)" (parenthesized_expression "(**(code **)(iVar13 + -0x7e1c))" ( (pointer_expression "**(code **)(iVar13 + -0x7e1c)" * (pointer_expression "*(code **)(iVar13 + -0x7e1c)" * (cast_expression "(code **)(iVar13 + -0x7e1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7e1c)" ( (binary_expression "iVar13 + -0x7e1c" identifier + number_literal) ))))) )) (argument_list "(piVar4,0x40)" ( identifier , number_literal ))) ;) (expression_statement "pcVar12 = *(code **)(iVar13 + -0x7f78);" (assignment_expression "pcVar12 = *(code **)(iVar13 + -0x7f78)" identifier = (pointer_expression "*(code **)(iVar13 + -0x7f78)" * (cast_expression "(code **)(iVar13 + -0x7f78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7f78)" ( (binary_expression "iVar13 + -0x7f78" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x130);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x130)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x130)" * (cast_expression "(undefined4 **)(iVar5 + 0x130)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x130)" ( (binary_expression "iVar5 + 0x130" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }" if (parenthesized_expression "(puVar8 == *(undefined4 **)(iVar5 + 0x134))" ( (binary_expression "puVar8 == *(undefined4 **)(iVar5 + 0x134)" identifier == (pointer_expression "*(undefined4 **)(iVar5 + 0x134)" * (cast_expression "(undefined4 **)(iVar5 + 0x134)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x134)" ( (binary_expression "iVar5 + 0x134" identifier + number_literal) ))))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (do_statement "do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);" do (compound_statement "{\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  }" { (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);" (assignment_expression "iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8)" identifier = (call_expression "(**(code **)(pcVar12 + 0x30f478))(*puVar8)" (parenthesized_expression "(**(code **)(pcVar12 + 0x30f478))" ( (pointer_expression "**(code **)(pcVar12 + 0x30f478)" * (pointer_expression "*(code **)(pcVar12 + 0x30f478)" * (cast_expression "(code **)(pcVar12 + 0x30f478)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x30f478)" ( (binary_expression "pcVar12 + 0x30f478" identifier + number_literal) ))))) )) (argument_list "(*puVar8)" ( (pointer_expression "*puVar8" * identifier) )))) ;) (expression_statement "uVar7 = uVar7 + iVar13;" (assignment_expression "uVar7 = uVar7 + iVar13" identifier = (binary_expression "uVar7 + iVar13" identifier + identifier)) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(*(undefined4 **)(iVar5 + 0x134) != puVar9)" ( (binary_expression "*(undefined4 **)(iVar5 + 0x134) != puVar9" (pointer_expression "*(undefined4 **)(iVar5 + 0x134)" * (cast_expression "(undefined4 **)(iVar5 + 0x134)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x134)" ( (binary_expression "iVar5 + 0x134" identifier + number_literal) )))) != identifier) )) ;) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original prototype: void create_shdrs(Layout * this, Output_section * shstrtab_section,\n   off_t * poff) */\n\nvoid __thiscall\ngold::Layout::create_shdrs(Layout *this,Output_section *shstrtab_section,off_t *poff)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  byte bVar3;\n  Output_section_headers *pOVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  _func_int_varargs **pp_Var9;\n  undefined4 extraout_v1;\n  uint uVar10;\n  int iVar11;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int *piVar12;\n  longlong lVar13;\n  off_t oVar14;\n  longlong lVar15;\n  int iVar16;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar15 = CONCAT44(unaff_s3,unaff_s1);\n  iVar16 = 0x4c9240;\n  pOVar4 = (Output_section_headers *)(*(code *)PTR_operator_new_004c13a8)(0x40);\n                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */\n  (**(code **)(iVar16 + -0x70cc))\n            (pOVar4,this,&this->segment_list_,&this->section_list_,&this->unattached_section_list_,\n             &this->namepool_,shstrtab_section);\n  piVar12 = *(int **)(iVar16 + -0x788c);\n  iVar5 = (**(code **)(iVar16 + -0x70f4))(*piVar12);\n  if (iVar5 == 0) {\n    pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    iVar5 = *(int *)poff;\n    oVar14 = *poff;\n    lVar15 = *poff;\n    if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n      lVar13 = (**(code **)(iVar16 + -0x70c4))();\n    }\n    else {\n      iVar7 = (*pp_Var9[3])(pOVar4);\n      lVar13 = CONCAT44(iVar7,pp_Var9);\n    }\n    uVar10 = (uint)oVar14 - 1;\n    iVar7 = iVar16;\n    if (lVar13 == 0) goto LAB_001b298c;\n    lVar15 = lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10);\n    lVar15 = CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13);\n    goto LAB_001b298c;\n  }\n  pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n  if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) {\n    if (pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0)) {\n      oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);\n      iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;\n      iVar7 = iVar16;\n      if (iVar5 << 1 < 0) goto LAB_001b2bfc;\n      iVar11 = *(int *)(iVar16 + -0x77f0);\n      if (iVar5 << 3 < 0) goto LAB_001b2c00;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n      (pOVar4->super_Output_data).data_size_ = oVar14;\n      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;\n    }\n    else {\n      (*pp_Var9[0xd])(pOVar4);\n      iVar7 = iVar16;\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    }\n  }\n  if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n    oVar14 = (**(code **)(iVar16 + -0x70c4))();\n  }\n  else {\n    iVar5 = (*pp_Var9[3])(pOVar4);\n    oVar14 = CONCAT44(iVar5,pp_Var9);\n  }\n  lVar15 = Free_list::allocate(&this->free_list_,oVar14,*poff,CONCAT44(iVar16,in_stack_ffffffd4));\n  uVar8 = (undefined4)lVar15;\n  iVar7 = iVar16;\n  if ((int)((ulonglong)lVar15 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar6 = (undefined4 *)*piVar12;\n    if ((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar16 + -0x77f0);\n      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);\n    }\n    uVar8 = (undefined4)lVar15;\n    (**(code **)(iVar16 + -0x7810))\n              (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4);\n    lVar15 = CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar11 = (int)((ulonglong)lVar15 >> 0x20);\n    iVar5 = (int)lVar15;\n    lVar15 = CONCAT44(iVar11,uVar8);\n  } while (iVar5 != iVar11);\n  uVar8 = (**(code **)(iVar16 + -0x3610))(*(int *)(iVar16 + -0x77f0) + 0x3514);\n  iVar16 = iVar7;\n  (**(code **)(iVar7 + -0x70e8))(uVar8);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar7 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar7 + -0x7810))(iVar5,0x163,*(int *)(iVar7 + -0x77f0) + 0x4598);\n                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */\n  (**(code **)(iVar16 + -0x7e1c))(pOVar4,0x40);\n  (**(code **)(iVar16 + -0x7f78))(iVar5);\n  return;\n}\n\n" comment comment comment comment comment comment comment (function_definition "void __thiscall\ngold::Layout::create_shdrs(Layout *this,Output_section *shstrtab_section,off_t *poff)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  byte bVar3;\n  Output_section_headers *pOVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  _func_int_varargs **pp_Var9;\n  undefined4 extraout_v1;\n  uint uVar10;\n  int iVar11;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int *piVar12;\n  longlong lVar13;\n  off_t oVar14;\n  longlong lVar15;\n  int iVar16;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar15 = CONCAT44(unaff_s3,unaff_s1);\n  iVar16 = 0x4c9240;\n  pOVar4 = (Output_section_headers *)(*(code *)PTR_operator_new_004c13a8)(0x40);\n                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */\n  (**(code **)(iVar16 + -0x70cc))\n            (pOVar4,this,&this->segment_list_,&this->section_list_,&this->unattached_section_list_,\n             &this->namepool_,shstrtab_section);\n  piVar12 = *(int **)(iVar16 + -0x788c);\n  iVar5 = (**(code **)(iVar16 + -0x70f4))(*piVar12);\n  if (iVar5 == 0) {\n    pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    iVar5 = *(int *)poff;\n    oVar14 = *poff;\n    lVar15 = *poff;\n    if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n      lVar13 = (**(code **)(iVar16 + -0x70c4))();\n    }\n    else {\n      iVar7 = (*pp_Var9[3])(pOVar4);\n      lVar13 = CONCAT44(iVar7,pp_Var9);\n    }\n    uVar10 = (uint)oVar14 - 1;\n    iVar7 = iVar16;\n    if (lVar13 == 0) goto LAB_001b298c;\n    lVar15 = lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10);\n    lVar15 = CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13);\n    goto LAB_001b298c;\n  }\n  pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n  if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) {\n    if (pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0)) {\n      oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);\n      iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;\n      iVar7 = iVar16;\n      if (iVar5 << 1 < 0) goto LAB_001b2bfc;\n      iVar11 = *(int *)(iVar16 + -0x77f0);\n      if (iVar5 << 3 < 0) goto LAB_001b2c00;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n      (pOVar4->super_Output_data).data_size_ = oVar14;\n      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;\n    }\n    else {\n      (*pp_Var9[0xd])(pOVar4);\n      iVar7 = iVar16;\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    }\n  }\n  if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n    oVar14 = (**(code **)(iVar16 + -0x70c4))();\n  }\n  else {\n    iVar5 = (*pp_Var9[3])(pOVar4);\n    oVar14 = CONCAT44(iVar5,pp_Var9);\n  }\n  lVar15 = Free_list::allocate(&this->free_list_,oVar14,*poff,CONCAT44(iVar16,in_stack_ffffffd4));\n  uVar8 = (undefined4)lVar15;\n  iVar7 = iVar16;\n  if ((int)((ulonglong)lVar15 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar6 = (undefined4 *)*piVar12;\n    if ((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar16 + -0x77f0);\n      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);\n    }\n    uVar8 = (undefined4)lVar15;\n    (**(code **)(iVar16 + -0x7810))\n              (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4);\n    lVar15 = CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar11 = (int)((ulonglong)lVar15 >> 0x20);\n    iVar5 = (int)lVar15;\n    lVar15 = CONCAT44(iVar11,uVar8);\n  } while (iVar5 != iVar11);\n  uVar8 = (**(code **)(iVar16 + -0x3610))(*(int *)(iVar16 + -0x77f0) + 0x3514);\n  iVar16 = iVar7;\n  (**(code **)(iVar7 + -0x70e8))(uVar8);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar7 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar7 + -0x7810))(iVar5,0x163,*(int *)(iVar7 + -0x77f0) + 0x4598);\n                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */\n  (**(code **)(iVar16 + -0x7e1c))(pOVar4,0x40);\n  (**(code **)(iVar16 + -0x7f78))(iVar5);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "create_shdrs(Layout *this,Output_section *shstrtab_section,off_t *poff)" identifier (parameter_list "(Layout *this,Output_section *shstrtab_section,off_t *poff)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_section *shstrtab_section" type_identifier (pointer_declarator "*shstrtab_section" * identifier)) , (parameter_declaration "off_t *poff" type_identifier (pointer_declarator "*poff" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  byte bVar3;\n  Output_section_headers *pOVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 uVar8;\n  _func_int_varargs **pp_Var9;\n  undefined4 extraout_v1;\n  uint uVar10;\n  int iVar11;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int *piVar12;\n  longlong lVar13;\n  off_t oVar14;\n  longlong lVar15;\n  int iVar16;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar15 = CONCAT44(unaff_s3,unaff_s1);\n  iVar16 = 0x4c9240;\n  pOVar4 = (Output_section_headers *)(*(code *)PTR_operator_new_004c13a8)(0x40);\n                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */\n  (**(code **)(iVar16 + -0x70cc))\n            (pOVar4,this,&this->segment_list_,&this->section_list_,&this->unattached_section_list_,\n             &this->namepool_,shstrtab_section);\n  piVar12 = *(int **)(iVar16 + -0x788c);\n  iVar5 = (**(code **)(iVar16 + -0x70f4))(*piVar12);\n  if (iVar5 == 0) {\n    pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    iVar5 = *(int *)poff;\n    oVar14 = *poff;\n    lVar15 = *poff;\n    if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n      lVar13 = (**(code **)(iVar16 + -0x70c4))();\n    }\n    else {\n      iVar7 = (*pp_Var9[3])(pOVar4);\n      lVar13 = CONCAT44(iVar7,pp_Var9);\n    }\n    uVar10 = (uint)oVar14 - 1;\n    iVar7 = iVar16;\n    if (lVar13 == 0) goto LAB_001b298c;\n    lVar15 = lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10);\n    lVar15 = CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13);\n    goto LAB_001b298c;\n  }\n  pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n  if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) {\n    if (pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0)) {\n      oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);\n      iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;\n      iVar7 = iVar16;\n      if (iVar5 << 1 < 0) goto LAB_001b2bfc;\n      iVar11 = *(int *)(iVar16 + -0x77f0);\n      if (iVar5 << 3 < 0) goto LAB_001b2c00;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n      (pOVar4->super_Output_data).data_size_ = oVar14;\n      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;\n    }\n    else {\n      (*pp_Var9[0xd])(pOVar4);\n      iVar7 = iVar16;\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    }\n  }\n  if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n    oVar14 = (**(code **)(iVar16 + -0x70c4))();\n  }\n  else {\n    iVar5 = (*pp_Var9[3])(pOVar4);\n    oVar14 = CONCAT44(iVar5,pp_Var9);\n  }\n  lVar15 = Free_list::allocate(&this->free_list_,oVar14,*poff,CONCAT44(iVar16,in_stack_ffffffd4));\n  uVar8 = (undefined4)lVar15;\n  iVar7 = iVar16;\n  if ((int)((ulonglong)lVar15 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar6 = (undefined4 *)*piVar12;\n    if ((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar16 + -0x77f0);\n      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);\n    }\n    uVar8 = (undefined4)lVar15;\n    (**(code **)(iVar16 + -0x7810))\n              (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4);\n    lVar15 = CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar11 = (int)((ulonglong)lVar15 >> 0x20);\n    iVar5 = (int)lVar15;\n    lVar15 = CONCAT44(iVar11,uVar8);\n  } while (iVar5 != iVar11);\n  uVar8 = (**(code **)(iVar16 + -0x3610))(*(int *)(iVar16 + -0x77f0) + 0x3514);\n  iVar16 = iVar7;\n  (**(code **)(iVar7 + -0x70e8))(uVar8);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar7 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar7 + -0x7810))(iVar5,0x163,*(int *)(iVar7 + -0x77f0) + 0x4598);\n                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */\n  (**(code **)(iVar16 + -0x7e1c))(pOVar4,0x40);\n  (**(code **)(iVar16 + -0x7f78))(iVar5);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "Output_section_headers *pOVar4;" type_identifier (pointer_declarator "*pOVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "_func_int_varargs **pp_Var9;" type_identifier (pointer_declarator "**pp_Var9" * (pointer_declarator "*pp_Var9" * identifier)) ;) (declaration "undefined4 extraout_v1;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 unaff_s1;" type_identifier identifier ;) (declaration "undefined4 unaff_s3;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "longlong lVar13;" type_identifier identifier ;) (declaration "off_t oVar14;" type_identifier identifier ;) (declaration "longlong lVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined4 in_stack_ffffffd4;" type_identifier identifier ;) (expression_statement "lVar15 = CONCAT44(unaff_s3,unaff_s1);" (assignment_expression "lVar15 = CONCAT44(unaff_s3,unaff_s1)" identifier = (call_expression "CONCAT44(unaff_s3,unaff_s1)" identifier (argument_list "(unaff_s3,unaff_s1)" ( identifier , identifier )))) ;) (expression_statement "iVar16 = 0x4c9240;" (assignment_expression "iVar16 = 0x4c9240" identifier = number_literal) ;) (expression_statement "pOVar4 = (Output_section_headers *)(*(code *)PTR_operator_new_004c13a8)(0x40);" (assignment_expression "pOVar4 = (Output_section_headers *)(*(code *)PTR_operator_new_004c13a8)(0x40)" identifier = (cast_expression "(Output_section_headers *)(*(code *)PTR_operator_new_004c13a8)(0x40)" ( (type_descriptor "Output_section_headers *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new_004c13a8)(0x40)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" ( (pointer_expression "*(code *)PTR_operator_new_004c13a8" * (cast_expression "(code *)PTR_operator_new_004c13a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x40)" ( number_literal ))))) ;) comment (expression_statement "(**(code **)(iVar16 + -0x70cc))\n            (pOVar4,this,&this->segment_list_,&this->section_list_,&this->unattached_section_list_,\n             &this->namepool_,shstrtab_section);" (call_expression "(**(code **)(iVar16 + -0x70cc))\n            (pOVar4,this,&this->segment_list_,&this->section_list_,&this->unattached_section_list_,\n             &this->namepool_,shstrtab_section)" (parenthesized_expression "(**(code **)(iVar16 + -0x70cc))" ( (pointer_expression "**(code **)(iVar16 + -0x70cc)" * (pointer_expression "*(code **)(iVar16 + -0x70cc)" * (cast_expression "(code **)(iVar16 + -0x70cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x70cc)" ( (binary_expression "iVar16 + -0x70cc" identifier + number_literal) ))))) )) (argument_list "(pOVar4,this,&this->segment_list_,&this->section_list_,&this->unattached_section_list_,\n             &this->namepool_,shstrtab_section)" ( identifier , identifier , (pointer_expression "&this->segment_list_" & (field_expression "this->segment_list_" identifier -> field_identifier)) , (pointer_expression "&this->section_list_" & (field_expression "this->section_list_" identifier -> field_identifier)) , (pointer_expression "&this->unattached_section_list_" & (field_expression "this->unattached_section_list_" identifier -> field_identifier)) , (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , identifier ))) ;) (expression_statement "piVar12 = *(int **)(iVar16 + -0x788c);" (assignment_expression "piVar12 = *(int **)(iVar16 + -0x788c)" identifier = (pointer_expression "*(int **)(iVar16 + -0x788c)" * (cast_expression "(int **)(iVar16 + -0x788c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x788c)" ( (binary_expression "iVar16 + -0x788c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (**(code **)(iVar16 + -0x70f4))(*piVar12);" (assignment_expression "iVar5 = (**(code **)(iVar16 + -0x70f4))(*piVar12)" identifier = (call_expression "(**(code **)(iVar16 + -0x70f4))(*piVar12)" (parenthesized_expression "(**(code **)(iVar16 + -0x70f4))" ( (pointer_expression "**(code **)(iVar16 + -0x70f4)" * (pointer_expression "*(code **)(iVar16 + -0x70f4)" * (cast_expression "(code **)(iVar16 + -0x70f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x70f4)" ( (binary_expression "iVar16 + -0x70f4" identifier + number_literal) ))))) )) (argument_list "(*piVar12)" ( (pointer_expression "*piVar12" * identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n    pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    iVar5 = *(int *)poff;\n    oVar14 = *poff;\n    lVar15 = *poff;\n    if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n      lVar13 = (**(code **)(iVar16 + -0x70c4))();\n    }\n    else {\n      iVar7 = (*pp_Var9[3])(pOVar4);\n      lVar13 = CONCAT44(iVar7,pp_Var9);\n    }\n    uVar10 = (uint)oVar14 - 1;\n    iVar7 = iVar16;\n    if (lVar13 == 0) goto LAB_001b298c;\n    lVar15 = lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10);\n    lVar15 = CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13);\n    goto LAB_001b298c;\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    iVar5 = *(int *)poff;\n    oVar14 = *poff;\n    lVar15 = *poff;\n    if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n      lVar13 = (**(code **)(iVar16 + -0x70c4))();\n    }\n    else {\n      iVar7 = (*pp_Var9[3])(pOVar4);\n      lVar13 = CONCAT44(iVar7,pp_Var9);\n    }\n    uVar10 = (uint)oVar14 - 1;\n    iVar7 = iVar16;\n    if (lVar13 == 0) goto LAB_001b298c;\n    lVar15 = lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10);\n    lVar15 = CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13);\n    goto LAB_001b298c;\n  }" { (expression_statement "pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;" (assignment_expression "pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data" identifier = (field_expression "(pOVar4->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar5 = *(int *)poff;" (assignment_expression "iVar5 = *(int *)poff" identifier = (pointer_expression "*(int *)poff" * (cast_expression "(int *)poff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "oVar14 = *poff;" (assignment_expression "oVar14 = *poff" identifier = (pointer_expression "*poff" * identifier)) ;) (expression_statement "lVar15 = *poff;" (assignment_expression "lVar15 = *poff" identifier = (pointer_expression "*poff" * identifier)) ;) (if_statement "if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n      lVar13 = (**(code **)(iVar16 + -0x70c4))();\n    }\n    else {\n      iVar7 = (*pp_Var9[3])(pOVar4);\n      lVar13 = CONCAT44(iVar7,pp_Var9);\n    }" if (parenthesized_expression "(pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8))" ( (binary_expression "pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)" (subscript_expression "pp_Var9[3]" identifier [ number_literal ]) == (pointer_expression "*(_func_int_varargs **)(iVar16 + -0x70c8)" * (cast_expression "(_func_int_varargs **)(iVar16 + -0x70c8)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x70c8)" ( (binary_expression "iVar16 + -0x70c8" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar13 = (**(code **)(iVar16 + -0x70c4))();\n    }" { (expression_statement "lVar13 = (**(code **)(iVar16 + -0x70c4))();" (assignment_expression "lVar13 = (**(code **)(iVar16 + -0x70c4))()" identifier = (call_expression "(**(code **)(iVar16 + -0x70c4))()" (parenthesized_expression "(**(code **)(iVar16 + -0x70c4))" ( (pointer_expression "**(code **)(iVar16 + -0x70c4)" * (pointer_expression "*(code **)(iVar16 + -0x70c4)" * (cast_expression "(code **)(iVar16 + -0x70c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x70c4)" ( (binary_expression "iVar16 + -0x70c4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n      iVar7 = (*pp_Var9[3])(pOVar4);\n      lVar13 = CONCAT44(iVar7,pp_Var9);\n    }" else (compound_statement "{\n      iVar7 = (*pp_Var9[3])(pOVar4);\n      lVar13 = CONCAT44(iVar7,pp_Var9);\n    }" { (expression_statement "iVar7 = (*pp_Var9[3])(pOVar4);" (assignment_expression "iVar7 = (*pp_Var9[3])(pOVar4)" identifier = (call_expression "(*pp_Var9[3])(pOVar4)" (parenthesized_expression "(*pp_Var9[3])" ( (pointer_expression "*pp_Var9[3]" * (subscript_expression "pp_Var9[3]" identifier [ number_literal ])) )) (argument_list "(pOVar4)" ( identifier )))) ;) (expression_statement "lVar13 = CONCAT44(iVar7,pp_Var9);" (assignment_expression "lVar13 = CONCAT44(iVar7,pp_Var9)" identifier = (call_expression "CONCAT44(iVar7,pp_Var9)" identifier (argument_list "(iVar7,pp_Var9)" ( identifier , identifier )))) ;) }))) (expression_statement "uVar10 = (uint)oVar14 - 1;" (assignment_expression "uVar10 = (uint)oVar14 - 1" identifier = (binary_expression "(uint)oVar14 - 1" (cast_expression "(uint)oVar14" ( (type_descriptor "uint" type_identifier) ) identifier) - number_literal)) ;) (expression_statement "iVar7 = iVar16;" (assignment_expression "iVar7 = iVar16" identifier = identifier) ;) (if_statement "if (lVar13 == 0) goto LAB_001b298c;" if (parenthesized_expression "(lVar13 == 0)" ( (binary_expression "lVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;)) (expression_statement "lVar15 = lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10);" (assignment_expression "lVar15 = lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10)" identifier = (binary_expression "lVar13 + CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10)" identifier + (call_expression "CONCAT44((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10)" identifier (argument_list "((uint)(uVar10 < (uint)oVar14) + iVar5 + -1,uVar10)" ( (binary_expression "(uint)(uVar10 < (uint)oVar14) + iVar5 + -1" (binary_expression "(uint)(uVar10 < (uint)oVar14) + iVar5" (call_expression "(uint)(uVar10 < (uint)oVar14)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < (uint)oVar14)" ( (binary_expression "uVar10 < (uint)oVar14" identifier < (cast_expression "(uint)oVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) + identifier) + number_literal) , identifier ))))) ;) (expression_statement "lVar15 = CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13);" (assignment_expression "lVar15 = CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13)" identifier = (call_expression "CONCAT44((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13)" identifier (argument_list "((uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20),\n                      (uint)lVar15 & -(int)lVar13)" ( (binary_expression "(uint)((ulonglong)lVar15 >> 0x20) &\n                      -(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20)" (call_expression "(uint)((ulonglong)lVar15 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) & (binary_expression "-(uint)(-(int)lVar13 != 0) - (int)((ulonglong)lVar13 >> 0x20)" (unary_expression "-(uint)(-(int)lVar13 != 0)" - (call_expression "(uint)(-(int)lVar13 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-(int)lVar13 != 0)" ( (binary_expression "-(int)lVar13 != 0" (unary_expression "-(int)lVar13" - (cast_expression "(int)lVar13" ( (type_descriptor "int" primitive_type) ) identifier)) != number_literal) )))) - (cast_expression "(int)((ulonglong)lVar13 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar13 >> 0x20)" ( (binary_expression "(ulonglong)lVar13 >> 0x20" (cast_expression "(ulonglong)lVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) , (binary_expression "(uint)lVar15 & -(int)lVar13" (cast_expression "(uint)lVar15" ( (type_descriptor "uint" type_identifier) ) identifier) & (unary_expression "-(int)lVar13" - (cast_expression "(int)lVar13" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;) })) (expression_statement "pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;" (assignment_expression "pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data" identifier = (field_expression "(pOVar4->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) {\n    if (pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0)) {\n      oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);\n      iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;\n      iVar7 = iVar16;\n      if (iVar5 << 1 < 0) goto LAB_001b2bfc;\n      iVar11 = *(int *)(iVar16 + -0x77f0);\n      if (iVar5 << 3 < 0) goto LAB_001b2c00;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n      (pOVar4->super_Output_data).data_size_ = oVar14;\n      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;\n    }\n    else {\n      (*pp_Var9[0xd])(pOVar4);\n      iVar7 = iVar16;\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    }\n  }" if (parenthesized_expression "(-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1)" ( (binary_expression "-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1" number_literal < (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 1" (pointer_expression "*(int *)&(pOVar4->super_Output_data).field_0x20" * (cast_expression "(int *)&(pOVar4->super_Output_data).field_0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).field_0x20" & (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) << number_literal)) )) (compound_statement "{\n    if (pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0)) {\n      oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);\n      iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;\n      iVar7 = iVar16;\n      if (iVar5 << 1 < 0) goto LAB_001b2bfc;\n      iVar11 = *(int *)(iVar16 + -0x77f0);\n      if (iVar5 << 3 < 0) goto LAB_001b2c00;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n      (pOVar4->super_Output_data).data_size_ = oVar14;\n      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;\n    }\n    else {\n      (*pp_Var9[0xd])(pOVar4);\n      iVar7 = iVar16;\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    }\n  }" { (if_statement "if (pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0)) {\n      oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);\n      iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;\n      iVar7 = iVar16;\n      if (iVar5 << 1 < 0) goto LAB_001b2bfc;\n      iVar11 = *(int *)(iVar16 + -0x77f0);\n      if (iVar5 << 3 < 0) goto LAB_001b2c00;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n      (pOVar4->super_Output_data).data_size_ = oVar14;\n      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;\n    }\n    else {\n      (*pp_Var9[0xd])(pOVar4);\n      iVar7 = iVar16;\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    }" if (parenthesized_expression "(pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0))" ( (binary_expression "pp_Var9[0xd] == *(_func_int_varargs **)(iVar16 + -0x70c0)" (subscript_expression "pp_Var9[0xd]" identifier [ number_literal ]) == (pointer_expression "*(_func_int_varargs **)(iVar16 + -0x70c0)" * (cast_expression "(_func_int_varargs **)(iVar16 + -0x70c0)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x70c0)" ( (binary_expression "iVar16 + -0x70c0" identifier + number_literal) ))))) )) (compound_statement "{\n      oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);\n      iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;\n      iVar7 = iVar16;\n      if (iVar5 << 1 < 0) goto LAB_001b2bfc;\n      iVar11 = *(int *)(iVar16 + -0x77f0);\n      if (iVar5 << 3 < 0) goto LAB_001b2c00;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n      (pOVar4->super_Output_data).data_size_ = oVar14;\n      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;\n    }" { (expression_statement "oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4);" (assignment_expression "oVar14 = (**(code **)(iVar16 + -0x70bc))(pOVar4)" identifier = (call_expression "(**(code **)(iVar16 + -0x70bc))(pOVar4)" (parenthesized_expression "(**(code **)(iVar16 + -0x70bc))" ( (pointer_expression "**(code **)(iVar16 + -0x70bc)" * (pointer_expression "*(code **)(iVar16 + -0x70bc)" * (cast_expression "(code **)(iVar16 + -0x70bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x70bc)" ( (binary_expression "iVar16 + -0x70bc" identifier + number_literal) ))))) )) (argument_list "(pOVar4)" ( identifier )))) ;) (expression_statement "iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20;" (assignment_expression "iVar5 = *(int *)&(pOVar4->super_Output_data).field_0x20" identifier = (pointer_expression "*(int *)&(pOVar4->super_Output_data).field_0x20" * (cast_expression "(int *)&(pOVar4->super_Output_data).field_0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).field_0x20" & (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "iVar7 = iVar16;" (assignment_expression "iVar7 = iVar16" identifier = identifier) ;) (if_statement "if (iVar5 << 1 < 0) goto LAB_001b2bfc;" if (parenthesized_expression "(iVar5 << 1 < 0)" ( (binary_expression "iVar5 << 1 < 0" (binary_expression "iVar5 << 1" identifier << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2bfc;" goto statement_identifier ;)) (expression_statement "iVar11 = *(int *)(iVar16 + -0x77f0);" (assignment_expression "iVar11 = *(int *)(iVar16 + -0x77f0)" identifier = (pointer_expression "*(int *)(iVar16 + -0x77f0)" * (cast_expression "(int *)(iVar16 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x77f0)" ( (binary_expression "iVar16 + -0x77f0" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 << 3 < 0) goto LAB_001b2c00;" if (parenthesized_expression "(iVar5 << 3 < 0)" ( (binary_expression "iVar5 << 3 < 0" (binary_expression "iVar5 << 3" identifier << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2c00;" goto statement_identifier ;)) (expression_statement "pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;" (assignment_expression "pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data" identifier = (field_expression "(pOVar4->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(pOVar4->super_Output_data).data_size_ = oVar14;" (assignment_expression "(pOVar4->super_Output_data).data_size_ = oVar14" (field_expression "(pOVar4->super_Output_data).data_size_" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;" (assignment_expression "(pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40" (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40" (binary_expression "(pOVar4->super_Output_data).field_0x20 & 0xbf" (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) | number_literal)) ;) }) (else_clause "else {\n      (*pp_Var9[0xd])(pOVar4);\n      iVar7 = iVar16;\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    }" else (compound_statement "{\n      (*pp_Var9[0xd])(pOVar4);\n      iVar7 = iVar16;\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;\n      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;\n    }" { (expression_statement "(*pp_Var9[0xd])(pOVar4);" (call_expression "(*pp_Var9[0xd])(pOVar4)" (parenthesized_expression "(*pp_Var9[0xd])" ( (pointer_expression "*pp_Var9[0xd]" * (subscript_expression "pp_Var9[0xd]" identifier [ number_literal ])) )) (argument_list "(pOVar4)" ( identifier ))) ;) (expression_statement "iVar7 = iVar16;" (assignment_expression "iVar7 = iVar16" identifier = identifier) ;) (if_statement "if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;" if (parenthesized_expression "(-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1)" ( (binary_expression "-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1" number_literal < (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 1" (pointer_expression "*(int *)&(pOVar4->super_Output_data).field_0x20" * (cast_expression "(int *)&(pOVar4->super_Output_data).field_0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).field_0x20" & (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) << number_literal)) )) (goto_statement "goto LAB_001b2be0;" goto statement_identifier ;)) (expression_statement "pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;" (assignment_expression "pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data" identifier = (field_expression "(pOVar4->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) }))) })) (if_statement "if (pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)) {\n    oVar14 = (**(code **)(iVar16 + -0x70c4))();\n  }\n  else {\n    iVar5 = (*pp_Var9[3])(pOVar4);\n    oVar14 = CONCAT44(iVar5,pp_Var9);\n  }" if (parenthesized_expression "(pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8))" ( (binary_expression "pp_Var9[3] == *(_func_int_varargs **)(iVar16 + -0x70c8)" (subscript_expression "pp_Var9[3]" identifier [ number_literal ]) == (pointer_expression "*(_func_int_varargs **)(iVar16 + -0x70c8)" * (cast_expression "(_func_int_varargs **)(iVar16 + -0x70c8)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x70c8)" ( (binary_expression "iVar16 + -0x70c8" identifier + number_literal) ))))) )) (compound_statement "{\n    oVar14 = (**(code **)(iVar16 + -0x70c4))();\n  }" { (expression_statement "oVar14 = (**(code **)(iVar16 + -0x70c4))();" (assignment_expression "oVar14 = (**(code **)(iVar16 + -0x70c4))()" identifier = (call_expression "(**(code **)(iVar16 + -0x70c4))()" (parenthesized_expression "(**(code **)(iVar16 + -0x70c4))" ( (pointer_expression "**(code **)(iVar16 + -0x70c4)" * (pointer_expression "*(code **)(iVar16 + -0x70c4)" * (cast_expression "(code **)(iVar16 + -0x70c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x70c4)" ( (binary_expression "iVar16 + -0x70c4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    iVar5 = (*pp_Var9[3])(pOVar4);\n    oVar14 = CONCAT44(iVar5,pp_Var9);\n  }" else (compound_statement "{\n    iVar5 = (*pp_Var9[3])(pOVar4);\n    oVar14 = CONCAT44(iVar5,pp_Var9);\n  }" { (expression_statement "iVar5 = (*pp_Var9[3])(pOVar4);" (assignment_expression "iVar5 = (*pp_Var9[3])(pOVar4)" identifier = (call_expression "(*pp_Var9[3])(pOVar4)" (parenthesized_expression "(*pp_Var9[3])" ( (pointer_expression "*pp_Var9[3]" * (subscript_expression "pp_Var9[3]" identifier [ number_literal ])) )) (argument_list "(pOVar4)" ( identifier )))) ;) (expression_statement "oVar14 = CONCAT44(iVar5,pp_Var9);" (assignment_expression "oVar14 = CONCAT44(iVar5,pp_Var9)" identifier = (call_expression "CONCAT44(iVar5,pp_Var9)" identifier (argument_list "(iVar5,pp_Var9)" ( identifier , identifier )))) ;) }))) (ERROR "lVar15 = Free_list::" (assignment_expression "lVar15 = Free_list" identifier = identifier) : :) (expression_statement "allocate(&this->free_list_,oVar14,*poff,CONCAT44(iVar16,in_stack_ffffffd4));" (call_expression "allocate(&this->free_list_,oVar14,*poff,CONCAT44(iVar16,in_stack_ffffffd4))" identifier (argument_list "(&this->free_list_,oVar14,*poff,CONCAT44(iVar16,in_stack_ffffffd4))" ( (pointer_expression "&this->free_list_" & (field_expression "this->free_list_" identifier -> field_identifier)) , identifier , (pointer_expression "*poff" * identifier) , (call_expression "CONCAT44(iVar16,in_stack_ffffffd4)" identifier (argument_list "(iVar16,in_stack_ffffffd4)" ( identifier , identifier ))) ))) ;) (expression_statement "uVar8 = (undefined4)lVar15;" (assignment_expression "uVar8 = (undefined4)lVar15" identifier = (cast_expression "(undefined4)lVar15" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar7 = iVar16;" (assignment_expression "iVar7 = iVar16" identifier = identifier) ;) (if_statement "if ((int)((ulonglong)lVar15 >> 0x20) == -1) goto LAB_001b2c50;" if (parenthesized_expression "((int)((ulonglong)lVar15 >> 0x20) == -1)" ( (binary_expression "(int)((ulonglong)lVar15 >> 0x20) == -1" (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) (goto_statement "goto LAB_001b2c50;" goto statement_identifier ;)) (do_statement "do {\n    puVar6 = (undefined4 *)*piVar12;\n    if ((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar16 + -0x77f0);\n      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);\n    }\n    uVar8 = (undefined4)lVar15;\n    (**(code **)(iVar16 + -0x7810))\n              (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4);\n    lVar15 = CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar11 = (int)((ulonglong)lVar15 >> 0x20);\n    iVar5 = (int)lVar15;\n    lVar15 = CONCAT44(iVar11,uVar8);\n  } while (iVar5 != iVar11);" do (compound_statement "{\n    puVar6 = (undefined4 *)*piVar12;\n    if ((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar16 + -0x77f0);\n      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);\n    }\n    uVar8 = (undefined4)lVar15;\n    (**(code **)(iVar16 + -0x7810))\n              (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4);\n    lVar15 = CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar11 = (int)((ulonglong)lVar15 >> 0x20);\n    iVar5 = (int)lVar15;\n    lVar15 = CONCAT44(iVar11,uVar8);\n  }" { (expression_statement "puVar6 = (undefined4 *)*piVar12;" (assignment_expression "puVar6 = (undefined4 *)*piVar12" identifier = (cast_expression "(undefined4 *)*piVar12" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (if_statement "if ((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar16 + -0x77f0);\n      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);\n    }" if (parenthesized_expression "((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0))" ( (binary_expression "(puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)" (parenthesized_expression "(puVar6[2] == 0)" ( (binary_expression "puVar6[2] == 0" (subscript_expression "puVar6[2]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "((puVar6[5] & 0x10) == 0)" ( (binary_expression "(puVar6[5] & 0x10) == 0" (parenthesized_expression "(puVar6[5] & 0x10)" ( (binary_expression "puVar6[5] & 0x10" (subscript_expression "puVar6[5]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\nLAB_001b298c:\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }\n    }" { (labeled_statement "LAB_001b298c:\n      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }" statement_identifier : (if_statement "if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }" if (parenthesized_expression "(-1 < *(int *)&(pOVar4->super_Output_data).field_0x20)" ( (binary_expression "-1 < *(int *)&(pOVar4->super_Output_data).field_0x20" number_literal < (pointer_expression "*(int *)&(pOVar4->super_Output_data).field_0x20" * (cast_expression "(int *)&(pOVar4->super_Output_data).field_0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).field_0x20" & (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier))))) )) (compound_statement "{\n        bVar3 = (pOVar4->super_Output_data).field_0x20;\n        *(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;\n        *(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;\n        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;\n        (pOVar4->super_Output_data).offset_ = lVar15;\n        (pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;\n        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }\n        goto LAB_001b2c74;\n      }" { (expression_statement "bVar3 = (pOVar4->super_Output_data).field_0x20;" (assignment_expression "bVar3 = (pOVar4->super_Output_data).field_0x20" identifier = (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4)" * (cast_expression "(undefined4 *)((int)&(pOVar4->super_Output_data).address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar4->super_Output_data).address_ + 4)" ( (binary_expression "(int)&(pOVar4->super_Output_data).address_ + 4" (cast_expression "(int)&(pOVar4->super_Output_data).address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar4->super_Output_data).address_" & (field_expression "(pOVar4->super_Output_data).address_" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&(pOVar4->super_Output_data).address_ = 0;" (assignment_expression "*(undefined4 *)&(pOVar4->super_Output_data).address_ = 0" (pointer_expression "*(undefined4 *)&(pOVar4->super_Output_data).address_" * (cast_expression "(undefined4 *)&(pOVar4->super_Output_data).address_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).address_" & (field_expression "(pOVar4->super_Output_data).address_" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) = number_literal) ;) (expression_statement "(pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80;" (assignment_expression "(pOVar4->super_Output_data).field_0x20 = bVar3 & 0x7f | 0x80" (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar3 & 0x7f | 0x80" (binary_expression "bVar3 & 0x7f" identifier & number_literal) | number_literal)) ;) (if_statement "if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;" if (parenthesized_expression "(*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0)" ( (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0" (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 2" (pointer_expression "*(int *)&(pOVar4->super_Output_data).field_0x20" * (cast_expression "(int *)&(pOVar4->super_Output_data).field_0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).field_0x20" & (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2c18;" goto statement_identifier ;)) (expression_statement "(pOVar4->super_Output_data).offset_ = lVar15;" (assignment_expression "(pOVar4->super_Output_data).offset_ = lVar15" (field_expression "(pOVar4->super_Output_data).offset_" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0;" (assignment_expression "(pOVar4->super_Output_data).field_0x20 = bVar3 & 0x5f | 0xa0" (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar3 & 0x5f | 0xa0" (binary_expression "bVar3 & 0x5f" identifier & number_literal) | number_literal)) ;) (if_statement "if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }" if (parenthesized_expression "((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0))" ( (binary_expression "(*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||\n           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)" (parenthesized_expression "(*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)" ( (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0" (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 1" (pointer_expression "*(int *)&(pOVar4->super_Output_data).field_0x20" * (cast_expression "(int *)&(pOVar4->super_Output_data).field_0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).field_0x20" & (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) << number_literal) < number_literal) )) || (parenthesized_expression "((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)" ( (comma_expression "(*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0" (call_expression "(*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4)" (parenthesized_expression "(*(pOVar4->super_Output_data)._vptr_Output_data[0xe])" ( (pointer_expression "*(pOVar4->super_Output_data)._vptr_Output_data[0xe]" * (subscript_expression "(pOVar4->super_Output_data)._vptr_Output_data[0xe]" (field_expression "(pOVar4->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(pOVar4)" ( identifier ))) , (comma_expression "iVar16 = iVar7,\n           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0" (assignment_expression "iVar16 = iVar7" identifier = identifier) , (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0" (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 1" (pointer_expression "*(int *)&(pOVar4->super_Output_data).field_0x20" * (cast_expression "(int *)&(pOVar4->super_Output_data).field_0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).field_0x20" & (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) << number_literal) < number_literal))) ))) )) (compound_statement "{\n          lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;\n          iVar16 = (int)((ulonglong)lVar15 >> 0x20);\n          if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }\n          this->section_headers_ = pOVar4;\n          return;\n        }" { (expression_statement "lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_;" (assignment_expression "lVar15 = lVar15 + (pOVar4->super_Output_data).data_size_" identifier = (binary_expression "lVar15 + (pOVar4->super_Output_data).data_size_" identifier + (field_expression "(pOVar4->super_Output_data).data_size_" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar16 = (int)((ulonglong)lVar15 >> 0x20);" (assignment_expression "iVar16 = (int)((ulonglong)lVar15 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))\n          {\n            *poff = lVar15;\n          }" if (parenthesized_expression "((*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))))" ( (binary_expression "(*(int *)poff < iVar16) || ((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15)))" (parenthesized_expression "(*(int *)poff < iVar16)" ( (binary_expression "*(int *)poff < iVar16" (pointer_expression "*(int *)poff" * (cast_expression "(int *)poff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) )) || (parenthesized_expression "((*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15)))" ( (parenthesized_expression "(*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15))" ( (binary_expression "*(int *)poff == iVar16 && ((uint)*poff < (uint)lVar15)" (binary_expression "*(int *)poff == iVar16" (pointer_expression "*(int *)poff" * (cast_expression "(int *)poff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == identifier) && (parenthesized_expression "((uint)*poff < (uint)lVar15)" ( (binary_expression "(uint)*poff < (uint)lVar15" (binary_expression "(uint)*poff" (parenthesized_expression "(uint)" ( identifier )) * identifier) < (cast_expression "(uint)lVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n            *poff = lVar15;\n          }" { (expression_statement "*poff = lVar15;" (assignment_expression "*poff = lVar15" (pointer_expression "*poff" * identifier) = identifier) ;) })) (expression_statement "this->section_headers_ = pOVar4;" (assignment_expression "this->section_headers_ = pOVar4" (field_expression "this->section_headers_" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_001b2c74;" goto statement_identifier ;) }))) }) (else_clause "else {\n      piVar1 = (int *)(iVar16 + -0x77f0);\n      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);\n    }" else (compound_statement "{\n      piVar1 = (int *)(iVar16 + -0x77f0);\n      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);\n    }" { (expression_statement "piVar1 = (int *)(iVar16 + -0x77f0);" (assignment_expression "piVar1 = (int *)(iVar16 + -0x77f0)" identifier = (cast_expression "(int *)(iVar16 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x77f0)" ( (binary_expression "iVar16 + -0x77f0" identifier + number_literal) )))) ;) (if_statement "if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }" if (parenthesized_expression "(*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)" ( (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0" (binary_expression "*(int *)&(pOVar4->super_Output_data).field_0x20 << 1" (pointer_expression "*(int *)&(pOVar4->super_Output_data).field_0x20" * (cast_expression "(int *)&(pOVar4->super_Output_data).field_0x20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pOVar4->super_Output_data).field_0x20" & (field_expression "(pOVar4->super_Output_data).field_0x20" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) << number_literal) < number_literal) )) (compound_statement "{\n        puVar2 = (undefined4 *)(iVar16 + -0x7228);\n        iVar16 = iVar7;\n        (*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);\n        iVar7 = iVar16;\n        goto LAB_001b298c;\n      }" { (expression_statement "puVar2 = (undefined4 *)(iVar16 + -0x7228);" (assignment_expression "puVar2 = (undefined4 *)(iVar16 + -0x7228)" identifier = (cast_expression "(undefined4 *)(iVar16 + -0x7228)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x7228)" ( (binary_expression "iVar16 + -0x7228" identifier + number_literal) )))) ;) (expression_statement "iVar16 = iVar7;" (assignment_expression "iVar16 = iVar7" identifier = identifier) ;) (expression_statement "(*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15);" (call_expression "(*(code *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15)" (parenthesized_expression "(*(code *)*puVar2)" ( (pointer_expression "*(code *)*puVar2" * (cast_expression "(code *)*puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) )) (argument_list "(*puVar6,*piVar1 + 0x3560,(int)lVar15,\n                           (int)(pOVar4->super_Output_data).data_size_ + (int)lVar15)" ( (pointer_expression "*puVar6" * identifier) , (binary_expression "*piVar1 + 0x3560" (pointer_expression "*piVar1" * identifier) + number_literal) , (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "(int)(pOVar4->super_Output_data).data_size_ + (int)lVar15" (cast_expression "(int)(pOVar4->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (field_expression "(pOVar4->super_Output_data).data_size_" (parenthesized_expression "(pOVar4->super_Output_data)" ( (field_expression "pOVar4->super_Output_data" identifier -> field_identifier) )) . field_identifier)) + (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "iVar7 = iVar16;" (assignment_expression "iVar7 = iVar16" identifier = identifier) ;) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;) })) (labeled_statement "LAB_001b2be0:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);" statement_identifier : (expression_statement "(**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc);" (call_expression "(**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc)" (parenthesized_expression "(**(code **)(iVar16 + -0x7810))" ( (pointer_expression "**(code **)(iVar16 + -0x7810)" * (pointer_expression "*(code **)(iVar16 + -0x7810)" * (cast_expression "(code **)(iVar16 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7810)" ( (binary_expression "iVar16 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar16 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar16 + -0x77f0) + 0x47dc)" ( (binary_expression "*(int *)(iVar16 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar16 + -0x7fc4)" * (cast_expression "(int *)(iVar16 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x7fc4)" ( (binary_expression "iVar16 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar16 + -0x77f0) + 0x47dc" (pointer_expression "*(int *)(iVar16 + -0x77f0)" * (cast_expression "(int *)(iVar16 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x77f0)" ( (binary_expression "iVar16 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_001b2bfc:\n      iVar11 = *(int *)(iVar16 + -0x77f0);" statement_identifier : (expression_statement "iVar11 = *(int *)(iVar16 + -0x77f0);" (assignment_expression "iVar11 = *(int *)(iVar16 + -0x77f0)" identifier = (pointer_expression "*(int *)(iVar16 + -0x77f0)" * (cast_expression "(int *)(iVar16 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x77f0)" ( (binary_expression "iVar16 + -0x77f0" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_001b2c00:\n      (**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);" statement_identifier : (expression_statement "(**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0);" (call_expression "(**(code **)(iVar16 + -0x7810))(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0)" (parenthesized_expression "(**(code **)(iVar16 + -0x7810))" ( (pointer_expression "**(code **)(iVar16 + -0x7810)" * (pointer_expression "*(code **)(iVar16 + -0x7810)" * (cast_expression "(code **)(iVar16 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7810)" ( (binary_expression "iVar16 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x218,iVar11 + 0x45e0)" ( (binary_expression "*(int *)(iVar16 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar16 + -0x7fc4)" * (cast_expression "(int *)(iVar16 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x7fc4)" ( (binary_expression "iVar16 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "iVar11 + 0x45e0" identifier + number_literal) ))) ;)) (labeled_statement "LAB_001b2c18:\n      (**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);" statement_identifier : (expression_statement "(**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4);" (call_expression "(**(code **)(iVar16 + -0x7810))\n                (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4)" (parenthesized_expression "(**(code **)(iVar16 + -0x7810))" ( (pointer_expression "**(code **)(iVar16 + -0x7810)" * (pointer_expression "*(code **)(iVar16 + -0x7810)" * (cast_expression "(code **)(iVar16 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7810)" ( (binary_expression "iVar16 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar16 + -0x77f0) + 0x44d4)" ( (binary_expression "*(int *)(iVar16 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar16 + -0x7fc4)" * (cast_expression "(int *)(iVar16 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x7fc4)" ( (binary_expression "iVar16 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar16 + -0x77f0) + 0x44d4" (pointer_expression "*(int *)(iVar16 + -0x77f0)" * (cast_expression "(int *)(iVar16 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x77f0)" ( (binary_expression "iVar16 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;)) }))) (expression_statement "uVar8 = (undefined4)lVar15;" (assignment_expression "uVar8 = (undefined4)lVar15" identifier = (cast_expression "(undefined4)lVar15" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "(**(code **)(iVar16 + -0x7810))\n              (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4);" (call_expression "(**(code **)(iVar16 + -0x7810))\n              (*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4)" (parenthesized_expression "(**(code **)(iVar16 + -0x7810))" ( (pointer_expression "**(code **)(iVar16 + -0x7810)" * (pointer_expression "*(code **)(iVar16 + -0x7810)" * (cast_expression "(code **)(iVar16 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7810)" ( (binary_expression "iVar16 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar16 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar16 + -0x77f0) + 0x44e4)" ( (binary_expression "*(int *)(iVar16 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar16 + -0x7fc4)" * (cast_expression "(int *)(iVar16 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x7fc4)" ( (binary_expression "iVar16 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar16 + -0x77f0) + 0x44e4" (pointer_expression "*(int *)(iVar16 + -0x77f0)" * (cast_expression "(int *)(iVar16 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x77f0)" ( (binary_expression "iVar16 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "lVar15 = CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1);" (assignment_expression "lVar15 = CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar15 >> 0x20),extraout_v1)" identifier (argument_list "((int)((ulonglong)lVar15 >> 0x20),extraout_v1)" ( (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) (labeled_statement "LAB_001b2c50:\n    iVar11 = (int)((ulonglong)lVar15 >> 0x20);" statement_identifier : (expression_statement "iVar11 = (int)((ulonglong)lVar15 >> 0x20);" (assignment_expression "iVar11 = (int)((ulonglong)lVar15 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "iVar5 = (int)lVar15;" (assignment_expression "iVar5 = (int)lVar15" identifier = (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar15 = CONCAT44(iVar11,uVar8);" (assignment_expression "lVar15 = CONCAT44(iVar11,uVar8)" identifier = (call_expression "CONCAT44(iVar11,uVar8)" identifier (argument_list "(iVar11,uVar8)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar5 != iVar11)" ( (binary_expression "iVar5 != iVar11" identifier != identifier) )) ;) (expression_statement "uVar8 = (**(code **)(iVar16 + -0x3610))(*(int *)(iVar16 + -0x77f0) + 0x3514);" (assignment_expression "uVar8 = (**(code **)(iVar16 + -0x3610))(*(int *)(iVar16 + -0x77f0) + 0x3514)" identifier = (call_expression "(**(code **)(iVar16 + -0x3610))(*(int *)(iVar16 + -0x77f0) + 0x3514)" (parenthesized_expression "(**(code **)(iVar16 + -0x3610))" ( (pointer_expression "**(code **)(iVar16 + -0x3610)" * (pointer_expression "*(code **)(iVar16 + -0x3610)" * (cast_expression "(code **)(iVar16 + -0x3610)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x3610)" ( (binary_expression "iVar16 + -0x3610" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar16 + -0x77f0) + 0x3514)" ( (binary_expression "*(int *)(iVar16 + -0x77f0) + 0x3514" (pointer_expression "*(int *)(iVar16 + -0x77f0)" * (cast_expression "(int *)(iVar16 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + -0x77f0)" ( (binary_expression "iVar16 + -0x77f0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar16 = iVar7;" (assignment_expression "iVar16 = iVar7" identifier = identifier) ;) (expression_statement "(**(code **)(iVar7 + -0x70e8))(uVar8);" (call_expression "(**(code **)(iVar7 + -0x70e8))(uVar8)" (parenthesized_expression "(**(code **)(iVar7 + -0x70e8))" ( (pointer_expression "**(code **)(iVar7 + -0x70e8)" * (pointer_expression "*(code **)(iVar7 + -0x70e8)" * (cast_expression "(code **)(iVar7 + -0x70e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + -0x70e8)" ( (binary_expression "iVar7 + -0x70e8" identifier + number_literal) ))))) )) (argument_list "(uVar8)" ( identifier ))) ;) (labeled_statement "LAB_001b2c74:\n  iVar5 = *(int *)(iVar7 + -0x7fc4) + 0x3574;" statement_identifier : (expression_statement "iVar5 = *(int *)(iVar7 + -0x7fc4) + 0x3574;" (assignment_expression "iVar5 = *(int *)(iVar7 + -0x7fc4) + 0x3574" identifier = (binary_expression "*(int *)(iVar7 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar7 + -0x7fc4)" * (cast_expression "(int *)(iVar7 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -0x7fc4)" ( (binary_expression "iVar7 + -0x7fc4" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "(**(code **)(iVar7 + -0x7810))(iVar5,0x163,*(int *)(iVar7 + -0x77f0) + 0x4598);" (call_expression "(**(code **)(iVar7 + -0x7810))(iVar5,0x163,*(int *)(iVar7 + -0x77f0) + 0x4598)" (parenthesized_expression "(**(code **)(iVar7 + -0x7810))" ( (pointer_expression "**(code **)(iVar7 + -0x7810)" * (pointer_expression "*(code **)(iVar7 + -0x7810)" * (cast_expression "(code **)(iVar7 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + -0x7810)" ( (binary_expression "iVar7 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(iVar5,0x163,*(int *)(iVar7 + -0x77f0) + 0x4598)" ( identifier , number_literal , (binary_expression "*(int *)(iVar7 + -0x77f0) + 0x4598" (pointer_expression "*(int *)(iVar7 + -0x77f0)" * (cast_expression "(int *)(iVar7 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -0x77f0)" ( (binary_expression "iVar7 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;) comment (expression_statement "(**(code **)(iVar16 + -0x7e1c))(pOVar4,0x40);" (call_expression "(**(code **)(iVar16 + -0x7e1c))(pOVar4,0x40)" (parenthesized_expression "(**(code **)(iVar16 + -0x7e1c))" ( (pointer_expression "**(code **)(iVar16 + -0x7e1c)" * (pointer_expression "*(code **)(iVar16 + -0x7e1c)" * (cast_expression "(code **)(iVar16 + -0x7e1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7e1c)" ( (binary_expression "iVar16 + -0x7e1c" identifier + number_literal) ))))) )) (argument_list "(pOVar4,0x40)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(iVar16 + -0x7f78))(iVar5);" (call_expression "(**(code **)(iVar16 + -0x7f78))(iVar5)" (parenthesized_expression "(**(code **)(iVar16 + -0x7f78))" ( (pointer_expression "**(code **)(iVar16 + -0x7f78)" * (pointer_expression "*(code **)(iVar16 + -0x7f78)" * (cast_expression "(code **)(iVar16 + -0x7f78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7f78)" ( (binary_expression "iVar16 + -0x7f78" identifier + number_literal) ))))) )) (argument_list "(iVar5)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "uint __thiscall gold::Layout::create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)\n\n{\n  int *piVar1;\n  byte bVar2;\n  longlong lVar3;\n  int *piVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 extraout_v1;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int iVar10;\n  int *piVar11;\n  int in_t9;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar17 = CONCAT44(unaff_s3,unaff_s1);\n  iVar13 = in_t9 + 0x3169bc;\n  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);\n                    \n  (**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);\n  piVar11 = *(int **)(iVar13 + -0x788c);\n  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);\n  if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }\n  iVar5 = *piVar4;\n  if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }\n  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }\n  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));\n  uVar6 = (undefined4)lVar17;\n  iVar14 = iVar13;\n  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);\n  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);\n  iVar13 = iVar14;\n  (**(code **)(iVar14 + -0x70e8))(uVar6);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);\n                    \n  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);\n  pcVar12 = *(code **)(iVar13 + -0x7f78);\n  (*pcVar12)();\n  puVar8 = *(undefined4 **)(iVar5 + 0x130);\n  uVar7 = 0;\n  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }\n  do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);\n  return uVar7;\n}\n\n" (function_definition "uint __thiscall gold::Layout::create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)\n\n{\n  int *piVar1;\n  byte bVar2;\n  longlong lVar3;\n  int *piVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 extraout_v1;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int iVar10;\n  int *piVar11;\n  int in_t9;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar17 = CONCAT44(unaff_s3,unaff_s1);\n  iVar13 = in_t9 + 0x3169bc;\n  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);\n                    \n  (**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);\n  piVar11 = *(int **)(iVar13 + -0x788c);\n  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);\n  if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }\n  iVar5 = *piVar4;\n  if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }\n  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }\n  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));\n  uVar6 = (undefined4)lVar17;\n  iVar14 = iVar13;\n  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);\n  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);\n  iVar13 = iVar14;\n  (**(code **)(iVar14 + -0x70e8))(uVar6);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);\n                    \n  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);\n  pcVar12 = *(code **)(iVar13 + -0x7f78);\n  (*pcVar12)();\n  puVar8 = *(undefined4 **)(iVar5 + 0x130);\n  uVar7 = 0;\n  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }\n  do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);\n  return uVar7;\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)" identifier (parameter_list "(Layout *this,Output_section *param_1,longlong *param_2)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_section *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "longlong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  longlong lVar3;\n  int *piVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 extraout_v1;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int iVar10;\n  int *piVar11;\n  int in_t9;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar17 = CONCAT44(unaff_s3,unaff_s1);\n  iVar13 = in_t9 + 0x3169bc;\n  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);\n                    \n  (**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);\n  piVar11 = *(int **)(iVar13 + -0x788c);\n  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);\n  if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }\n  iVar5 = *piVar4;\n  if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }\n  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }\n  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));\n  uVar6 = (undefined4)lVar17;\n  iVar14 = iVar13;\n  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);\n  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);\n  iVar13 = iVar14;\n  (**(code **)(iVar14 + -0x70e8))(uVar6);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);\n                    \n  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);\n  pcVar12 = *(code **)(iVar13 + -0x7f78);\n  (*pcVar12)();\n  puVar8 = *(undefined4 **)(iVar5 + 0x130);\n  uVar7 = 0;\n  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }\n  do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);\n  return uVar7;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 extraout_v1;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 unaff_s1;" type_identifier identifier ;) (declaration "undefined4 unaff_s3;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "longlong lVar15;" type_identifier identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "longlong lVar17;" type_identifier identifier ;) (declaration "undefined4 in_stack_ffffffd4;" type_identifier identifier ;) (expression_statement "lVar17 = CONCAT44(unaff_s3,unaff_s1);" (assignment_expression "lVar17 = CONCAT44(unaff_s3,unaff_s1)" identifier = (call_expression "CONCAT44(unaff_s3,unaff_s1)" identifier (argument_list "(unaff_s3,unaff_s1)" ( identifier , identifier )))) ;) (expression_statement "iVar13 = in_t9 + 0x3169bc;" (assignment_expression "iVar13 = in_t9 + 0x3169bc" identifier = (binary_expression "in_t9 + 0x3169bc" identifier + number_literal)) ;) (expression_statement "piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);" (assignment_expression "piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40)" identifier = (cast_expression "(int *)(**(code **)(in_t9 + 0x30eb24))(0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0x30eb24))(0x40)" (parenthesized_expression "(**(code **)(in_t9 + 0x30eb24))" ( (pointer_expression "**(code **)(in_t9 + 0x30eb24)" * (pointer_expression "*(code **)(in_t9 + 0x30eb24)" * (cast_expression "(code **)(in_t9 + 0x30eb24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x30eb24)" ( (binary_expression "in_t9 + 0x30eb24" identifier + number_literal) ))))) )) (argument_list "(0x40)" ( number_literal ))))) ;) (expression_statement "(**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);" (call_expression "(**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1)" (parenthesized_expression "(**(code **)(iVar13 + -0x70cc))" ( (pointer_expression "**(code **)(iVar13 + -0x70cc)" * (pointer_expression "*(code **)(iVar13 + -0x70cc)" * (cast_expression "(code **)(iVar13 + -0x70cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70cc)" ( (binary_expression "iVar13 + -0x70cc" identifier + number_literal) ))))) )) (argument_list "(piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1)" ( identifier , identifier , (binary_expression "this + 0x130" identifier + number_literal) , (binary_expression "this + 0x13c" identifier + number_literal) , (binary_expression "this + 0x148" identifier + number_literal) , (binary_expression "this + 8" identifier + number_literal) , identifier ))) ;) (expression_statement "piVar11 = *(int **)(iVar13 + -0x788c);" (assignment_expression "piVar11 = *(int **)(iVar13 + -0x788c)" identifier = (pointer_expression "*(int **)(iVar13 + -0x788c)" * (cast_expression "(int **)(iVar13 + -0x788c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x788c)" ( (binary_expression "iVar13 + -0x788c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);" (assignment_expression "iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11)" identifier = (call_expression "(**(code **)(iVar13 + -0x70f4))(*piVar11)" (parenthesized_expression "(**(code **)(iVar13 + -0x70f4))" ( (pointer_expression "**(code **)(iVar13 + -0x70f4)" * (pointer_expression "*(code **)(iVar13 + -0x70f4)" * (cast_expression "(code **)(iVar13 + -0x70f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70f4)" ( (binary_expression "iVar13 + -0x70f4" identifier + number_literal) ))))) )) (argument_list "(*piVar11)" ( (pointer_expression "*piVar11" * identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }" { (expression_statement "iVar5 = *(int *)param_2;" (assignment_expression "iVar5 = *(int *)param_2" identifier = (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "lVar3 = *param_2;" (assignment_expression "lVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "lVar17 = *param_2;" (assignment_expression "lVar17 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" if (parenthesized_expression "(*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8))" ( (binary_expression "*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)" (pointer_expression "*(code **)(*piVar4 + 0xc)" * (cast_expression "(code **)(*piVar4 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0xc)" ( (binary_expression "*piVar4 + 0xc" (pointer_expression "*piVar4" * identifier) + number_literal) )))) == (pointer_expression "*(code **)(iVar13 + -0x70c8)" * (cast_expression "(code **)(iVar13 + -0x70c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c8)" ( (binary_expression "iVar13 + -0x70c8" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }" { (expression_statement "lVar15 = (**(code **)(iVar13 + -0x70c4))();" (assignment_expression "lVar15 = (**(code **)(iVar13 + -0x70c4))()" identifier = (call_expression "(**(code **)(iVar13 + -0x70c4))()" (parenthesized_expression "(**(code **)(iVar13 + -0x70c4))" ( (pointer_expression "**(code **)(iVar13 + -0x70c4)" * (pointer_expression "*(code **)(iVar13 + -0x70c4)" * (cast_expression "(code **)(iVar13 + -0x70c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c4)" ( (binary_expression "iVar13 + -0x70c4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" else (compound_statement "{\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" { (expression_statement "lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);" (assignment_expression "lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4)" identifier = (call_expression "(**(code **)(*piVar4 + 0xc))(piVar4)" (parenthesized_expression "(**(code **)(*piVar4 + 0xc))" ( (pointer_expression "**(code **)(*piVar4 + 0xc)" * (pointer_expression "*(code **)(*piVar4 + 0xc)" * (cast_expression "(code **)(*piVar4 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0xc)" ( (binary_expression "*piVar4 + 0xc" (pointer_expression "*piVar4" * identifier) + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier )))) ;) }))) (expression_statement "uVar7 = (uint)lVar3 - 1;" (assignment_expression "uVar7 = (uint)lVar3 - 1" identifier = (binary_expression "(uint)lVar3 - 1" (cast_expression "(uint)lVar3" ( (type_descriptor "uint" type_identifier) ) identifier) - number_literal)) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (if_statement "if (lVar15 == 0) goto LAB_001b298c;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;)) (expression_statement "lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);" (assignment_expression "lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" identifier = (binary_expression "lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" identifier + (call_expression "CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" identifier (argument_list "((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" ( (binary_expression "(uint)(uVar7 < (uint)lVar3) + iVar5 + -1" (binary_expression "(uint)(uVar7 < (uint)lVar3) + iVar5" (call_expression "(uint)(uVar7 < (uint)lVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < (uint)lVar3)" ( (binary_expression "uVar7 < (uint)lVar3" identifier < (cast_expression "(uint)lVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) + identifier) + number_literal) , identifier ))))) ;) (expression_statement "lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);" (assignment_expression "lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" identifier = (call_expression "CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" identifier (argument_list "((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" ( (binary_expression "(uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20)" (call_expression "(uint)((ulonglong)lVar17 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) & (binary_expression "-(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20)" (unary_expression "-(uint)(-(int)lVar15 != 0)" - (call_expression "(uint)(-(int)lVar15 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-(int)lVar15 != 0)" ( (binary_expression "-(int)lVar15 != 0" (unary_expression "-(int)lVar15" - (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier)) != number_literal) )))) - (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) , (binary_expression "(uint)lVar17 & -(int)lVar15" (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier) & (unary_expression "-(int)lVar15" - (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;) })) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (if_statement "if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }" if (parenthesized_expression "(-1 < piVar4[8] << 1)" ( (binary_expression "-1 < piVar4[8] << 1" number_literal < (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal)) )) (compound_statement "{\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }" { (if_statement "if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" if (parenthesized_expression "(*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0))" ( (binary_expression "*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)" (pointer_expression "*(code **)(iVar5 + 0x34)" * (cast_expression "(code **)(iVar5 + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) )))) == (pointer_expression "*(code **)(iVar13 + -0x70c0)" * (cast_expression "(code **)(iVar13 + -0x70c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c0)" ( (binary_expression "iVar13 + -0x70c0" identifier + number_literal) ))))) )) (compound_statement "{\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }" { (expression_statement "uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);" (assignment_expression "uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4)" identifier = (call_expression "(**(code **)(iVar13 + -0x70bc))(piVar4)" (parenthesized_expression "(**(code **)(iVar13 + -0x70bc))" ( (pointer_expression "**(code **)(iVar13 + -0x70bc)" * (pointer_expression "*(code **)(iVar13 + -0x70bc)" * (cast_expression "(code **)(iVar13 + -0x70bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70bc)" ( (binary_expression "iVar13 + -0x70bc" identifier + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier )))) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (if_statement "if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;" if (parenthesized_expression "(piVar4[8] << 1 < 0)" ( (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2bfc;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)(iVar13 + -0x77f0);" (assignment_expression "iVar5 = *(int *)(iVar13 + -0x77f0)" identifier = (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) ))))) ;) (if_statement "if (piVar4[8] << 3 < 0) goto LAB_001b2c00;" if (parenthesized_expression "(piVar4[8] << 3 < 0)" ( (binary_expression "piVar4[8] << 3 < 0" (binary_expression "piVar4[8] << 3" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2c00;" goto statement_identifier ;)) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "*(undefined8 *)(piVar4 + 4) = uVar16;" (assignment_expression "*(undefined8 *)(piVar4 + 4) = uVar16" (pointer_expression "*(undefined8 *)(piVar4 + 4)" * (cast_expression "(undefined8 *)(piVar4 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 4)" ( (binary_expression "piVar4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;" (assignment_expression "*(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40" (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar4 + 8) & 0xbf | 0x40" (binary_expression "*(byte *)(piVar4 + 8) & 0xbf" (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }) (else_clause "else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" else (compound_statement "{\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" { (expression_statement "(**(code **)(iVar5 + 0x34))(piVar4);" (call_expression "(**(code **)(iVar5 + 0x34))(piVar4)" (parenthesized_expression "(**(code **)(iVar5 + 0x34))" ( (pointer_expression "**(code **)(iVar5 + 0x34)" * (pointer_expression "*(code **)(iVar5 + 0x34)" * (cast_expression "(code **)(iVar5 + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier ))) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (if_statement "if (-1 < piVar4[8] << 1) goto LAB_001b2be0;" if (parenthesized_expression "(-1 < piVar4[8] << 1)" ( (binary_expression "-1 < piVar4[8] << 1" number_literal < (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal)) )) (goto_statement "goto LAB_001b2be0;" goto statement_identifier ;)) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) }))) })) (if_statement "if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" if (parenthesized_expression "(*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8))" ( (binary_expression "*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)" (pointer_expression "*(code **)(iVar5 + 0xc)" * (cast_expression "(code **)(iVar5 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) == (pointer_expression "*(code **)(iVar13 + -0x70c8)" * (cast_expression "(code **)(iVar13 + -0x70c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c8)" ( (binary_expression "iVar13 + -0x70c8" identifier + number_literal) ))))) )) (compound_statement "{\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }" { (expression_statement "lVar17 = (**(code **)(iVar13 + -0x70c4))();" (assignment_expression "lVar17 = (**(code **)(iVar13 + -0x70c4))()" identifier = (call_expression "(**(code **)(iVar13 + -0x70c4))()" (parenthesized_expression "(**(code **)(iVar13 + -0x70c4))" ( (pointer_expression "**(code **)(iVar13 + -0x70c4)" * (pointer_expression "*(code **)(iVar13 + -0x70c4)" * (cast_expression "(code **)(iVar13 + -0x70c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x70c4)" ( (binary_expression "iVar13 + -0x70c4" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" else (compound_statement "{\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" { (expression_statement "lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);" (assignment_expression "lVar17 = (**(code **)(iVar5 + 0xc))(piVar4)" identifier = (call_expression "(**(code **)(iVar5 + 0xc))(piVar4)" (parenthesized_expression "(**(code **)(iVar5 + 0xc))" ( (pointer_expression "**(code **)(iVar5 + 0xc)" * (pointer_expression "*(code **)(iVar5 + 0xc)" * (cast_expression "(code **)(iVar5 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier )))) ;) }))) (ERROR "lVar17 = Free_list::" (assignment_expression "lVar17 = Free_list" identifier = identifier) : :) (expression_statement "allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));" (call_expression "allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4))" identifier (argument_list "(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4))" ( identifier , (pointer_expression "*param_2" * identifier) , (call_expression "CONCAT44(iVar13,in_stack_ffffffd4)" identifier (argument_list "(iVar13,in_stack_ffffffd4)" ( identifier , identifier ))) ))) ;) (expression_statement "uVar6 = (undefined4)lVar17;" (assignment_expression "uVar6 = (undefined4)lVar17" identifier = (cast_expression "(undefined4)lVar17" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (if_statement "if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;" if (parenthesized_expression "((int)((ulonglong)lVar17 >> 0x20) == -1)" ( (binary_expression "(int)((ulonglong)lVar17 >> 0x20) == -1" (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal) )) (goto_statement "goto LAB_001b2c50;" goto statement_identifier ;)) (do_statement "do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);" do (compound_statement "{\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  }" { (expression_statement "puVar8 = (undefined4 *)*piVar11;" (assignment_expression "puVar8 = (undefined4 *)*piVar11" identifier = (cast_expression "(undefined4 *)*piVar11" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier))) ;) (if_statement "if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" if (parenthesized_expression "((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0))" ( (binary_expression "(puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)" (parenthesized_expression "(puVar8[2] == 0)" ( (binary_expression "puVar8[2] == 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "((puVar8[5] & 0x10) == 0)" ( (binary_expression "(puVar8[5] & 0x10) == 0" (parenthesized_expression "(puVar8[5] & 0x10)" ( (binary_expression "puVar8[5] & 0x10" (subscript_expression "puVar8[5]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }" { (labeled_statement "LAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" statement_identifier : (if_statement "if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" if (parenthesized_expression "(-1 < piVar4[8])" ( (binary_expression "-1 < piVar4[8]" number_literal < (subscript_expression "piVar4[8]" identifier [ number_literal ])) )) (compound_statement "{\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" { (expression_statement "bVar2 = *(byte *)(piVar4 + 8);" (assignment_expression "bVar2 = *(byte *)(piVar4 + 8)" identifier = (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;" (assignment_expression "*(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80" (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) )))) = (binary_expression "bVar2 & 0x7f | 0x80" (binary_expression "bVar2 & 0x7f" identifier & number_literal) | number_literal)) ;) (if_statement "if (piVar4[8] << 2 < 0) goto LAB_001b2c18;" if (parenthesized_expression "(piVar4[8] << 2 < 0)" ( (binary_expression "piVar4[8] << 2 < 0" (binary_expression "piVar4[8] << 2" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) (goto_statement "goto LAB_001b2c18;" goto statement_identifier ;)) (expression_statement "*(longlong *)(piVar4 + 6) = lVar17;" (assignment_expression "*(longlong *)(piVar4 + 6) = lVar17" (pointer_expression "*(longlong *)(piVar4 + 6)" * (cast_expression "(longlong *)(piVar4 + 6)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 6)" ( (binary_expression "piVar4 + 6" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;" (assignment_expression "*(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0" (pointer_expression "*(byte *)(piVar4 + 8)" * (cast_expression "(byte *)(piVar4 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 8)" ( (binary_expression "piVar4 + 8" identifier + number_literal) )))) = (binary_expression "bVar2 & 0x5f | 0xa0" (binary_expression "bVar2 & 0x5f" identifier & number_literal) | number_literal)) ;) (if_statement "if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }" if (parenthesized_expression "((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0))" ( (binary_expression "(piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)" (parenthesized_expression "(piVar4[8] << 1 < 0)" ( (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) || (parenthesized_expression "((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)" ( (comma_expression "(**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0" (call_expression "(**(code **)(*piVar4 + 0x38))(piVar4)" (parenthesized_expression "(**(code **)(*piVar4 + 0x38))" ( (pointer_expression "**(code **)(*piVar4 + 0x38)" * (pointer_expression "*(code **)(*piVar4 + 0x38)" * (cast_expression "(code **)(*piVar4 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar4 + 0x38)" ( (binary_expression "*piVar4 + 0x38" (pointer_expression "*piVar4" * identifier) + number_literal) ))))) )) (argument_list "(piVar4)" ( identifier ))) , (comma_expression "iVar13 = iVar14, piVar4[8] << 1 < 0" (assignment_expression "iVar13 = iVar14" identifier = identifier) , (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal))) ))) )) (compound_statement "{\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }" { (expression_statement "lVar17 = lVar17 + *(longlong *)(piVar4 + 4);" (assignment_expression "lVar17 = lVar17 + *(longlong *)(piVar4 + 4)" identifier = (binary_expression "lVar17 + *(longlong *)(piVar4 + 4)" identifier + (pointer_expression "*(longlong *)(piVar4 + 4)" * (cast_expression "(longlong *)(piVar4 + 4)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 4)" ( (binary_expression "piVar4 + 4" identifier + number_literal) )))))) ;) (expression_statement "iVar13 = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "iVar13 = (int)((ulonglong)lVar17 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }" if (parenthesized_expression "((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17))))" ( (binary_expression "(*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))" (parenthesized_expression "(*(int *)param_2 < iVar13)" ( (binary_expression "*(int *)param_2 < iVar13" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) )) || (parenthesized_expression "((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))" ( (parenthesized_expression "(*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17))" ( (binary_expression "*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)" (binary_expression "*(int *)param_2 == iVar13" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) == identifier) && (parenthesized_expression "((uint)*param_2 < (uint)lVar17)" ( (binary_expression "(uint)*param_2 < (uint)lVar17" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier) < (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n            *param_2 = lVar17;\n          }" { (expression_statement "*param_2 = lVar17;" (assignment_expression "*param_2 = lVar17" (pointer_expression "*param_2" * identifier) = identifier) ;) })) (expression_statement "*(int **)(this + 0x16c) = piVar4;" (assignment_expression "*(int **)(this + 0x16c) = piVar4" (pointer_expression "*(int **)(this + 0x16c)" * (cast_expression "(int **)(this + 0x16c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x16c)" ( (binary_expression "this + 0x16c" identifier + number_literal) )))) = identifier) ;) (return_statement "return (uint)lVar17;" return (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier) ;) })) (goto_statement "goto LAB_001b2c74;" goto statement_identifier ;) }))) }) (else_clause "else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" else (compound_statement "{\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" { (expression_statement "piVar1 = (int *)(iVar13 + -0x77f0);" (assignment_expression "piVar1 = (int *)(iVar13 + -0x77f0)" identifier = (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) ;) (if_statement "if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }" if (parenthesized_expression "(piVar4[8] << 1 < 0)" ( (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" identifier [ number_literal ]) << number_literal) < number_literal) )) (compound_statement "{\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }" { (expression_statement "puVar9 = (undefined4 *)(iVar13 + -0x7228);" (assignment_expression "puVar9 = (undefined4 *)(iVar13 + -0x7228)" identifier = (cast_expression "(undefined4 *)(iVar13 + -0x7228)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7228)" ( (binary_expression "iVar13 + -0x7228" identifier + number_literal) )))) ;) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) (expression_statement "(*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);" (call_expression "(*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17)" (parenthesized_expression "(*(code *)*puVar9)" ( (pointer_expression "*(code *)*puVar9" * (cast_expression "(code *)*puVar9" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) )) (argument_list "(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17)" ( (pointer_expression "*puVar8" * identifier) , (binary_expression "*piVar1 + 0x3560" (pointer_expression "*piVar1" * identifier) + number_literal) , (cast_expression "(int)lVar17" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "piVar4[5] + (int)lVar17" (subscript_expression "piVar4[5]" identifier [ number_literal ]) + (cast_expression "(int)lVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" identifier = identifier) ;) (goto_statement "goto LAB_001b298c;" goto statement_identifier ;) })) (labeled_statement "LAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);" statement_identifier : (expression_statement "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);" (call_expression "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" ( (pointer_expression "**(code **)(iVar13 + -0x7810)" * (pointer_expression "*(code **)(iVar13 + -0x7810)" * (cast_expression "(code **)(iVar13 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7810)" ( (binary_expression "iVar13 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc)" ( (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" * (cast_expression "(int *)(iVar13 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7fc4)" ( (binary_expression "iVar13 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x47dc" (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);" statement_identifier : (expression_statement "iVar5 = *(int *)(iVar13 + -0x77f0);" (assignment_expression "iVar5 = *(int *)(iVar13 + -0x77f0)" identifier = (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);" statement_identifier : (expression_statement "(**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);" (call_expression "(**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" ( (pointer_expression "**(code **)(iVar13 + -0x7810)" * (pointer_expression "*(code **)(iVar13 + -0x7810)" * (cast_expression "(code **)(iVar13 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7810)" ( (binary_expression "iVar13 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0)" ( (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" * (cast_expression "(int *)(iVar13 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7fc4)" ( (binary_expression "iVar13 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "iVar5 + 0x45e0" identifier + number_literal) ))) ;)) (labeled_statement "LAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);" statement_identifier : (expression_statement "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);" (call_expression "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" ( (pointer_expression "**(code **)(iVar13 + -0x7810)" * (pointer_expression "*(code **)(iVar13 + -0x7810)" * (cast_expression "(code **)(iVar13 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7810)" ( (binary_expression "iVar13 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4)" ( (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" * (cast_expression "(int *)(iVar13 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7fc4)" ( (binary_expression "iVar13 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x44d4" (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;)) }))) (expression_statement "uVar6 = (undefined4)lVar17;" (assignment_expression "uVar6 = (undefined4)lVar17" identifier = (cast_expression "(undefined4)lVar17" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "(**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);" (call_expression "(**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" ( (pointer_expression "**(code **)(iVar13 + -0x7810)" * (pointer_expression "*(code **)(iVar13 + -0x7810)" * (cast_expression "(code **)(iVar13 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7810)" ( (binary_expression "iVar13 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4)" ( (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" * (cast_expression "(int *)(iVar13 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x7fc4)" ( (binary_expression "iVar13 + -0x7fc4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x44e4" (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);" (assignment_expression "lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" identifier = (call_expression "CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" identifier (argument_list "((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" ( (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , identifier )))) ;) (labeled_statement "LAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);" statement_identifier : (expression_statement "iVar10 = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "iVar10 = (int)((ulonglong)lVar17 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" ( (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "iVar5 = (int)lVar17;" (assignment_expression "iVar5 = (int)lVar17" identifier = (cast_expression "(int)lVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar17 = CONCAT44(iVar10,uVar6);" (assignment_expression "lVar17 = CONCAT44(iVar10,uVar6)" identifier = (call_expression "CONCAT44(iVar10,uVar6)" identifier (argument_list "(iVar10,uVar6)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar5 != iVar10)" ( (binary_expression "iVar5 != iVar10" identifier != identifier) )) ;) (expression_statement "uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);" (assignment_expression "uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514)" identifier = (call_expression "(**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514)" (parenthesized_expression "(**(code **)(iVar13 + -0x3610))" ( (pointer_expression "**(code **)(iVar13 + -0x3610)" * (pointer_expression "*(code **)(iVar13 + -0x3610)" * (cast_expression "(code **)(iVar13 + -0x3610)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x3610)" ( (binary_expression "iVar13 + -0x3610" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar13 + -0x77f0) + 0x3514)" ( (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x3514" (pointer_expression "*(int *)(iVar13 + -0x77f0)" * (cast_expression "(int *)(iVar13 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x77f0)" ( (binary_expression "iVar13 + -0x77f0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) (expression_statement "(**(code **)(iVar14 + -0x70e8))(uVar6);" (call_expression "(**(code **)(iVar14 + -0x70e8))(uVar6)" (parenthesized_expression "(**(code **)(iVar14 + -0x70e8))" ( (pointer_expression "**(code **)(iVar14 + -0x70e8)" * (pointer_expression "*(code **)(iVar14 + -0x70e8)" * (cast_expression "(code **)(iVar14 + -0x70e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + -0x70e8)" ( (binary_expression "iVar14 + -0x70e8" identifier + number_literal) ))))) )) (argument_list "(uVar6)" ( identifier ))) ;) (labeled_statement "LAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;" statement_identifier : (expression_statement "iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;" (assignment_expression "iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574" identifier = (binary_expression "*(int *)(iVar14 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar14 + -0x7fc4)" * (cast_expression "(int *)(iVar14 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0x7fc4)" ( (binary_expression "iVar14 + -0x7fc4" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "(**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);" (call_expression "(**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598)" (parenthesized_expression "(**(code **)(iVar14 + -0x7810))" ( (pointer_expression "**(code **)(iVar14 + -0x7810)" * (pointer_expression "*(code **)(iVar14 + -0x7810)" * (cast_expression "(code **)(iVar14 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + -0x7810)" ( (binary_expression "iVar14 + -0x7810" identifier + number_literal) ))))) )) (argument_list "(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598)" ( identifier , number_literal , (binary_expression "*(int *)(iVar14 + -0x77f0) + 0x4598" (pointer_expression "*(int *)(iVar14 + -0x77f0)" * (cast_expression "(int *)(iVar14 + -0x77f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0x77f0)" ( (binary_expression "iVar14 + -0x77f0" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "(**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);" (call_expression "(**(code **)(iVar13 + -0x7e1c))(piVar4,0x40)" (parenthesized_expression "(**(code **)(iVar13 + -0x7e1c))" ( (pointer_expression "**(code **)(iVar13 + -0x7e1c)" * (pointer_expression "*(code **)(iVar13 + -0x7e1c)" * (cast_expression "(code **)(iVar13 + -0x7e1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7e1c)" ( (binary_expression "iVar13 + -0x7e1c" identifier + number_literal) ))))) )) (argument_list "(piVar4,0x40)" ( identifier , number_literal ))) ;) (expression_statement "pcVar12 = *(code **)(iVar13 + -0x7f78);" (assignment_expression "pcVar12 = *(code **)(iVar13 + -0x7f78)" identifier = (pointer_expression "*(code **)(iVar13 + -0x7f78)" * (cast_expression "(code **)(iVar13 + -0x7f78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar13 + -0x7f78)" ( (binary_expression "iVar13 + -0x7f78" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x130);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x130)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x130)" * (cast_expression "(undefined4 **)(iVar5 + 0x130)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x130)" ( (binary_expression "iVar5 + 0x130" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }" if (parenthesized_expression "(puVar8 == *(undefined4 **)(iVar5 + 0x134))" ( (binary_expression "puVar8 == *(undefined4 **)(iVar5 + 0x134)" identifier == (pointer_expression "*(undefined4 **)(iVar5 + 0x134)" * (cast_expression "(undefined4 **)(iVar5 + 0x134)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x134)" ( (binary_expression "iVar5 + 0x134" identifier + number_literal) ))))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (do_statement "do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);" do (compound_statement "{\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  }" { (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);" (assignment_expression "iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8)" identifier = (call_expression "(**(code **)(pcVar12 + 0x30f478))(*puVar8)" (parenthesized_expression "(**(code **)(pcVar12 + 0x30f478))" ( (pointer_expression "**(code **)(pcVar12 + 0x30f478)" * (pointer_expression "*(code **)(pcVar12 + 0x30f478)" * (cast_expression "(code **)(pcVar12 + 0x30f478)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar12 + 0x30f478)" ( (binary_expression "pcVar12 + 0x30f478" identifier + number_literal) ))))) )) (argument_list "(*puVar8)" ( (pointer_expression "*puVar8" * identifier) )))) ;) (expression_statement "uVar7 = uVar7 + iVar13;" (assignment_expression "uVar7 = uVar7 + iVar13" identifier = (binary_expression "uVar7 + iVar13" identifier + identifier)) ;) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(*(undefined4 **)(iVar5 + 0x134) != puVar9)" ( (binary_expression "*(undefined4 **)(iVar5 + 0x134) != puVar9" (pointer_expression "*(undefined4 **)(iVar5 + 0x134)" * (cast_expression "(undefined4 **)(iVar5 + 0x134)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x134)" ( (binary_expression "iVar5 + 0x134" identifier + number_literal) )))) != identifier) )) ;) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression IDENT (argument_list ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) + IDENT) + LIT) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)) != LIT) )))) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (subscript_expression IDENT [ LIT ]) << LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) < LIT) )) (goto_statement goto statement_identifier ;)) (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 (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) < LIT) )) (goto_statement goto statement_identifier ;)) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (subscript_expression IDENT [ LIT ]) << LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (ERROR (assignment_expression IDENT = IDENT) : :) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (call_expression IDENT (argument_list ( IDENT , IDENT ))) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) < LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) < LIT) )) || (parenthesized_expression ( (comma_expression (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) < LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) == IDENT) && (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = 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) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( (pointer_expression * IDENT) , (binary_expression (pointer_expression * IDENT) + LIT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , IDENT )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (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) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (binary_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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return LIT ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) (return_statement return IDENT ;) })))
(function_definition "uint __thiscall gold::Layout::create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)\n\n{\n  int *piVar1;\n  byte bVar2;\n  longlong lVar3;\n  int *piVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 extraout_v1;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int iVar10;\n  int *piVar11;\n  int in_t9;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar17 = CONCAT44(unaff_s3,unaff_s1);\n  iVar13 = in_t9 + 0x3169bc;\n  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);\n                    \n  (**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);\n  piVar11 = *(int **)(iVar13 + -0x788c);\n  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);\n  if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }\n  iVar5 = *piVar4;\n  if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }\n  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }\n  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));\n  uVar6 = (undefined4)lVar17;\n  iVar14 = iVar13;\n  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);\n  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);\n  iVar13 = iVar14;\n  (**(code **)(iVar14 + -0x70e8))(uVar6);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);\n                    \n  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);\n  pcVar12 = *(code **)(iVar13 + -0x7f78);\n  (*pcVar12)();\n  puVar8 = *(undefined4 **)(iVar5 + 0x130);\n  uVar7 = 0;\n  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }\n  do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);\n  return uVar7;\n}" (type_identifier "uint") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Layout::" (identifier "gold") (: ":") (: ":") (identifier "Layout") (: ":") (: ":")) (function_declarator "create_shdrs(Layout *this,Output_section *param_1,longlong *param_2)" (identifier "create_shdrs") (parameter_list "(Layout *this,Output_section *param_1,longlong *param_2)" (( "(") (parameter_declaration "Layout *this" (type_identifier "Layout") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Output_section *param_1" (type_identifier "Output_section") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "longlong *param_2" (type_identifier "longlong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  longlong lVar3;\n  int *piVar4;\n  int iVar5;\n  undefined4 uVar6;\n  undefined4 extraout_v1;\n  uint uVar7;\n  undefined4 *puVar8;\n  undefined4 *puVar9;\n  undefined4 unaff_s1;\n  undefined4 unaff_s3;\n  int iVar10;\n  int *piVar11;\n  int in_t9;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  longlong lVar17;\n  undefined4 in_stack_ffffffd4;\n  \n  lVar17 = CONCAT44(unaff_s3,unaff_s1);\n  iVar13 = in_t9 + 0x3169bc;\n  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);\n                    \n  (**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);\n  piVar11 = *(int **)(iVar13 + -0x788c);\n  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);\n  if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }\n  iVar5 = *piVar4;\n  if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }\n  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }\n  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));\n  uVar6 = (undefined4)lVar17;\n  iVar14 = iVar13;\n  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;\n  do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);\n  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);\n  iVar13 = iVar14;\n  (**(code **)(iVar14 + -0x70e8))(uVar6);\nLAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;\n  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);\n                    \n  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);\n  pcVar12 = *(code **)(iVar13 + -0x7f78);\n  (*pcVar12)();\n  puVar8 = *(undefined4 **)(iVar5 + 0x130);\n  uVar7 = 0;\n  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }\n  do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);\n  return uVar7;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "longlong lVar3;" (type_identifier "longlong") (identifier "lVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 extraout_v1;" (type_identifier "undefined4") (identifier "extraout_v1") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 unaff_s1;" (type_identifier "undefined4") (identifier "unaff_s1") (; ";")) (declaration "undefined4 unaff_s3;" (type_identifier "undefined4") (identifier "unaff_s3") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int in_t9;" (primitive_type "int") (identifier "in_t9") (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "longlong lVar15;" (type_identifier "longlong") (identifier "lVar15") (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "longlong lVar17;" (type_identifier "longlong") (identifier "lVar17") (; ";")) (declaration "undefined4 in_stack_ffffffd4;" (type_identifier "undefined4") (identifier "in_stack_ffffffd4") (; ";")) (expression_statement "lVar17 = CONCAT44(unaff_s3,unaff_s1);" (assignment_expression "lVar17 = CONCAT44(unaff_s3,unaff_s1)" (identifier "lVar17") (= "=") (call_expression "CONCAT44(unaff_s3,unaff_s1)" (identifier "CONCAT44") (argument_list "(unaff_s3,unaff_s1)" (( "(") (identifier "unaff_s3") (, ",") (identifier "unaff_s1") () ")")))) (; ";")) (expression_statement "iVar13 = in_t9 + 0x3169bc;" (assignment_expression "iVar13 = in_t9 + 0x3169bc" (identifier "iVar13") (= "=") (binary_expression "in_t9 + 0x3169bc" (identifier "in_t9") (+ "+") (number_literal "0x3169bc"))) (; ";")) (expression_statement "piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);" (assignment_expression "piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40)" (identifier "piVar4") (= "=") (cast_expression "(int *)(**(code **)(in_t9 + 0x30eb24))(0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(in_t9 + 0x30eb24))(0x40)" (parenthesized_expression "(**(code **)(in_t9 + 0x30eb24))" (( "(") (pointer_expression "**(code **)(in_t9 + 0x30eb24)" (* "*") (pointer_expression "*(code **)(in_t9 + 0x30eb24)" (* "*") (cast_expression "(code **)(in_t9 + 0x30eb24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_t9 + 0x30eb24)" (( "(") (binary_expression "in_t9 + 0x30eb24" (identifier "in_t9") (+ "+") (number_literal "0x30eb24")) () ")"))))) () ")")) (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")"))))) (; ";")) (expression_statement "(**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);" (call_expression "(**(code **)(iVar13 + -0x70cc))\n            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1)" (parenthesized_expression "(**(code **)(iVar13 + -0x70cc))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x70cc)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x70cc)" (* "*") (cast_expression "(code **)(iVar13 + -0x70cc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x70cc)" (( "(") (binary_expression "iVar13 + -0x70cc" (identifier "iVar13") (+ "+") (number_literal "-0x70cc")) () ")"))))) () ")")) (argument_list "(piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1)" (( "(") (identifier "piVar4") (, ",") (identifier "this") (, ",") (binary_expression "this + 0x130" (identifier "this") (+ "+") (number_literal "0x130")) (, ",") (binary_expression "this + 0x13c" (identifier "this") (+ "+") (number_literal "0x13c")) (, ",") (binary_expression "this + 0x148" (identifier "this") (+ "+") (number_literal "0x148")) (, ",") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "piVar11 = *(int **)(iVar13 + -0x788c);" (assignment_expression "piVar11 = *(int **)(iVar13 + -0x788c)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)(iVar13 + -0x788c)" (* "*") (cast_expression "(int **)(iVar13 + -0x788c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x788c)" (( "(") (binary_expression "iVar13 + -0x788c" (identifier "iVar13") (+ "+") (number_literal "-0x788c")) () ")"))))) (; ";")) (expression_statement "iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);" (assignment_expression "iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11)" (identifier "iVar5") (= "=") (call_expression "(**(code **)(iVar13 + -0x70f4))(*piVar11)" (parenthesized_expression "(**(code **)(iVar13 + -0x70f4))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x70f4)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x70f4)" (* "*") (cast_expression "(code **)(iVar13 + -0x70f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x70f4)" (( "(") (binary_expression "iVar13 + -0x70f4" (identifier "iVar13") (+ "+") (number_literal "-0x70f4")) () ")"))))) () ")")) (argument_list "(*piVar11)" (( "(") (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar5 = *(int *)param_2;\n    lVar3 = *param_2;\n    lVar17 = *param_2;\n    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }\n    uVar7 = (uint)lVar3 - 1;\n    iVar14 = iVar13;\n    if (lVar15 == 0) goto LAB_001b298c;\n    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);\n    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);\n    goto LAB_001b298c;\n  }" ({ "{") (expression_statement "iVar5 = *(int *)param_2;" (assignment_expression "iVar5 = *(int *)param_2" (identifier "iVar5") (= "=") (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2")))) (; ";")) (expression_statement "lVar3 = *param_2;" (assignment_expression "lVar3 = *param_2" (identifier "lVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "lVar17 = *param_2;" (assignment_expression "lVar17 = *param_2" (identifier "lVar17") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }\n    else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" (if "if") (parenthesized_expression "(*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8))" (( "(") (binary_expression "*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)" (pointer_expression "*(code **)(*piVar4 + 0xc)" (* "*") (cast_expression "(code **)(*piVar4 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar4 + 0xc)" (( "(") (binary_expression "*piVar4 + 0xc" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (pointer_expression "*(code **)(iVar13 + -0x70c8)" (* "*") (cast_expression "(code **)(iVar13 + -0x70c8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x70c8)" (( "(") (binary_expression "iVar13 + -0x70c8" (identifier "iVar13") (+ "+") (number_literal "-0x70c8")) () ")"))))) () ")")) (compound_statement "{\n      lVar15 = (**(code **)(iVar13 + -0x70c4))();\n    }" ({ "{") (expression_statement "lVar15 = (**(code **)(iVar13 + -0x70c4))();" (assignment_expression "lVar15 = (**(code **)(iVar13 + -0x70c4))()" (identifier "lVar15") (= "=") (call_expression "(**(code **)(iVar13 + -0x70c4))()" (parenthesized_expression "(**(code **)(iVar13 + -0x70c4))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x70c4)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x70c4)" (* "*") (cast_expression "(code **)(iVar13 + -0x70c4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x70c4)" (( "(") (binary_expression "iVar13 + -0x70c4" (identifier "iVar13") (+ "+") (number_literal "-0x70c4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" (else "else") (compound_statement "{\n      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);\n    }" ({ "{") (expression_statement "lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);" (assignment_expression "lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4)" (identifier "lVar15") (= "=") (call_expression "(**(code **)(*piVar4 + 0xc))(piVar4)" (parenthesized_expression "(**(code **)(*piVar4 + 0xc))" (( "(") (pointer_expression "**(code **)(*piVar4 + 0xc)" (* "*") (pointer_expression "*(code **)(*piVar4 + 0xc)" (* "*") (cast_expression "(code **)(*piVar4 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar4 + 0xc)" (( "(") (binary_expression "*piVar4 + 0xc" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(piVar4)" (( "(") (identifier "piVar4") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar7 = (uint)lVar3 - 1;" (assignment_expression "uVar7 = (uint)lVar3 - 1" (identifier "uVar7") (= "=") (binary_expression "(uint)lVar3 - 1" (cast_expression "(uint)lVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar3")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" (identifier "iVar14") (= "=") (identifier "iVar13")) (; ";")) (if_statement "if (lVar15 == 0) goto LAB_001b298c;" (if "if") (parenthesized_expression "(lVar15 == 0)" (( "(") (binary_expression "lVar15 == 0" (identifier "lVar15") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001b298c;" (goto "goto") (statement_identifier "LAB_001b298c") (; ";"))) (expression_statement "lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);" (assignment_expression "lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" (identifier "lVar17") (= "=") (binary_expression "lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" (identifier "lVar15") (+ "+") (call_expression "CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" (identifier "CONCAT44") (argument_list "((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7)" (( "(") (binary_expression "(uint)(uVar7 < (uint)lVar3) + iVar5 + -1" (binary_expression "(uint)(uVar7 < (uint)lVar3) + iVar5" (call_expression "(uint)(uVar7 < (uint)lVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < (uint)lVar3)" (( "(") (binary_expression "uVar7 < (uint)lVar3" (identifier "uVar7") (< "<") (cast_expression "(uint)lVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar3"))) () ")"))) (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-1")) (, ",") (identifier "uVar7") () ")"))))) (; ";")) (expression_statement "lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15);" (assignment_expression "lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" (identifier "lVar17") (= "=") (call_expression "CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" (identifier "CONCAT44") (argument_list "((uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),\n                      (uint)lVar17 & -(int)lVar15)" (( "(") (binary_expression "(uint)((ulonglong)lVar17 >> 0x20) &\n                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20)" (call_expression "(uint)((ulonglong)lVar17 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar17")) (>> ">>") (number_literal "0x20")) () ")"))) (& "&") (binary_expression "-(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20)" (unary_expression "-(uint)(-(int)lVar15 != 0)" (- "-") (call_expression "(uint)(-(int)lVar15 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(-(int)lVar15 != 0)" (( "(") (binary_expression "-(int)lVar15 != 0" (unary_expression "-(int)lVar15" (- "-") (cast_expression "(int)lVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar15"))) (!= "!=") (number_literal "0")) () ")")))) (- "-") (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar15")) (>> ">>") (number_literal "0x20")) () ")"))))) (, ",") (binary_expression "(uint)lVar17 & -(int)lVar15" (cast_expression "(uint)lVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar17")) (& "&") (unary_expression "-(int)lVar15" (- "-") (cast_expression "(int)lVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar15")))) () ")")))) (; ";")) (goto_statement "goto LAB_001b298c;" (goto "goto") (statement_identifier "LAB_001b298c") (; ";")) (} "}"))) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (if_statement "if (-1 < piVar4[8] << 1) {\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }" (if "if") (parenthesized_expression "(-1 < piVar4[8] << 1)" (( "(") (binary_expression "-1 < piVar4[8] << 1" (number_literal "-1") (< "<") (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (<< "<<") (number_literal "1"))) () ")")) (compound_statement "{\n    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }\n  }" ({ "{") (if_statement "if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }\n    else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" (if "if") (parenthesized_expression "(*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0))" (( "(") (binary_expression "*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)" (pointer_expression "*(code **)(iVar5 + 0x34)" (* "*") (cast_expression "(code **)(iVar5 + 0x34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x34)" (( "(") (binary_expression "iVar5 + 0x34" (identifier "iVar5") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (pointer_expression "*(code **)(iVar13 + -0x70c0)" (* "*") (cast_expression "(code **)(iVar13 + -0x70c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x70c0)" (( "(") (binary_expression "iVar13 + -0x70c0" (identifier "iVar13") (+ "+") (number_literal "-0x70c0")) () ")"))))) () ")")) (compound_statement "{\n      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);\n      iVar14 = iVar13;\n      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;\n      iVar5 = *(int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;\n      iVar5 = *piVar4;\n      *(undefined8 *)(piVar4 + 4) = uVar16;\n      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;\n    }" ({ "{") (expression_statement "uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);" (assignment_expression "uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4)" (identifier "uVar16") (= "=") (call_expression "(**(code **)(iVar13 + -0x70bc))(piVar4)" (parenthesized_expression "(**(code **)(iVar13 + -0x70bc))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x70bc)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x70bc)" (* "*") (cast_expression "(code **)(iVar13 + -0x70bc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x70bc)" (( "(") (binary_expression "iVar13 + -0x70bc" (identifier "iVar13") (+ "+") (number_literal "-0x70bc")) () ")"))))) () ")")) (argument_list "(piVar4)" (( "(") (identifier "piVar4") () ")")))) (; ";")) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" (identifier "iVar14") (= "=") (identifier "iVar13")) (; ";")) (if_statement "if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;" (if "if") (parenthesized_expression "(piVar4[8] << 1 < 0)" (( "(") (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (<< "<<") (number_literal "1")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_001b2bfc;" (goto "goto") (statement_identifier "LAB_001b2bfc") (; ";"))) (expression_statement "iVar5 = *(int *)(iVar13 + -0x77f0);" (assignment_expression "iVar5 = *(int *)(iVar13 + -0x77f0)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar13 + -0x77f0)" (* "*") (cast_expression "(int *)(iVar13 + -0x77f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x77f0)" (( "(") (binary_expression "iVar13 + -0x77f0" (identifier "iVar13") (+ "+") (number_literal "-0x77f0")) () ")"))))) (; ";")) (if_statement "if (piVar4[8] << 3 < 0) goto LAB_001b2c00;" (if "if") (parenthesized_expression "(piVar4[8] << 3 < 0)" (( "(") (binary_expression "piVar4[8] << 3 < 0" (binary_expression "piVar4[8] << 3" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (<< "<<") (number_literal "3")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_001b2c00;" (goto "goto") (statement_identifier "LAB_001b2c00") (; ";"))) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "*(undefined8 *)(piVar4 + 4) = uVar16;" (assignment_expression "*(undefined8 *)(piVar4 + 4) = uVar16" (pointer_expression "*(undefined8 *)(piVar4 + 4)" (* "*") (cast_expression "(undefined8 *)(piVar4 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 4)" (( "(") (binary_expression "piVar4 + 4" (identifier "piVar4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "*(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;" (assignment_expression "*(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40" (pointer_expression "*(byte *)(piVar4 + 8)" (* "*") (cast_expression "(byte *)(piVar4 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 8)" (( "(") (binary_expression "piVar4 + 8" (identifier "piVar4") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(byte *)(piVar4 + 8) & 0xbf | 0x40" (binary_expression "*(byte *)(piVar4 + 8) & 0xbf" (pointer_expression "*(byte *)(piVar4 + 8)" (* "*") (cast_expression "(byte *)(piVar4 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 8)" (( "(") (binary_expression "piVar4 + 8" (identifier "piVar4") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0xbf")) (| "|") (number_literal "0x40"))) (; ";")) (} "}")) (else_clause "else {\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" (else "else") (compound_statement "{\n      (**(code **)(iVar5 + 0x34))(piVar4);\n      iVar14 = iVar13;\n      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;\n      iVar5 = *piVar4;\n    }" ({ "{") (expression_statement "(**(code **)(iVar5 + 0x34))(piVar4);" (call_expression "(**(code **)(iVar5 + 0x34))(piVar4)" (parenthesized_expression "(**(code **)(iVar5 + 0x34))" (( "(") (pointer_expression "**(code **)(iVar5 + 0x34)" (* "*") (pointer_expression "*(code **)(iVar5 + 0x34)" (* "*") (cast_expression "(code **)(iVar5 + 0x34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x34)" (( "(") (binary_expression "iVar5 + 0x34" (identifier "iVar5") (+ "+") (number_literal "0x34")) () ")"))))) () ")")) (argument_list "(piVar4)" (( "(") (identifier "piVar4") () ")"))) (; ";")) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" (identifier "iVar14") (= "=") (identifier "iVar13")) (; ";")) (if_statement "if (-1 < piVar4[8] << 1) goto LAB_001b2be0;" (if "if") (parenthesized_expression "(-1 < piVar4[8] << 1)" (( "(") (binary_expression "-1 < piVar4[8] << 1" (number_literal "-1") (< "<") (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (<< "<<") (number_literal "1"))) () ")")) (goto_statement "goto LAB_001b2be0;" (goto "goto") (statement_identifier "LAB_001b2be0") (; ";"))) (expression_statement "iVar5 = *piVar4;" (assignment_expression "iVar5 = *piVar4" (identifier "iVar5") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }\n  else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8))" (( "(") (binary_expression "*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)" (pointer_expression "*(code **)(iVar5 + 0xc)" (* "*") (cast_expression "(code **)(iVar5 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (pointer_expression "*(code **)(iVar13 + -0x70c8)" (* "*") (cast_expression "(code **)(iVar13 + -0x70c8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x70c8)" (( "(") (binary_expression "iVar13 + -0x70c8" (identifier "iVar13") (+ "+") (number_literal "-0x70c8")) () ")"))))) () ")")) (compound_statement "{\n    lVar17 = (**(code **)(iVar13 + -0x70c4))();\n  }" ({ "{") (expression_statement "lVar17 = (**(code **)(iVar13 + -0x70c4))();" (assignment_expression "lVar17 = (**(code **)(iVar13 + -0x70c4))()" (identifier "lVar17") (= "=") (call_expression "(**(code **)(iVar13 + -0x70c4))()" (parenthesized_expression "(**(code **)(iVar13 + -0x70c4))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x70c4)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x70c4)" (* "*") (cast_expression "(code **)(iVar13 + -0x70c4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x70c4)" (( "(") (binary_expression "iVar13 + -0x70c4" (identifier "iVar13") (+ "+") (number_literal "-0x70c4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" (else "else") (compound_statement "{\n    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);\n  }" ({ "{") (expression_statement "lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);" (assignment_expression "lVar17 = (**(code **)(iVar5 + 0xc))(piVar4)" (identifier "lVar17") (= "=") (call_expression "(**(code **)(iVar5 + 0xc))(piVar4)" (parenthesized_expression "(**(code **)(iVar5 + 0xc))" (( "(") (pointer_expression "**(code **)(iVar5 + 0xc)" (* "*") (pointer_expression "*(code **)(iVar5 + 0xc)" (* "*") (cast_expression "(code **)(iVar5 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(piVar4)" (( "(") (identifier "piVar4") () ")")))) (; ";")) (} "}")))) (ERROR "lVar17 = Free_list::" (assignment_expression "lVar17 = Free_list" (identifier "lVar17") (= "=") (identifier "Free_list")) (: ":") (: ":")) (expression_statement "allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));" (call_expression "allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4))" (identifier "allocate") (argument_list "(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4))" (( "(") (identifier "lVar17") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (call_expression "CONCAT44(iVar13,in_stack_ffffffd4)" (identifier "CONCAT44") (argument_list "(iVar13,in_stack_ffffffd4)" (( "(") (identifier "iVar13") (, ",") (identifier "in_stack_ffffffd4") () ")"))) () ")"))) (; ";")) (expression_statement "uVar6 = (undefined4)lVar17;" (assignment_expression "uVar6 = (undefined4)lVar17" (identifier "uVar6") (= "=") (cast_expression "(undefined4)lVar17" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "lVar17"))) (; ";")) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" (identifier "iVar14") (= "=") (identifier "iVar13")) (; ";")) (if_statement "if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;" (if "if") (parenthesized_expression "((int)((ulonglong)lVar17 >> 0x20) == -1)" (( "(") (binary_expression "(int)((ulonglong)lVar17 >> 0x20) == -1" (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar17")) (>> ">>") (number_literal "0x20")) () ")"))) (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_001b2c50;" (goto "goto") (statement_identifier "LAB_001b2c50") (; ";"))) (do_statement "do {\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  } while (iVar5 != iVar10);" (do "do") (compound_statement "{\n    puVar8 = (undefined4 *)*piVar11;\n    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }\n    uVar6 = (undefined4)lVar17;\n    (**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);\n    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);\nLAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);\n    iVar5 = (int)lVar17;\n    lVar17 = CONCAT44(iVar10,uVar6);\n  }" ({ "{") (expression_statement "puVar8 = (undefined4 *)*piVar11;" (assignment_expression "puVar8 = (undefined4 *)*piVar11" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)*piVar11" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar11" (* "*") (identifier "piVar11")))) (; ";")) (if_statement "if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }\n    else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" (if "if") (parenthesized_expression "((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0))" (( "(") (binary_expression "(puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)" (parenthesized_expression "(puVar8[2] == 0)" (( "(") (binary_expression "puVar8[2] == 0" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((puVar8[5] & 0x10) == 0)" (( "(") (binary_expression "(puVar8[5] & 0x10) == 0" (parenthesized_expression "(puVar8[5] & 0x10)" (( "(") (binary_expression "puVar8[5] & 0x10" (subscript_expression "puVar8[5]" (identifier "puVar8") ([ "[") (number_literal "5") (] "]")) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }\n    }" ({ "{") (labeled_statement "LAB_001b298c:\n      if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" (statement_identifier "LAB_001b298c") (: ":") (if_statement "if (-1 < piVar4[8]) {\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" (if "if") (parenthesized_expression "(-1 < piVar4[8])" (( "(") (binary_expression "-1 < piVar4[8]" (number_literal "-1") (< "<") (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]"))) () ")")) (compound_statement "{\n        bVar2 = *(byte *)(piVar4 + 8);\n        piVar4[3] = 0;\n        piVar4[2] = 0;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;\n        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;\n        *(longlong *)(piVar4 + 6) = lVar17;\n        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;\n        if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }\n        goto LAB_001b2c74;\n      }" ({ "{") (expression_statement "bVar2 = *(byte *)(piVar4 + 8);" (assignment_expression "bVar2 = *(byte *)(piVar4 + 8)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(piVar4 + 8)" (* "*") (cast_expression "(byte *)(piVar4 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 8)" (( "(") (binary_expression "piVar4 + 8" (identifier "piVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;" (assignment_expression "*(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80" (pointer_expression "*(byte *)(piVar4 + 8)" (* "*") (cast_expression "(byte *)(piVar4 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 8)" (( "(") (binary_expression "piVar4 + 8" (identifier "piVar4") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "bVar2 & 0x7f | 0x80" (binary_expression "bVar2 & 0x7f" (identifier "bVar2") (& "&") (number_literal "0x7f")) (| "|") (number_literal "0x80"))) (; ";")) (if_statement "if (piVar4[8] << 2 < 0) goto LAB_001b2c18;" (if "if") (parenthesized_expression "(piVar4[8] << 2 < 0)" (( "(") (binary_expression "piVar4[8] << 2 < 0" (binary_expression "piVar4[8] << 2" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (<< "<<") (number_literal "2")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_001b2c18;" (goto "goto") (statement_identifier "LAB_001b2c18") (; ";"))) (expression_statement "*(longlong *)(piVar4 + 6) = lVar17;" (assignment_expression "*(longlong *)(piVar4 + 6) = lVar17" (pointer_expression "*(longlong *)(piVar4 + 6)" (* "*") (cast_expression "(longlong *)(piVar4 + 6)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 6)" (( "(") (binary_expression "piVar4 + 6" (identifier "piVar4") (+ "+") (number_literal "6")) () ")")))) (= "=") (identifier "lVar17")) (; ";")) (expression_statement "*(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;" (assignment_expression "*(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0" (pointer_expression "*(byte *)(piVar4 + 8)" (* "*") (cast_expression "(byte *)(piVar4 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 8)" (( "(") (binary_expression "piVar4 + 8" (identifier "piVar4") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "bVar2 & 0x5f | 0xa0" (binary_expression "bVar2 & 0x5f" (identifier "bVar2") (& "&") (number_literal "0x5f")) (| "|") (number_literal "0xa0"))) (; ";")) (if_statement "if ((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }" (if "if") (parenthesized_expression "((piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0))" (( "(") (binary_expression "(piVar4[8] << 1 < 0) ||\n           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)" (parenthesized_expression "(piVar4[8] << 1 < 0)" (( "(") (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (<< "<<") (number_literal "1")) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)" (( "(") (comma_expression "(**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0" (call_expression "(**(code **)(*piVar4 + 0x38))(piVar4)" (parenthesized_expression "(**(code **)(*piVar4 + 0x38))" (( "(") (pointer_expression "**(code **)(*piVar4 + 0x38)" (* "*") (pointer_expression "*(code **)(*piVar4 + 0x38)" (* "*") (cast_expression "(code **)(*piVar4 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar4 + 0x38)" (( "(") (binary_expression "*piVar4 + 0x38" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(piVar4)" (( "(") (identifier "piVar4") () ")"))) (, ",") (comma_expression "iVar13 = iVar14, piVar4[8] << 1 < 0" (assignment_expression "iVar13 = iVar14" (identifier "iVar13") (= "=") (identifier "iVar14")) (, ",") (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (<< "<<") (number_literal "1")) (< "<") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);\n          iVar13 = (int)((ulonglong)lVar17 >> 0x20);\n          if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }\n          *(int **)(this + 0x16c) = piVar4;\n          return (uint)lVar17;\n        }" ({ "{") (expression_statement "lVar17 = lVar17 + *(longlong *)(piVar4 + 4);" (assignment_expression "lVar17 = lVar17 + *(longlong *)(piVar4 + 4)" (identifier "lVar17") (= "=") (binary_expression "lVar17 + *(longlong *)(piVar4 + 4)" (identifier "lVar17") (+ "+") (pointer_expression "*(longlong *)(piVar4 + 4)" (* "*") (cast_expression "(longlong *)(piVar4 + 4)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 4)" (( "(") (binary_expression "piVar4 + 4" (identifier "piVar4") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "iVar13 = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "iVar13 = (int)((ulonglong)lVar17 >> 0x20)" (identifier "iVar13") (= "=") (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar17")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if ((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {\n            *param_2 = lVar17;\n          }" (if "if") (parenthesized_expression "((*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17))))" (( "(") (binary_expression "(*(int *)param_2 < iVar13) ||\n             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))" (parenthesized_expression "(*(int *)param_2 < iVar13)" (( "(") (binary_expression "*(int *)param_2 < iVar13" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (< "<") (identifier "iVar13")) () ")")) (|| "||") (parenthesized_expression "((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))" (( "(") (parenthesized_expression "(*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17))" (( "(") (binary_expression "*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)" (binary_expression "*(int *)param_2 == iVar13" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (== "==") (identifier "iVar13")) (&& "&&") (parenthesized_expression "((uint)*param_2 < (uint)lVar17)" (( "(") (binary_expression "(uint)*param_2 < (uint)lVar17" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_2")) (< "<") (cast_expression "(uint)lVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar17"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n            *param_2 = lVar17;\n          }" ({ "{") (expression_statement "*param_2 = lVar17;" (assignment_expression "*param_2 = lVar17" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "lVar17")) (; ";")) (} "}"))) (expression_statement "*(int **)(this + 0x16c) = piVar4;" (assignment_expression "*(int **)(this + 0x16c) = piVar4" (pointer_expression "*(int **)(this + 0x16c)" (* "*") (cast_expression "(int **)(this + 0x16c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x16c)" (( "(") (binary_expression "this + 0x16c" (identifier "this") (+ "+") (number_literal "0x16c")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (return_statement "return (uint)lVar17;" (return "return") (cast_expression "(uint)lVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar17")) (; ";")) (} "}"))) (goto_statement "goto LAB_001b2c74;" (goto "goto") (statement_identifier "LAB_001b2c74") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" (else "else") (compound_statement "{\n      piVar1 = (int *)(iVar13 + -0x77f0);\n      if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }\nLAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);\nLAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);\nLAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);\nLAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);\n    }" ({ "{") (expression_statement "piVar1 = (int *)(iVar13 + -0x77f0);" (assignment_expression "piVar1 = (int *)(iVar13 + -0x77f0)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar13 + -0x77f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x77f0)" (( "(") (binary_expression "iVar13 + -0x77f0" (identifier "iVar13") (+ "+") (number_literal "-0x77f0")) () ")")))) (; ";")) (if_statement "if (piVar4[8] << 1 < 0) {\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }" (if "if") (parenthesized_expression "(piVar4[8] << 1 < 0)" (( "(") (binary_expression "piVar4[8] << 1 < 0" (binary_expression "piVar4[8] << 1" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (<< "<<") (number_literal "1")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        puVar9 = (undefined4 *)(iVar13 + -0x7228);\n        iVar13 = iVar14;\n        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);\n        iVar14 = iVar13;\n        goto LAB_001b298c;\n      }" ({ "{") (expression_statement "puVar9 = (undefined4 *)(iVar13 + -0x7228);" (assignment_expression "puVar9 = (undefined4 *)(iVar13 + -0x7228)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)(iVar13 + -0x7228)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x7228)" (( "(") (binary_expression "iVar13 + -0x7228" (identifier "iVar13") (+ "+") (number_literal "-0x7228")) () ")")))) (; ";")) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" (identifier "iVar13") (= "=") (identifier "iVar14")) (; ";")) (expression_statement "(*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);" (call_expression "(*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17)" (parenthesized_expression "(*(code *)*puVar9)" (( "(") (pointer_expression "*(code *)*puVar9" (* "*") (cast_expression "(code *)*puVar9" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")))) () ")")) (argument_list "(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17)" (( "(") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (, ",") (binary_expression "*piVar1 + 0x3560" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0x3560")) (, ",") (cast_expression "(int)lVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar17")) (, ",") (binary_expression "piVar4[5] + (int)lVar17" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (+ "+") (cast_expression "(int)lVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar17"))) () ")"))) (; ";")) (expression_statement "iVar14 = iVar13;" (assignment_expression "iVar14 = iVar13" (identifier "iVar14") (= "=") (identifier "iVar13")) (; ";")) (goto_statement "goto LAB_001b298c;" (goto "goto") (statement_identifier "LAB_001b298c") (; ";")) (} "}"))) (labeled_statement "LAB_001b2be0:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);" (statement_identifier "LAB_001b2be0") (: ":") (expression_statement "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);" (call_expression "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x7810)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x7810)" (* "*") (cast_expression "(code **)(iVar13 + -0x7810)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x7810)" (( "(") (binary_expression "iVar13 + -0x7810" (identifier "iVar13") (+ "+") (number_literal "-0x7810")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc)" (( "(") (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" (* "*") (cast_expression "(int *)(iVar13 + -0x7fc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x7fc4)" (( "(") (binary_expression "iVar13 + -0x7fc4" (identifier "iVar13") (+ "+") (number_literal "-0x7fc4")) () ")")))) (+ "+") (number_literal "0x3574")) (, ",") (number_literal "0xcf") (, ",") (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x47dc" (pointer_expression "*(int *)(iVar13 + -0x77f0)" (* "*") (cast_expression "(int *)(iVar13 + -0x77f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x77f0)" (( "(") (binary_expression "iVar13 + -0x77f0" (identifier "iVar13") (+ "+") (number_literal "-0x77f0")) () ")")))) (+ "+") (number_literal "0x47dc")) () ")"))) (; ";"))) (labeled_statement "LAB_001b2bfc:\n      iVar5 = *(int *)(iVar13 + -0x77f0);" (statement_identifier "LAB_001b2bfc") (: ":") (expression_statement "iVar5 = *(int *)(iVar13 + -0x77f0);" (assignment_expression "iVar5 = *(int *)(iVar13 + -0x77f0)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar13 + -0x77f0)" (* "*") (cast_expression "(int *)(iVar13 + -0x77f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x77f0)" (( "(") (binary_expression "iVar13 + -0x77f0" (identifier "iVar13") (+ "+") (number_literal "-0x77f0")) () ")"))))) (; ";"))) (labeled_statement "LAB_001b2c00:\n      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);" (statement_identifier "LAB_001b2c00") (: ":") (expression_statement "(**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);" (call_expression "(**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x7810)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x7810)" (* "*") (cast_expression "(code **)(iVar13 + -0x7810)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x7810)" (( "(") (binary_expression "iVar13 + -0x7810" (identifier "iVar13") (+ "+") (number_literal "-0x7810")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0)" (( "(") (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" (* "*") (cast_expression "(int *)(iVar13 + -0x7fc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x7fc4)" (( "(") (binary_expression "iVar13 + -0x7fc4" (identifier "iVar13") (+ "+") (number_literal "-0x7fc4")) () ")")))) (+ "+") (number_literal "0x3574")) (, ",") (number_literal "0x218") (, ",") (binary_expression "iVar5 + 0x45e0" (identifier "iVar5") (+ "+") (number_literal "0x45e0")) () ")"))) (; ";"))) (labeled_statement "LAB_001b2c18:\n      (**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);" (statement_identifier "LAB_001b2c18") (: ":") (expression_statement "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);" (call_expression "(**(code **)(iVar13 + -0x7810))\n                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x7810)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x7810)" (* "*") (cast_expression "(code **)(iVar13 + -0x7810)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x7810)" (( "(") (binary_expression "iVar13 + -0x7810" (identifier "iVar13") (+ "+") (number_literal "-0x7810")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4)" (( "(") (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" (* "*") (cast_expression "(int *)(iVar13 + -0x7fc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x7fc4)" (( "(") (binary_expression "iVar13 + -0x7fc4" (identifier "iVar13") (+ "+") (number_literal "-0x7fc4")) () ")")))) (+ "+") (number_literal "0x3574")) (, ",") (number_literal "0x14b") (, ",") (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x44d4" (pointer_expression "*(int *)(iVar13 + -0x77f0)" (* "*") (cast_expression "(int *)(iVar13 + -0x77f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x77f0)" (( "(") (binary_expression "iVar13 + -0x77f0" (identifier "iVar13") (+ "+") (number_literal "-0x77f0")) () ")")))) (+ "+") (number_literal "0x44d4")) () ")"))) (; ";"))) (} "}")))) (expression_statement "uVar6 = (undefined4)lVar17;" (assignment_expression "uVar6 = (undefined4)lVar17" (identifier "uVar6") (= "=") (cast_expression "(undefined4)lVar17" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "lVar17"))) (; ";")) (expression_statement "(**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);" (call_expression "(**(code **)(iVar13 + -0x7810))\n              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4)" (parenthesized_expression "(**(code **)(iVar13 + -0x7810))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x7810)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x7810)" (* "*") (cast_expression "(code **)(iVar13 + -0x7810)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x7810)" (( "(") (binary_expression "iVar13 + -0x7810" (identifier "iVar13") (+ "+") (number_literal "-0x7810")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4)" (( "(") (binary_expression "*(int *)(iVar13 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar13 + -0x7fc4)" (* "*") (cast_expression "(int *)(iVar13 + -0x7fc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x7fc4)" (( "(") (binary_expression "iVar13 + -0x7fc4" (identifier "iVar13") (+ "+") (number_literal "-0x7fc4")) () ")")))) (+ "+") (number_literal "0x3574")) (, ",") (number_literal "0x142") (, ",") (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x44e4" (pointer_expression "*(int *)(iVar13 + -0x77f0)" (* "*") (cast_expression "(int *)(iVar13 + -0x77f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x77f0)" (( "(") (binary_expression "iVar13 + -0x77f0" (identifier "iVar13") (+ "+") (number_literal "-0x77f0")) () ")")))) (+ "+") (number_literal "0x44e4")) () ")"))) (; ";")) (expression_statement "lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);" (assignment_expression "lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" (identifier "lVar17") (= "=") (call_expression "CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" (identifier "CONCAT44") (argument_list "((int)((ulonglong)lVar17 >> 0x20),extraout_v1)" (( "(") (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar17")) (>> ">>") (number_literal "0x20")) () ")"))) (, ",") (identifier "extraout_v1") () ")")))) (; ";")) (labeled_statement "LAB_001b2c50:\n    iVar10 = (int)((ulonglong)lVar17 >> 0x20);" (statement_identifier "LAB_001b2c50") (: ":") (expression_statement "iVar10 = (int)((ulonglong)lVar17 >> 0x20);" (assignment_expression "iVar10 = (int)((ulonglong)lVar17 >> 0x20)" (identifier "iVar10") (= "=") (cast_expression "(int)((ulonglong)lVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar17 >> 0x20" (cast_expression "(ulonglong)lVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar17")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";"))) (expression_statement "iVar5 = (int)lVar17;" (assignment_expression "iVar5 = (int)lVar17" (identifier "iVar5") (= "=") (cast_expression "(int)lVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar17"))) (; ";")) (expression_statement "lVar17 = CONCAT44(iVar10,uVar6);" (assignment_expression "lVar17 = CONCAT44(iVar10,uVar6)" (identifier "lVar17") (= "=") (call_expression "CONCAT44(iVar10,uVar6)" (identifier "CONCAT44") (argument_list "(iVar10,uVar6)" (( "(") (identifier "iVar10") (, ",") (identifier "uVar6") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != iVar10)" (( "(") (binary_expression "iVar5 != iVar10" (identifier "iVar5") (!= "!=") (identifier "iVar10")) () ")")) (; ";")) (expression_statement "uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);" (assignment_expression "uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514)" (identifier "uVar6") (= "=") (call_expression "(**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514)" (parenthesized_expression "(**(code **)(iVar13 + -0x3610))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x3610)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x3610)" (* "*") (cast_expression "(code **)(iVar13 + -0x3610)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x3610)" (( "(") (binary_expression "iVar13 + -0x3610" (identifier "iVar13") (+ "+") (number_literal "-0x3610")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar13 + -0x77f0) + 0x3514)" (( "(") (binary_expression "*(int *)(iVar13 + -0x77f0) + 0x3514" (pointer_expression "*(int *)(iVar13 + -0x77f0)" (* "*") (cast_expression "(int *)(iVar13 + -0x77f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x77f0)" (( "(") (binary_expression "iVar13 + -0x77f0" (identifier "iVar13") (+ "+") (number_literal "-0x77f0")) () ")")))) (+ "+") (number_literal "0x3514")) () ")")))) (; ";")) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" (identifier "iVar13") (= "=") (identifier "iVar14")) (; ";")) (expression_statement "(**(code **)(iVar14 + -0x70e8))(uVar6);" (call_expression "(**(code **)(iVar14 + -0x70e8))(uVar6)" (parenthesized_expression "(**(code **)(iVar14 + -0x70e8))" (( "(") (pointer_expression "**(code **)(iVar14 + -0x70e8)" (* "*") (pointer_expression "*(code **)(iVar14 + -0x70e8)" (* "*") (cast_expression "(code **)(iVar14 + -0x70e8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar14 + -0x70e8)" (( "(") (binary_expression "iVar14 + -0x70e8" (identifier "iVar14") (+ "+") (number_literal "-0x70e8")) () ")"))))) () ")")) (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (labeled_statement "LAB_001b2c74:\n  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;" (statement_identifier "LAB_001b2c74") (: ":") (expression_statement "iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;" (assignment_expression "iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574" (identifier "iVar5") (= "=") (binary_expression "*(int *)(iVar14 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar14 + -0x7fc4)" (* "*") (cast_expression "(int *)(iVar14 + -0x7fc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -0x7fc4)" (( "(") (binary_expression "iVar14 + -0x7fc4" (identifier "iVar14") (+ "+") (number_literal "-0x7fc4")) () ")")))) (+ "+") (number_literal "0x3574"))) (; ";"))) (expression_statement "(**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);" (call_expression "(**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598)" (parenthesized_expression "(**(code **)(iVar14 + -0x7810))" (( "(") (pointer_expression "**(code **)(iVar14 + -0x7810)" (* "*") (pointer_expression "*(code **)(iVar14 + -0x7810)" (* "*") (cast_expression "(code **)(iVar14 + -0x7810)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar14 + -0x7810)" (( "(") (binary_expression "iVar14 + -0x7810" (identifier "iVar14") (+ "+") (number_literal "-0x7810")) () ")"))))) () ")")) (argument_list "(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598)" (( "(") (identifier "iVar5") (, ",") (number_literal "0x163") (, ",") (binary_expression "*(int *)(iVar14 + -0x77f0) + 0x4598" (pointer_expression "*(int *)(iVar14 + -0x77f0)" (* "*") (cast_expression "(int *)(iVar14 + -0x77f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -0x77f0)" (( "(") (binary_expression "iVar14 + -0x77f0" (identifier "iVar14") (+ "+") (number_literal "-0x77f0")) () ")")))) (+ "+") (number_literal "0x4598")) () ")"))) (; ";")) (expression_statement "(**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);" (call_expression "(**(code **)(iVar13 + -0x7e1c))(piVar4,0x40)" (parenthesized_expression "(**(code **)(iVar13 + -0x7e1c))" (( "(") (pointer_expression "**(code **)(iVar13 + -0x7e1c)" (* "*") (pointer_expression "*(code **)(iVar13 + -0x7e1c)" (* "*") (cast_expression "(code **)(iVar13 + -0x7e1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x7e1c)" (( "(") (binary_expression "iVar13 + -0x7e1c" (identifier "iVar13") (+ "+") (number_literal "-0x7e1c")) () ")"))))) () ")")) (argument_list "(piVar4,0x40)" (( "(") (identifier "piVar4") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "pcVar12 = *(code **)(iVar13 + -0x7f78);" (assignment_expression "pcVar12 = *(code **)(iVar13 + -0x7f78)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(iVar13 + -0x7f78)" (* "*") (cast_expression "(code **)(iVar13 + -0x7f78)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar13 + -0x7f78)" (( "(") (binary_expression "iVar13 + -0x7f78" (identifier "iVar13") (+ "+") (number_literal "-0x7f78")) () ")"))))) (; ";")) (expression_statement "(*pcVar12)();" (call_expression "(*pcVar12)()" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar8 = *(undefined4 **)(iVar5 + 0x130);" (assignment_expression "puVar8 = *(undefined4 **)(iVar5 + 0x130)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(iVar5 + 0x130)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x130)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x130)" (( "(") (binary_expression "iVar5 + 0x130" (identifier "iVar5") (+ "+") (number_literal "0x130")) () ")"))))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(puVar8 == *(undefined4 **)(iVar5 + 0x134))" (( "(") (binary_expression "puVar8 == *(undefined4 **)(iVar5 + 0x134)" (identifier "puVar8") (== "==") (pointer_expression "*(undefined4 **)(iVar5 + 0x134)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x134)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x134)" (( "(") (binary_expression "iVar5 + 0x134" (identifier "iVar5") (+ "+") (number_literal "0x134")) () ")"))))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (do_statement "do {\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);" (do "do") (compound_statement "{\n    puVar9 = puVar8 + 1;\n    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);\n    uVar7 = uVar7 + iVar13;\n    puVar8 = puVar9;\n  }" ({ "{") (expression_statement "puVar9 = puVar8 + 1;" (assignment_expression "puVar9 = puVar8 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);" (assignment_expression "iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8)" (identifier "iVar13") (= "=") (call_expression "(**(code **)(pcVar12 + 0x30f478))(*puVar8)" (parenthesized_expression "(**(code **)(pcVar12 + 0x30f478))" (( "(") (pointer_expression "**(code **)(pcVar12 + 0x30f478)" (* "*") (pointer_expression "*(code **)(pcVar12 + 0x30f478)" (* "*") (cast_expression "(code **)(pcVar12 + 0x30f478)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar12 + 0x30f478)" (( "(") (binary_expression "pcVar12 + 0x30f478" (identifier "pcVar12") (+ "+") (number_literal "0x30f478")) () ")"))))) () ")")) (argument_list "(*puVar8)" (( "(") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) () ")")))) (; ";")) (expression_statement "uVar7 = uVar7 + iVar13;" (assignment_expression "uVar7 = uVar7 + iVar13" (identifier "uVar7") (= "=") (binary_expression "uVar7 + iVar13" (identifier "uVar7") (+ "+") (identifier "iVar13"))) (; ";")) (expression_statement "puVar8 = puVar9;" (assignment_expression "puVar8 = puVar9" (identifier "puVar8") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(undefined4 **)(iVar5 + 0x134) != puVar9)" (( "(") (binary_expression "*(undefined4 **)(iVar5 + 0x134) != puVar9" (pointer_expression "*(undefined4 **)(iVar5 + 0x134)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x134)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x134)" (( "(") (binary_expression "iVar5 + 0x134" (identifier "iVar5") (+ "+") (number_literal "0x134")) () ")")))) (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: void create_shdrs(Layout * this, Output_section * shstrtab_section,
   off_t * poff) */

void __thiscall
gold::type_1::function_1(type_1 *this,type_2 *shstrtab_section,type_3 *var_9)

{
  int *piVar1;
  type_4 *puVar2;
  type_5 var_7;
  type_6 *pOVar4;
  int var_3;
  type_4 *puVar6;
  int var_11;
  type_4 uVar8;
  type_7 **pp_Var9;
  type_4 extraout_v1;
  type_8 var_5;
  int var_10;
  type_4 unaff_s1;
  type_4 unaff_s3;
  int *piVar12;
  type_9 var_4;
  type_3 oVar14;
  type_9 var_8;
  int var_2;
  type_4 in_stack_ffffffd4;
  
  var_8 = var_1(unaff_s3,unaff_s1);
  var_2 = 0x4c9240;
  pOVar4 = (type_6 *)(*(type_10 *)PTR_operator_new_004c13a8)(0x40);
                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */
  (**(type_10 **)(var_2 + -0x70cc))
            (pOVar4,this,&this->segment_list_,&this->section_list_,&this->unattached_section_list_,
             &this->namepool_,shstrtab_section);
  piVar12 = *(int **)(var_2 + -0x788c);
  var_3 = (**(type_10 **)(var_2 + -0x70f4))(*piVar12);
  if (var_3 == 0) {
    pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;
    var_3 = *(int *)var_9;
    oVar14 = *var_9;
    var_8 = *var_9;
    if (pp_Var9[3] == *(type_7 **)(var_2 + -0x70c8)) {
      var_4 = (**(type_10 **)(var_2 + -0x70c4))();
    }
    else {
      var_11 = (*pp_Var9[3])(pOVar4);
      var_4 = var_1(var_11,pp_Var9);
    }
    var_5 = (type_8)oVar14 - 1;
    var_11 = var_2;
    if (var_4 == 0) goto LAB_001b298c;
    var_8 = var_4 + var_1((type_8)(var_5 < (type_8)oVar14) + var_3 + -1,var_5);
    var_8 = var_1((type_8)((type_11)var_8 >> 0x20) &
                      -(type_8)(-(int)var_4 != 0) - (int)((type_11)var_4 >> 0x20),
                      (type_8)var_8 & -(int)var_4);
    goto LAB_001b298c;
  }
  pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;
  if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) {
    if (pp_Var9[0xd] == *(type_7 **)(var_2 + -0x70c0)) {
      oVar14 = (**(type_10 **)(var_2 + -0x70bc))(pOVar4);
      var_3 = *(int *)&(pOVar4->super_Output_data).field_0x20;
      var_11 = var_2;
      if (var_3 << 1 < 0) goto LAB_001b2bfc;
      var_10 = *(int *)(var_2 + -0x77f0);
      if (var_3 << 3 < 0) goto LAB_001b2c00;
      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;
      (pOVar4->super_Output_data).data_size_ = oVar14;
      (pOVar4->super_Output_data).field_0x20 = (pOVar4->super_Output_data).field_0x20 & 0xbf | 0x40;
    }
    else {
      (*pp_Var9[0xd])(pOVar4);
      var_11 = var_2;
      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20 << 1) goto LAB_001b2be0;
      pp_Var9 = (pOVar4->super_Output_data)._vptr_Output_data;
    }
  }
  if (pp_Var9[3] == *(type_7 **)(var_2 + -0x70c8)) {
    oVar14 = (**(type_10 **)(var_2 + -0x70c4))();
  }
  else {
    var_3 = (*pp_Var9[3])(pOVar4);
    oVar14 = var_1(var_3,pp_Var9);
  }
  var_8 = Free_list::var_6(&this->free_list_,oVar14,*var_9,var_1(var_2,in_stack_ffffffd4));
  uVar8 = (type_4)var_8;
  var_11 = var_2;
  if ((int)((type_11)var_8 >> 0x20) == -1) goto LAB_001b2c50;
  do {
    puVar6 = (type_4 *)*piVar12;
    if ((puVar6[2] == 0) || ((puVar6[5] & 0x10) == 0)) {
LAB_001b298c:
      if (-1 < *(int *)&(pOVar4->super_Output_data).field_0x20) {
        var_7 = (pOVar4->super_Output_data).field_0x20;
        *(type_4 *)((int)&(pOVar4->super_Output_data).address_ + 4) = 0;
        *(type_4 *)&(pOVar4->super_Output_data).address_ = 0;
        (pOVar4->super_Output_data).field_0x20 = var_7 & 0x7f | 0x80;
        if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 2 < 0) goto LAB_001b2c18;
        (pOVar4->super_Output_data).offset_ = var_8;
        (pOVar4->super_Output_data).field_0x20 = var_7 & 0x5f | 0xa0;
        if ((*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) ||
           ((*(pOVar4->super_Output_data)._vptr_Output_data[0xe])(pOVar4), var_2 = var_11,
           *(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0)) {
          var_8 = var_8 + (pOVar4->super_Output_data).data_size_;
          var_2 = (int)((type_11)var_8 >> 0x20);
          if ((*(int *)var_9 < var_2) || ((*(int *)var_9 == var_2 && ((type_8)*var_9 < (type_8)var_8))))
          {
            *var_9 = var_8;
          }
          this->section_headers_ = pOVar4;
          return;
        }
        goto LAB_001b2c74;
      }
    }
    else {
      piVar1 = (int *)(var_2 + -0x77f0);
      if (*(int *)&(pOVar4->super_Output_data).field_0x20 << 1 < 0) {
        puVar2 = (type_4 *)(var_2 + -0x7228);
        var_2 = var_11;
        (*(type_10 *)*puVar2)(*puVar6,*piVar1 + 0x3560,(int)var_8,
                           (int)(pOVar4->super_Output_data).data_size_ + (int)var_8);
        var_11 = var_2;
        goto LAB_001b298c;
      }
LAB_001b2be0:
      (**(type_10 **)(var_2 + -0x7810))
                (*(int *)(var_2 + -0x7fc4) + 0x3574,0xcf,*(int *)(var_2 + -0x77f0) + 0x47dc);
LAB_001b2bfc:
      var_10 = *(int *)(var_2 + -0x77f0);
LAB_001b2c00:
      (**(type_10 **)(var_2 + -0x7810))(*(int *)(var_2 + -0x7fc4) + 0x3574,0x218,var_10 + 0x45e0);
LAB_001b2c18:
      (**(type_10 **)(var_2 + -0x7810))
                (*(int *)(var_2 + -0x7fc4) + 0x3574,0x14b,*(int *)(var_2 + -0x77f0) + 0x44d4);
    }
    uVar8 = (type_4)var_8;
    (**(type_10 **)(var_2 + -0x7810))
              (*(int *)(var_2 + -0x7fc4) + 0x3574,0x142,*(int *)(var_2 + -0x77f0) + 0x44e4);
    var_8 = var_1((int)((type_11)var_8 >> 0x20),extraout_v1);
LAB_001b2c50:
    var_10 = (int)((type_11)var_8 >> 0x20);
    var_3 = (int)var_8;
    var_8 = var_1(var_10,uVar8);
  } while (var_3 != var_10);
  uVar8 = (**(type_10 **)(var_2 + -0x3610))(*(int *)(var_2 + -0x77f0) + 0x3514);
  var_2 = var_11;
  (**(type_10 **)(var_11 + -0x70e8))(uVar8);
LAB_001b2c74:
  var_3 = *(int *)(var_11 + -0x7fc4) + 0x3574;
  (**(type_10 **)(var_11 + -0x7810))(var_3,0x163,*(int *)(var_11 + -0x77f0) + 0x4598);
                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */
  (**(type_10 **)(var_2 + -0x7e1c))(pOVar4,0x40);
  (**(type_10 **)(var_2 + -0x7f78))(var_3);
  return;
}


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

/* gold::Layout::MASKED(gold::Output_section const*, long long*) */

uint __thiscall gold::Layout::MASKED(Layout *this,Output_section *param_1,longlong *param_2)

{
  int *piVar1;
  byte bVar2;
  longlong lVar3;
  int *piVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 extraout_v1;
  uint uVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  undefined4 unaff_s1;
  undefined4 unaff_s3;
  int iVar10;
  int *piVar11;
  int in_t9;
  code *pcVar12;
  int iVar13;
  int iVar14;
  longlong lVar15;
  undefined8 uVar16;
  longlong lVar17;
  undefined4 in_stack_ffffffd4;
  
  lVar17 = CONCAT44(unaff_s3,unaff_s1);
  iVar13 = in_t9 + 0x3169bc;
  piVar4 = (int *)(**(code **)(in_t9 + 0x30eb24))(0x40);
                    /* try { // try from 001b2900 to 001b2907 has its CatchHandler @ 001b2c90 */
  (**(code **)(iVar13 + -0x70cc))
            (piVar4,this,this + 0x130,this + 0x13c,this + 0x148,this + 8,param_1);
  piVar11 = *(int **)(iVar13 + -0x788c);
  iVar5 = (**(code **)(iVar13 + -0x70f4))(*piVar11);
  if (iVar5 == 0) {
    iVar5 = *(int *)param_2;
    lVar3 = *param_2;
    lVar17 = *param_2;
    if (*(code **)(*piVar4 + 0xc) == *(code **)(iVar13 + -0x70c8)) {
      lVar15 = (**(code **)(iVar13 + -0x70c4))();
    }
    else {
      lVar15 = (**(code **)(*piVar4 + 0xc))(piVar4);
    }
    uVar7 = (uint)lVar3 - 1;
    iVar14 = iVar13;
    if (lVar15 == 0) goto LAB_001b298c;
    lVar17 = lVar15 + CONCAT44((uint)(uVar7 < (uint)lVar3) + iVar5 + -1,uVar7);
    lVar17 = CONCAT44((uint)((ulonglong)lVar17 >> 0x20) &
                      -(uint)(-(int)lVar15 != 0) - (int)((ulonglong)lVar15 >> 0x20),
                      (uint)lVar17 & -(int)lVar15);
    goto LAB_001b298c;
  }
  iVar5 = *piVar4;
  if (-1 < piVar4[8] << 1) {
    if (*(code **)(iVar5 + 0x34) == *(code **)(iVar13 + -0x70c0)) {
      uVar16 = (**(code **)(iVar13 + -0x70bc))(piVar4);
      iVar14 = iVar13;
      if (piVar4[8] << 1 < 0) goto LAB_001b2bfc;
      iVar5 = *(int *)(iVar13 + -0x77f0);
      if (piVar4[8] << 3 < 0) goto LAB_001b2c00;
      iVar5 = *piVar4;
      *(undefined8 *)(piVar4 + 4) = uVar16;
      *(byte *)(piVar4 + 8) = *(byte *)(piVar4 + 8) & 0xbf | 0x40;
    }
    else {
      (**(code **)(iVar5 + 0x34))(piVar4);
      iVar14 = iVar13;
      if (-1 < piVar4[8] << 1) goto LAB_001b2be0;
      iVar5 = *piVar4;
    }
  }
  if (*(code **)(iVar5 + 0xc) == *(code **)(iVar13 + -0x70c8)) {
    lVar17 = (**(code **)(iVar13 + -0x70c4))();
  }
  else {
    lVar17 = (**(code **)(iVar5 + 0xc))(piVar4);
  }
  lVar17 = Free_list::allocate(lVar17,*param_2,CONCAT44(iVar13,in_stack_ffffffd4));
  uVar6 = (undefined4)lVar17;
  iVar14 = iVar13;
  if ((int)((ulonglong)lVar17 >> 0x20) == -1) goto LAB_001b2c50;
  do {
    puVar8 = (undefined4 *)*piVar11;
    if ((puVar8[2] == 0) || ((puVar8[5] & 0x10) == 0)) {
LAB_001b298c:
      if (-1 < piVar4[8]) {
        bVar2 = *(byte *)(piVar4 + 8);
        piVar4[3] = 0;
        piVar4[2] = 0;
        *(byte *)(piVar4 + 8) = bVar2 & 0x7f | 0x80;
        if (piVar4[8] << 2 < 0) goto LAB_001b2c18;
        *(longlong *)(piVar4 + 6) = lVar17;
        *(byte *)(piVar4 + 8) = bVar2 & 0x5f | 0xa0;
        if ((piVar4[8] << 1 < 0) ||
           ((**(code **)(*piVar4 + 0x38))(piVar4), iVar13 = iVar14, piVar4[8] << 1 < 0)) {
          lVar17 = lVar17 + *(longlong *)(piVar4 + 4);
          iVar13 = (int)((ulonglong)lVar17 >> 0x20);
          if ((*(int *)param_2 < iVar13) ||
             ((*(int *)param_2 == iVar13 && ((uint)*param_2 < (uint)lVar17)))) {
            *param_2 = lVar17;
          }
          *(int **)(this + 0x16c) = piVar4;
          return (uint)lVar17;
        }
        goto LAB_001b2c74;
      }
    }
    else {
      piVar1 = (int *)(iVar13 + -0x77f0);
      if (piVar4[8] << 1 < 0) {
        puVar9 = (undefined4 *)(iVar13 + -0x7228);
        iVar13 = iVar14;
        (*(code *)*puVar9)(*puVar8,*piVar1 + 0x3560,(int)lVar17,piVar4[5] + (int)lVar17);
        iVar14 = iVar13;
        goto LAB_001b298c;
      }
LAB_001b2be0:
      (**(code **)(iVar13 + -0x7810))
                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0xcf,*(int *)(iVar13 + -0x77f0) + 0x47dc);
LAB_001b2bfc:
      iVar5 = *(int *)(iVar13 + -0x77f0);
LAB_001b2c00:
      (**(code **)(iVar13 + -0x7810))(*(int *)(iVar13 + -0x7fc4) + 0x3574,0x218,iVar5 + 0x45e0);
LAB_001b2c18:
      (**(code **)(iVar13 + -0x7810))
                (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x14b,*(int *)(iVar13 + -0x77f0) + 0x44d4);
    }
    uVar6 = (undefined4)lVar17;
    (**(code **)(iVar13 + -0x7810))
              (*(int *)(iVar13 + -0x7fc4) + 0x3574,0x142,*(int *)(iVar13 + -0x77f0) + 0x44e4);
    lVar17 = CONCAT44((int)((ulonglong)lVar17 >> 0x20),extraout_v1);
LAB_001b2c50:
    iVar10 = (int)((ulonglong)lVar17 >> 0x20);
    iVar5 = (int)lVar17;
    lVar17 = CONCAT44(iVar10,uVar6);
  } while (iVar5 != iVar10);
  uVar6 = (**(code **)(iVar13 + -0x3610))(*(int *)(iVar13 + -0x77f0) + 0x3514);
  iVar13 = iVar14;
  (**(code **)(iVar14 + -0x70e8))(uVar6);
LAB_001b2c74:
  iVar5 = *(int *)(iVar14 + -0x7fc4) + 0x3574;
  (**(code **)(iVar14 + -0x7810))(iVar5,0x163,*(int *)(iVar14 + -0x77f0) + 0x4598);
                    /* catch() { ... } // from try @ 001b2900 with catch @ 001b2c90 */
  (**(code **)(iVar13 + -0x7e1c))(piVar4,0x40);
  pcVar12 = *(code **)(iVar13 + -0x7f78);
  (*pcVar12)();
  puVar8 = *(undefined4 **)(iVar5 + 0x130);
  uVar7 = 0;
  if (puVar8 == *(undefined4 **)(iVar5 + 0x134)) {
    return 0;
  }
  do {
    puVar9 = puVar8 + 1;
    iVar13 = (**(code **)(pcVar12 + 0x30f478))(*puVar8);
    uVar7 = uVar7 + iVar13;
    puVar8 = puVar9;
  } while (*(undefined4 **)(iVar5 + 0x134) != puVar9);
  return uVar7;
}

