
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void set_offset(Output_segment * this, uint increase) */

void __thiscall gold::Output_segment::set_offset(Output_segment *this,uint increase)

{
  Elf_Word EVar1;
  Output_data *pOVar2;
  Output_data *pOVar3;
  long lVar4;
  bool bVar5;
  int iVar6;
  undefined4 extraout_var;
  uint64_t uVar7;
  ulong uVar8;
  undefined4 extraout_var_00;
  Output_data **ppOVar9;
  Output_data *pOVar10;
  pointer ppOVar11;
  uint64_t uVar12;
  Output_data *pOVar13;
  Output_data *last_data;
  Output_data *last_bss;
  
  if (this->type_ == 1) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.cc",0x1255,"set_offset");
  }
  if ((this->field_0x2f8 & 2) != 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.cc",0x1257,"set_offset");
  }
  ppOVar11 = this->output_lists_[0].
             super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
             _M_start;
  if (ppOVar11 ==
      this->output_lists_[0].
      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish)
  {
    if (increase == 0) {
      this->vaddr_ = 0;
      this->paddr_ = 0;
      this->field_0x2f8 = this->field_0x2f8 | 2;
      this->memsz_ = 0;
      this->min_p_align_ = 0;
      this->offset_ = 0;
      this->filesz_ = 0;
      return;
    }
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.cc",0x125f,"set_offset");
  }
  last_data = (Output_data *)0x0;
  last_bss = (Output_data *)0x0;
  pOVar10 = (Output_data *)0x0;
LAB_001c2eb7:
  do {
    pOVar3 = *ppOVar11;
    pOVar13 = pOVar3;
    if (pOVar10 != (Output_data *)0x0) {
      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;
      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;
      if ((pOVar10->address_ <= pOVar3->address_) &&
         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {
        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;
        if (pOVar3->data_size_ < pOVar10->data_size_) {
          pOVar13 = pOVar3;
        }
      }
    }
    iVar6 = (*pOVar3->_vptr_Output_data[6])();
    ppOVar9 = &last_data;
    if (((char)iVar6 != '\0') &&
       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,
       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)) {
      ppOVar9 = &last_bss;
    }
    pOVar3 = *ppOVar9;
    pOVar2 = *ppOVar11;
    pOVar10 = pOVar13;
    if (pOVar3 != (Output_data *)0x0) {
      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;
      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;
      if (pOVar2->address_ <= pOVar3->address_) {
        if (pOVar2->address_ == pOVar3->address_) {
          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;
          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;
        }
        ppOVar11 = ppOVar11 + 1;
        if (this->output_lists_[0].
            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
            _M_finish == ppOVar11) break;
        goto LAB_001c2eb7;
      }
    }
LAB_001c2f10:
    *ppOVar9 = pOVar2;
    ppOVar11 = ppOVar11 + 1;
  } while (this->output_lists_[0].
           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
           _M_finish != ppOVar11);
  if ((pOVar13->field_0x20 & 1) == 0) goto LAB_001c3220;
  this->vaddr_ = pOVar13->address_;
  iVar6 = (*pOVar13->_vptr_Output_data[4])(pOVar13);
  if ((char)iVar6 == '\0') {
    uVar7 = this->vaddr_;
  }
  else if (pOVar13->_vptr_Output_data[5] == Output_section::do_load_address) {
    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");
    }
    uVar7 = pOVar13[1].offset_;
  }
  else {
    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);
    uVar7 = CONCAT44(extraout_var_00,iVar6);
  }
  this->paddr_ = uVar7;
  this->field_0x2f8 = this->field_0x2f8 | 2;
  if ((pOVar13->field_0x20 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xe3,"offset");
  }
  this->offset_ = pOVar13->offset_;
  if (last_data == (Output_data *)0x0) {
    this->filesz_ = 0;
LAB_001c2fb9:
    if ((last_bss->field_0x20 & 1) == 0) {
LAB_001c3220:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.h",0xc5,"address");
    }
    uVar7 = last_bss->address_;
    pOVar10 = last_bss;
    if ((last_bss->field_0x20 & 2) == 0) {
LAB_001c3238:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
    }
  }
  else {
    if ((last_data->field_0x20 & 1) == 0) goto LAB_001c3220;
    uVar7 = last_data->address_;
    if ((last_data->field_0x20 & 2) == 0) goto LAB_001c3238;
    this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_;
    pOVar10 = last_data;
    if (last_bss != (Output_data *)0x0) goto LAB_001c2fb9;
  }
  lVar4 = pOVar10->data_size_;
  this->filesz_ = this->filesz_ + (ulong)increase;
  uVar7 = uVar7 + ((ulong)increase - this->vaddr_) + lVar4;
  EVar1 = this->type_;
  this->memsz_ = uVar7;
  if (EVar1 != 0x6474e552) goto joined_r0x001c3142;
  if (parameters->target_ == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x69,"target");
  }
  if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    Target::abi_pagesize((Target *)parameters);
  }
  uVar12 = (parameters->options_->max_page_size_).value;
  uVar8 = this->vaddr_ + uVar7;
  if (uVar12 == 0) {
    uVar12 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28);
    bVar5 = Parameters::incremental_update(parameters);
    if (bVar5) {
      if (uVar12 != 0) goto LAB_001c3210;
      goto LAB_001c31b2;
    }
    if (uVar12 != 0) goto LAB_001c3125;
  }
  else {
    bVar5 = Parameters::incremental_update(parameters);
    if (bVar5) {
LAB_001c3210:
      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;
LAB_001c31b2:
      EVar1 = this->type_;
      this->memsz_ = uVar8 - this->vaddr_;
      goto joined_r0x001c3142;
    }
LAB_001c3125:
    if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");
    }
  }
  EVar1 = this->type_;
joined_r0x001c3142:
  if (EVar1 != 7) {
    return;
  }
  uVar7 = maximum_alignment(this);
  if (uVar7 == 0) {
    uVar8 = this->memsz_;
  }
  else {
    if (this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");
    }
    uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7;
  }
  this->memsz_ = uVar8;
  return;
}



void FUN_001c2df0(long *param_1,uint param_2)

{
  int iVar1;
  char cVar2;
  long lVar3;
  long lVar4;
  ulong uVar5;
  long *plVar6;
  long *plVar7;
  undefined8 *puVar8;
  long *plVar9;
  long *plVar10;
  long local_48;
  long local_40 [2];
  
  if ((int)param_1[0x5e] == 1) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");
  }
  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");
  }
  plVar7 = (long *)*param_1;
  if (plVar7 == (long *)param_1[1]) {
    if (param_2 == 0) {
      param_1[0x57] = 0;
      param_1[0x58] = 0;
      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;
      param_1[0x59] = 0;
      param_1[0x5b] = 0;
      param_1[0x5c] = 0;
      param_1[0x5d] = 0;
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");
  }
  local_48 = 0;
  local_40[0] = 0;
  plVar10 = (long *)0x0;
LAB_001c2eb7:
  do {
    plVar6 = (long *)*plVar7;
    plVar9 = plVar6;
    if (plVar10 != (long *)0x0) {
      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;
      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;
      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {
        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))
        goto LAB_001c3238;
        if (plVar6[2] < plVar10[2]) {
          plVar9 = plVar6;
        }
      }
    }
    cVar2 = (**(code **)(*plVar6 + 0x30))();
    plVar6 = &local_48;
    if ((cVar2 != '\0') &&
       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,
       *(int *)(lVar3 + 0x6c) == 8)) {
      plVar6 = local_40;
    }
    lVar3 = *plVar6;
    lVar4 = *plVar7;
    plVar10 = plVar9;
    if (lVar3 != 0) {
      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;
      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;
      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {
        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {
          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))
          goto LAB_001c3238;
          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;
        }
        plVar7 = plVar7 + 1;
        if ((long *)param_1[1] == plVar7) break;
        goto LAB_001c2eb7;
      }
    }
LAB_001c2f10:
    *plVar6 = lVar4;
    plVar7 = plVar7 + 1;
  } while ((long *)param_1[1] != plVar7);
  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;
  param_1[0x57] = plVar9[1];
  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);
  if (cVar2 == '\0') {
    lVar3 = param_1[0x57];
  }
  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {
    if (-1 < (char)plVar9[0x19]) {
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");
    }
    lVar3 = plVar9[8];
  }
  else {
    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);
  }
  param_1[0x58] = lVar3;
  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;
  if ((*(byte *)(plVar9 + 4) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");
  }
  param_1[0x5c] = plVar9[3];
  if (local_48 == 0) {
    param_1[0x5d] = 0;
LAB_001c2fb9:
    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {
LAB_001c3220:
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.h",0xc5,"address");
    }
    lVar3 = *(long *)(local_40[0] + 8);
    lVar4 = local_40[0];
    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {
LAB_001c3238:
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");
    }
  }
  else {
    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;
    lVar3 = *(long *)(local_48 + 8);
    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;
    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];
    lVar4 = local_48;
    if (local_40[0] != 0) goto LAB_001c2fb9;
  }
  lVar4 = *(long *)(lVar4 + 0x10);
  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;
  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;
  iVar1 = (int)param_1[0x5e];
  param_1[0x59] = lVar4;
  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;
  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");
  }
  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {
    plVar7 = (long *)PTR_DAT_003be6b0;
    FUN_001bf730();
    if ((int)plVar7[0x5e] == 7) {
      puVar8 = (undefined8 *)*plVar7;
      if (puVar8 != (undefined8 *)plVar7[1]) {
        do {
          plVar10 = (long *)*puVar8;
          puVar8 = puVar8 + 1;
          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);
        } while ((undefined8 *)plVar7[1] != puVar8);
      }
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");
  }
  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);
  uVar5 = param_1[0x57] + lVar4;
  if (lVar3 == 0) {
    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);
    cVar2 = FUN_001ee080();
    if (cVar2 != '\0') {
      if (lVar3 != 0) goto LAB_001c3210;
      goto LAB_001c31b2;
    }
    if (lVar3 != 0) goto LAB_001c3125;
  }
  else {
    cVar2 = FUN_001ee080();
    if (cVar2 != '\0') {
LAB_001c3210:
      uVar5 = lVar3 + -1 + uVar5 & -lVar3;
LAB_001c31b2:
      iVar1 = (int)param_1[0x5e];
      param_1[0x59] = uVar5 - param_1[0x57];
      goto joined_r0x001c3142;
    }
LAB_001c3125:
    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");
    }
  }
  iVar1 = (int)param_1[0x5e];
joined_r0x001c3142:
  if (iVar1 != 7) {
    return;
  }
  lVar3 = FUN_001c2530(param_1);
  if (lVar3 == 0) {
    uVar5 = param_1[0x59];
  }
  else {
    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");
    }
    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;
  }
  param_1[0x59] = uVar5;
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
CMP dword ptr [RDI + 0x2f0],0x1
JZ 0x001c32c8
MOVZX EAX,byte ptr [RDI + 0x2f8]
MOV RBP,RDI
TEST AL,0x2
JNZ 0x001c3250
MOV R13D,ESI
MOV RBX,qword ptr [RDI]
CMP RBX,qword ptr [RDI + 0x8]
JZ 0x001c3080
MOV qword ptr [RSP],0x0
XOR R15D,R15D
LEA R14,[RSP + 0x8]
MOV R12,RSP
MOV qword ptr [RSP + 0x8],0x0
JMP 0x001c2eb7
JZ 0x001c3030
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x30]
TEST AL,AL
JZ 0x001c2e73
MOV RDI,qword ptr [RBX]
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
CMP dword ptr [RAX + 0x6c],0x8
JZ 0x001c3020
MOV RCX,R12
MOV RAX,qword ptr [RCX]
MOV RDX,qword ptr [RBX]
TEST RAX,RAX
JZ 0x001c2f10
MOVZX EDI,byte ptr [RDX + 0x20]
TEST DIL,0x1
JZ 0x001c3220
MOVZX ESI,byte ptr [RAX + 0x20]
MOV R8,qword ptr [RDX + 0x8]
TEST SIL,0x1
JZ 0x001c3220
CMP R8,qword ptr [RAX + 0x8]
JA 0x001c2f10
JZ 0x001c2ef0
ADD RBX,0x8
CMP qword ptr [RBP + 0x8],RBX
JZ 0x001c2f1d
MOV RDI,qword ptr [RBX]
TEST R15,R15
JZ 0x001c2ee7
MOVZX EAX,byte ptr [RDI + 0x20]
TEST AL,0x1
JZ 0x001c3220
MOVZX EDX,byte ptr [R15 + 0x20]
MOV RCX,qword ptr [RDI + 0x8]
TEST DL,0x1
JZ 0x001c3220
CMP qword ptr [R15 + 0x8],RCX
JBE 0x001c2e50
MOV R15,RDI
JMP 0x001c2e56
AND EDI,0x2
JZ 0x001c3238
AND ESI,0x2
MOV RDI,qword ptr [RDX + 0x10]
JZ 0x001c3238
CMP RDI,qword ptr [RAX + 0x10]
JLE 0x001c2ead
NOP dword ptr [RAX]
MOV qword ptr [RCX],RDX
ADD RBX,0x8
CMP qword ptr [RBP + 0x8],RBX
JNZ 0x001c2eb7
TEST byte ptr [R15 + 0x20],0x1
JZ 0x001c3220
MOV RAX,qword ptr [R15 + 0x8]
MOV RDI,R15
MOV qword ptr [RBP + 0x2b8],RAX
MOV RAX,qword ptr [R15]
CALL qword ptr [RAX + 0x20]
TEST AL,AL
JNZ 0x001c3052
MOV RAX,qword ptr [RBP + 0x2b8]
MOV qword ptr [RBP + 0x2c0],RAX
OR byte ptr [RBP + 0x2f8],0x2
TEST byte ptr [R15 + 0x20],0x4
JZ 0x001c32e0
MOV RAX,qword ptr [R15 + 0x18]
MOV RCX,qword ptr [RSP]
MOV qword ptr [RBP + 0x2e0],RAX
TEST RCX,RCX
JZ 0x001c31ce
MOVZX EDX,byte ptr [RCX + 0x20]
TEST DL,0x1
JZ 0x001c3220
AND EDX,0x2
MOV RAX,qword ptr [RCX + 0x8]
JZ 0x001c3238
MOV RDX,qword ptr [RCX + 0x10]
ADD RDX,RAX
SUB RDX,qword ptr [RBP + 0x2b8]
MOV qword ptr [RBP + 0x2e8],RDX
MOV RDX,qword ptr [RSP + 0x8]
TEST RDX,RDX
JZ 0x001c31e3
MOVZX ECX,byte ptr [RDX + 0x20]
TEST CL,0x1
JZ 0x001c3220
AND ECX,0x2
MOV RAX,qword ptr [RDX + 0x8]
JZ 0x001c3238
MOV RCX,qword ptr [RBP + 0x2b8]
MOV RDX,qword ptr [RDX + 0x10]
ADD qword ptr [RBP + 0x2e8],R13
SUB R13,RCX
ADD RAX,R13
ADD RAX,RDX
MOV EDX,dword ptr [RBP + 0x2f0]
MOV qword ptr [RBP + 0x2c8],RAX
CMP EDX,0x6474e552
JZ 0x001c30e3
CMP EDX,0x7
JZ 0x001c3148
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RCX,R14
JMP 0x001c2e76
TEST AL,0x2
JZ 0x001c3238
AND EDX,0x2
MOV RAX,qword ptr [RDI + 0x10]
JZ 0x001c3238
CMP RAX,qword ptr [R15 + 0x10]
CMOVL R15,RDI
JMP 0x001c2e56
MOV RAX,qword ptr [R15]
LEA RDX,[0x1926f0]
MOV RAX,qword ptr [RAX + 0x28]
CMP RAX,RDX
JNZ 0x001c31eb
CMP byte ptr [R15 + 0xc8],0x0
JNS 0x001c3298
MOV RAX,qword ptr [R15 + 0x40]
JMP 0x001c2f4b
TEST R13D,R13D
JNZ 0x001c32b0
MOV qword ptr [RDI + 0x2b8],0x0
OR EAX,0x2
MOV qword ptr [RDI + 0x2c0],0x0
MOV byte ptr [RDI + 0x2f8],AL
MOV qword ptr [RDI + 0x2c8],0x0
MOV qword ptr [RDI + 0x2d8],0x0
MOV qword ptr [RDI + 0x2e0],0x0
MOV qword ptr [RDI + 0x2e8],0x0
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [0x003be6b0]
MOV RSI,qword ptr [RDI + 0x18]
TEST RSI,RSI
JZ 0x001c32f8
MOV RDX,qword ptr [RDI + 0x10]
TEST RDX,RDX
JZ 0x001c3310
MOV R12,qword ptr [RDX + 0x84e8]
LEA RBX,[RCX + RAX*0x1]
TEST R12,R12
JZ 0x001c319c
CALL 0x001ee080
TEST AL,AL
JNZ 0x001c3210
LEA RAX,[R12 + RBX*0x1 + -0x1]
NEG R12
AND R12,RAX
CMP R12,RBX
JNZ 0x001c3280
MOV EDX,dword ptr [RBP + 0x2f0]
CMP EDX,0x7
JNZ 0x001c3010
MOV RDI,RBP
CALL 0x001c2530
TEST RAX,RAX
JZ 0x001c31f5
MOV RSI,qword ptr [RBP + 0x2b8]
MOV RCX,RAX
NEG RCX
LEA RDX,[RSI + RAX*0x1 + -0x1]
AND RDX,RCX
CMP RSI,RDX
JNZ 0x001c3268
MOV RDX,qword ptr [RBP + 0x2c8]
LEA RAX,[RAX + RDX*0x1 + -0x1]
AND RAX,RCX
MOV qword ptr [RBP + 0x2c8],RAX
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [RSI + 0x8]
MOV R12,qword ptr [RAX + 0x28]
CALL 0x001ee080
TEST AL,AL
JZ 0x001c31fe
TEST R12,R12
JNZ 0x001c3210
MOV RAX,RBX
SUB RAX,qword ptr [RBP + 0x2b8]
MOV EDX,dword ptr [RBP + 0x2f0]
MOV qword ptr [RBP + 0x2c8],RAX
JMP 0x001c3007
MOV qword ptr [RBP + 0x2e8],0x0
MOV RDX,qword ptr [RSP + 0x8]
JMP 0x001c2fb9
MOV RDX,RCX
JMP 0x001c2fd3
MOV RDI,R15
CALL RAX
JMP 0x001c2f4b
MOV RAX,qword ptr [RBP + 0x2c8]
JMP 0x001c3186
TEST R12,R12
JZ 0x001c3139
JMP 0x001c3125
LEA RAX,[R12 + RBX*0x1 + -0x1]
NEG R12
AND RAX,R12
MOV RBX,RAX
JMP 0x001c31b2
LEA RDX,[0x319f28]
MOV ESI,0xc5
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x319f70]
MOV ESI,0xcf
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x319630]
MOV ESI,0x1257
LEA RDI,[0x31856f]
CALL 0x0016cdf0
LEA RDX,[0x319630]
MOV ESI,0x12b1
LEA RDI,[0x31856f]
CALL 0x0016cdf0
LEA RDX,[0x319630]
MOV ESI,0x12a8
LEA RDI,[0x31856f]
CALL 0x0016cdf0
LEA RDX,[0x319620]
MOV ESI,0x107b
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x319630]
MOV ESI,0x125f
LEA RDI,[0x31856f]
CALL 0x0016cdf0
LEA RDX,[0x319630]
MOV ESI,0x1255
LEA RDI,[0x31856f]
CALL 0x0016cdf0
LEA RDX,[0x319eef]
MOV ESI,0xe3
LEA RDI,[0x30e9f4]
CALL 0x0016cdf0
LEA RDX,[0x319fdb]
MOV ESI,0x69
LEA RDI,[0x30dc70]
CALL 0x0016cdf0
CALL 0x001bf730
NOP
NOP word ptr CS:[RAX + RAX*0x1]
(translation_unit "void FUN_001c2df0(long *param_1,uint param_2)\n\n{\n  int iVar1;\n  char cVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 *puVar8;\n  long *plVar9;\n  long *plVar10;\n  long local_48;\n  long local_40 [2];\n  \n  if ((int)param_1[0x5e] == 1) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }\n  plVar7 = (long *)*param_1;\n  if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }\n  local_48 = 0;\n  local_40[0] = 0;\n  plVar10 = (long *)0x0;\nLAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);\n  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;\n  param_1[0x57] = plVar9[1];\n  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);\n  if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }\n  param_1[0x58] = lVar3;\n  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n  if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  param_1[0x5c] = plVar9[3];\n  if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }\n  lVar4 = *(long *)(lVar4 + 0x10);\n  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;\n  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;\n  iVar1 = (int)param_1[0x5e];\n  param_1[0x59] = lVar4;\n  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }\n  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);\n  uVar5 = param_1[0x57] + lVar4;\n  if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  iVar1 = (int)param_1[0x5e];\njoined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }\n  lVar3 = FUN_001c2530(param_1);\n  if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }\n  param_1[0x59] = uVar5;\n  return;\n}\n\n" (function_definition "void FUN_001c2df0(long *param_1,uint param_2)\n\n{\n  int iVar1;\n  char cVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 *puVar8;\n  long *plVar9;\n  long *plVar10;\n  long local_48;\n  long local_40 [2];\n  \n  if ((int)param_1[0x5e] == 1) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }\n  plVar7 = (long *)*param_1;\n  if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }\n  local_48 = 0;\n  local_40[0] = 0;\n  plVar10 = (long *)0x0;\nLAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);\n  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;\n  param_1[0x57] = plVar9[1];\n  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);\n  if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }\n  param_1[0x58] = lVar3;\n  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n  if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  param_1[0x5c] = plVar9[3];\n  if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }\n  lVar4 = *(long *)(lVar4 + 0x10);\n  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;\n  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;\n  iVar1 = (int)param_1[0x5e];\n  param_1[0x59] = lVar4;\n  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }\n  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);\n  uVar5 = param_1[0x57] + lVar4;\n  if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  iVar1 = (int)param_1[0x5e];\njoined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }\n  lVar3 = FUN_001c2530(param_1);\n  if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }\n  param_1[0x59] = uVar5;\n  return;\n}" primitive_type (function_declarator "FUN_001c2df0(long *param_1,uint param_2)" identifier (parameter_list "(long *param_1,uint param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 *puVar8;\n  long *plVar9;\n  long *plVar10;\n  long local_48;\n  long local_40 [2];\n  \n  if ((int)param_1[0x5e] == 1) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }\n  plVar7 = (long *)*param_1;\n  if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }\n  local_48 = 0;\n  local_40[0] = 0;\n  plVar10 = (long *)0x0;\nLAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);\n  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;\n  param_1[0x57] = plVar9[1];\n  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);\n  if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }\n  param_1[0x58] = lVar3;\n  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n  if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  param_1[0x5c] = plVar9[3];\n  if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }\n  lVar4 = *(long *)(lVar4 + 0x10);\n  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;\n  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;\n  iVar1 = (int)param_1[0x5e];\n  param_1[0x59] = lVar4;\n  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }\n  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);\n  uVar5 = param_1[0x57] + lVar4;\n  if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  iVar1 = (int)param_1[0x5e];\njoined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }\n  lVar3 = FUN_001c2530(param_1);\n  if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }\n  param_1[0x59] = uVar5;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (if_statement "if ((int)param_1[0x5e] == 1) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }" if (parenthesized_expression "((int)param_1[0x5e] == 1)" ( (binary_expression "(int)param_1[0x5e] == 1" (cast_expression "(int)param_1[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x5e]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x1255,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x5f) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x5f) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x5f) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x5f) & 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x1257,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "plVar7 = (long *)*param_1;" (assignment_expression "plVar7 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }" if (parenthesized_expression "(plVar7 == (long *)param_1[1])" ( (binary_expression "plVar7 == (long *)param_1[1]" identifier == (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }" { (if_statement "if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }" { (expression_statement "param_1[0x57] = 0;" (assignment_expression "param_1[0x57] = 0" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x58] = 0;" (assignment_expression "param_1[0x58] = 0" (subscript_expression "param_1[0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;" (assignment_expression "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "param_1[0x59] = 0;" (assignment_expression "param_1[0x59] = 0" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5b] = 0;" (assignment_expression "param_1[0x5b] = 0" (subscript_expression "param_1[0x5b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5c] = 0;" (assignment_expression "param_1[0x5c] = 0" (subscript_expression "param_1[0x5c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x125f,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_40[0] = 0;" (assignment_expression "local_40[0] = 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar10 = (long *)0x0;" (assignment_expression "plVar10 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);" statement_identifier : (do_statement "do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);" do (compound_statement "{\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  }" { (expression_statement "plVar6 = (long *)*plVar7;" (assignment_expression "plVar6 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (expression_statement "plVar9 = plVar6;" (assignment_expression "plVar9 = plVar6" identifier = identifier) ;) (if_statement "if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }" { (if_statement "if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(plVar6 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(plVar6 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar6 + 4) & 1)" ( (binary_expression "*(byte *)(plVar6 + 4) & 1" (pointer_expression "*(byte *)(plVar6 + 4)" * (cast_expression "(byte *)(plVar6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar6 + 4)" ( (binary_expression "plVar6 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(plVar10 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(plVar10 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar10 + 4) & 1)" ( (binary_expression "*(byte *)(plVar10 + 4) & 1" (pointer_expression "*(byte *)(plVar10 + 4)" * (cast_expression "(byte *)(plVar10 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 4)" ( (binary_expression "plVar10 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }" if (parenthesized_expression "(((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1]))" ( (binary_expression "((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])" (parenthesized_expression "((ulong)plVar10[1] <= (ulong)plVar6[1])" ( (binary_expression "(ulong)plVar10[1] <= (ulong)plVar6[1]" (cast_expression "(ulong)plVar10[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar10[1]" identifier [ number_literal ])) <= (cast_expression "(ulong)plVar6[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar6[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(plVar9 = plVar10, plVar10[1] == plVar6[1])" ( (comma_expression "plVar9 = plVar10, plVar10[1] == plVar6[1]" (assignment_expression "plVar9 = plVar10" identifier = identifier) , (binary_expression "plVar10[1] == plVar6[1]" (subscript_expression "plVar10[1]" identifier [ number_literal ]) == (subscript_expression "plVar6[1]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }" { (if_statement "if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;" if (parenthesized_expression "(((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))" ( (binary_expression "((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0)" (parenthesized_expression "((*(byte *)(plVar6 + 4) & 2) == 0)" ( (binary_expression "(*(byte *)(plVar6 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar6 + 4) & 2)" ( (binary_expression "*(byte *)(plVar6 + 4) & 2" (pointer_expression "*(byte *)(plVar6 + 4)" * (cast_expression "(byte *)(plVar6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar6 + 4)" ( (binary_expression "plVar6 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(plVar10 + 4) & 2) == 0)" ( (binary_expression "(*(byte *)(plVar10 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar10 + 4) & 2)" ( (binary_expression "*(byte *)(plVar10 + 4) & 2" (pointer_expression "*(byte *)(plVar10 + 4)" * (cast_expression "(byte *)(plVar10 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 4)" ( (binary_expression "plVar10 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (if_statement "if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }" if (parenthesized_expression "(plVar6[2] < plVar10[2])" ( (binary_expression "plVar6[2] < plVar10[2]" (subscript_expression "plVar6[2]" identifier [ number_literal ]) < (subscript_expression "plVar10[2]" identifier [ number_literal ])) )) (compound_statement "{\n          plVar9 = plVar6;\n        }" { (expression_statement "plVar9 = plVar6;" (assignment_expression "plVar9 = plVar6" identifier = identifier) ;) })) })) })) (expression_statement "cVar2 = (**(code **)(*plVar6 + 0x30))();" (assignment_expression "cVar2 = (**(code **)(*plVar6 + 0x30))()" identifier = (call_expression "(**(code **)(*plVar6 + 0x30))()" (parenthesized_expression "(**(code **)(*plVar6 + 0x30))" ( (pointer_expression "**(code **)(*plVar6 + 0x30)" * (pointer_expression "*(code **)(*plVar6 + 0x30)" * (cast_expression "(code **)(*plVar6 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x30)" ( (binary_expression "*plVar6 + 0x30" (pointer_expression "*plVar6" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "plVar6 = &local_48;" (assignment_expression "plVar6 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }" if (parenthesized_expression "((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8))" ( (binary_expression "(cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)" (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)" ( (comma_expression "lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8" (assignment_expression "lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))()" identifier = (call_expression "(**(code **)(*(long *)*plVar7 + 0x48))()" (parenthesized_expression "(**(code **)(*(long *)*plVar7 + 0x48))" ( (pointer_expression "**(code **)(*(long *)*plVar7 + 0x48)" * (pointer_expression "*(code **)(*(long *)*plVar7 + 0x48)" * (cast_expression "(code **)(*(long *)*plVar7 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)*plVar7 + 0x48)" ( (binary_expression "*(long *)*plVar7 + 0x48" (pointer_expression "*(long *)*plVar7" * (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) + number_literal) ))))) )) (argument_list "()" ( )))) , (comma_expression "plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8" (assignment_expression "plVar6 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) , (binary_expression "*(int *)(lVar3 + 0x6c) == 8" (pointer_expression "*(int *)(lVar3 + 0x6c)" * (cast_expression "(int *)(lVar3 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x6c)" ( (binary_expression "lVar3 + 0x6c" identifier + number_literal) )))) == number_literal))) ))) )) (compound_statement "{\n      plVar6 = local_40;\n    }" { (expression_statement "plVar6 = local_40;" (assignment_expression "plVar6 = local_40" identifier = identifier) ;) })) (expression_statement "lVar3 = *plVar6;" (assignment_expression "lVar3 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar4 = *plVar7;" (assignment_expression "lVar4 = *plVar7" identifier = (pointer_expression "*plVar7" * identifier)) ;) (expression_statement "plVar10 = plVar9;" (assignment_expression "plVar10 = plVar9" identifier = identifier) ;) (if_statement "if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }" { (if_statement "if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(lVar4 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(lVar4 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar4 + 0x20) & 1" (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar3 + 0x20) & 1" (pointer_expression "*(byte *)(lVar3 + 0x20)" * (cast_expression "(byte *)(lVar3 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }" if (parenthesized_expression "(*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8))" ( (binary_expression "*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)" (pointer_expression "*(ulong *)(lVar4 + 8)" * (cast_expression "(ulong *)(lVar4 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(lVar3 + 8)" * (cast_expression "(ulong *)(lVar3 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }" { (if_statement "if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }" if (parenthesized_expression "(*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8))" ( (binary_expression "*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)" (pointer_expression "*(ulong *)(lVar4 + 8)" * (cast_expression "(ulong *)(lVar4 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) == (pointer_expression "*(ulong *)(lVar3 + 8)" * (cast_expression "(ulong *)(lVar3 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }" { (if_statement "if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;" if (parenthesized_expression "(((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))" ( (binary_expression "((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0)" (parenthesized_expression "((*(byte *)(lVar4 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(lVar4 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 2)" ( (binary_expression "*(byte *)(lVar4 + 0x20) & 2" (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 2)" ( (binary_expression "*(byte *)(lVar3 + 0x20) & 2" (pointer_expression "*(byte *)(lVar3 + 0x20)" * (cast_expression "(byte *)(lVar3 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (if_statement "if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;" if (parenthesized_expression "(*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10))" ( (binary_expression "*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)" (pointer_expression "*(long *)(lVar3 + 0x10)" * (cast_expression "(long *)(lVar3 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) )))) < (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) )) (goto_statement "goto LAB_001c2f10;" goto statement_identifier ;)) })) (expression_statement "plVar7 = plVar7 + 1;" (assignment_expression "plVar7 = plVar7 + 1" identifier = (binary_expression "plVar7 + 1" identifier + number_literal)) ;) (if_statement "if ((long *)param_1[1] == plVar7) break;" if (parenthesized_expression "((long *)param_1[1] == plVar7)" ( (binary_expression "(long *)param_1[1] == plVar7" (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_001c2eb7;" goto statement_identifier ;) })) })) (labeled_statement "LAB_001c2f10:\n    *plVar6 = lVar4;" statement_identifier : (expression_statement "*plVar6 = lVar4;" (assignment_expression "*plVar6 = lVar4" (pointer_expression "*plVar6" * identifier) = identifier) ;)) (expression_statement "plVar7 = plVar7 + 1;" (assignment_expression "plVar7 = plVar7 + 1" identifier = (binary_expression "plVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((long *)param_1[1] != plVar7)" ( (binary_expression "(long *)param_1[1] != plVar7" (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) != identifier) )) ;)) (if_statement "if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(plVar9 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(plVar9 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar9 + 4) & 1)" ( (binary_expression "*(byte *)(plVar9 + 4) & 1" (pointer_expression "*(byte *)(plVar9 + 4)" * (cast_expression "(byte *)(plVar9 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9 + 4)" ( (binary_expression "plVar9 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (expression_statement "param_1[0x57] = plVar9[1];" (assignment_expression "param_1[0x57] = plVar9[1]" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) (expression_statement "cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);" (assignment_expression "cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9)" identifier = (call_expression "(**(code **)(*plVar9 + 0x20))(plVar9)" (parenthesized_expression "(**(code **)(*plVar9 + 0x20))" ( (pointer_expression "**(code **)(*plVar9 + 0x20)" * (pointer_expression "*(code **)(*plVar9 + 0x20)" * (cast_expression "(code **)(*plVar9 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar9 + 0x20)" ( (binary_expression "*plVar9 + 0x20" (pointer_expression "*plVar9" * identifier) + number_literal) ))))) )) (argument_list "(plVar9)" ( identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar3 = param_1[0x57];\n  }" { (expression_statement "lVar3 = param_1[0x57];" (assignment_expression "lVar3 = param_1[0x57]" identifier = (subscript_expression "param_1[0x57]" identifier [ number_literal ])) ;) }) (else_clause "else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" else (if_statement "if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" if (parenthesized_expression "(*(code **)(*plVar9 + 0x28) == FUN_001926f0)" ( (binary_expression "*(code **)(*plVar9 + 0x28) == FUN_001926f0" (pointer_expression "*(code **)(*plVar9 + 0x28)" * (cast_expression "(code **)(*plVar9 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar9 + 0x28)" ( (binary_expression "*plVar9 + 0x28" (pointer_expression "*plVar9" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    if (-1 < (char)plVar9[0x19]) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }" { (if_statement "if (-1 < (char)plVar9[0x19]) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }" if (parenthesized_expression "(-1 < (char)plVar9[0x19])" ( (binary_expression "-1 < (char)plVar9[0x19]" number_literal < (cast_expression "(char)plVar9[0x19]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "plVar9[0x19]" identifier [ number_literal ]))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "lVar3 = plVar9[8];" (assignment_expression "lVar3 = plVar9[8]" identifier = (subscript_expression "plVar9[8]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" else (compound_statement "{\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" { (expression_statement "lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);" (assignment_expression "lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9)" identifier = (call_expression "(**(code **)(*plVar9 + 0x28))(plVar9)" (parenthesized_expression "(**(code **)(*plVar9 + 0x28))" ( (pointer_expression "**(code **)(*plVar9 + 0x28)" * (pointer_expression "*(code **)(*plVar9 + 0x28)" * (cast_expression "(code **)(*plVar9 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar9 + 0x28)" ( (binary_expression "*plVar9 + 0x28" (pointer_expression "*plVar9" * identifier) + number_literal) ))))) )) (argument_list "(plVar9)" ( identifier )))) ;) }))))) (expression_statement "param_1[0x58] = lVar3;" (assignment_expression "param_1[0x58] = lVar3" (subscript_expression "param_1[0x58]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;" (assignment_expression "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((*(byte *)(plVar9 + 4) & 4) == 0)" ( (binary_expression "(*(byte *)(plVar9 + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(plVar9 + 4) & 4)" ( (binary_expression "*(byte *)(plVar9 + 4) & 4" (pointer_expression "*(byte *)(plVar9 + 4)" * (cast_expression "(byte *)(plVar9 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9 + 4)" ( (binary_expression "plVar9 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "param_1[0x5c] = plVar9[3];" (assignment_expression "param_1[0x5c] = plVar9[3]" (subscript_expression "param_1[0x5c]" identifier [ number_literal ]) = (subscript_expression "plVar9[3]" identifier [ number_literal ])) ;) (if_statement "if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" if (parenthesized_expression "(local_48 == 0)" ( (binary_expression "local_48 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }" { (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" statement_identifier : (if_statement "if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" if (parenthesized_expression "((*(byte *)(local_40[0] + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(local_40[0] + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(local_40[0] + 0x20) & 1)" ( (binary_expression "*(byte *)(local_40[0] + 0x20) & 1" (pointer_expression "*(byte *)(local_40[0] + 0x20)" * (cast_expression "(byte *)(local_40[0] + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + 0x20)" ( (binary_expression "local_40[0] + 0x20" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" { (labeled_statement "LAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");" statement_identifier : comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;)) }))) (expression_statement "lVar3 = *(long *)(local_40[0] + 8);" (assignment_expression "lVar3 = *(long *)(local_40[0] + 8)" identifier = (pointer_expression "*(long *)(local_40[0] + 8)" * (cast_expression "(long *)(local_40[0] + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + 8)" ( (binary_expression "local_40[0] + 8" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "lVar4 = local_40[0];" (assignment_expression "lVar4 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((*(byte *)(local_40[0] + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(local_40[0] + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(local_40[0] + 0x20) & 2)" ( (binary_expression "*(byte *)(local_40[0] + 0x20) & 2" (pointer_expression "*(byte *)(local_40[0] + 0x20)" * (cast_expression "(byte *)(local_40[0] + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + 0x20)" ( (binary_expression "local_40[0] + 0x20" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" { (labeled_statement "LAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" statement_identifier : comment (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;)) })) }) (else_clause "else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" else (compound_statement "{\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" { (if_statement "if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(local_48 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(local_48 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(local_48 + 0x20) & 1)" ( (binary_expression "*(byte *)(local_48 + 0x20) & 1" (pointer_expression "*(byte *)(local_48 + 0x20)" * (cast_expression "(byte *)(local_48 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0x20)" ( (binary_expression "local_48 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (expression_statement "lVar3 = *(long *)(local_48 + 8);" (assignment_expression "lVar3 = *(long *)(local_48 + 8)" identifier = (pointer_expression "*(long *)(local_48 + 8)" * (cast_expression "(long *)(local_48 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 8)" ( (binary_expression "local_48 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;" if (parenthesized_expression "((*(byte *)(local_48 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(local_48 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(local_48 + 0x20) & 2)" ( (binary_expression "*(byte *)(local_48 + 0x20) & 2" (pointer_expression "*(byte *)(local_48 + 0x20)" * (cast_expression "(byte *)(local_48 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0x20)" ( (binary_expression "local_48 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (expression_statement "param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];" (assignment_expression "param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57]" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = (binary_expression "(*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57]" (parenthesized_expression "(*(long *)(local_48 + 0x10) + lVar3)" ( (binary_expression "*(long *)(local_48 + 0x10) + lVar3" (pointer_expression "*(long *)(local_48 + 0x10)" * (cast_expression "(long *)(local_48 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0x10)" ( (binary_expression "local_48 + 0x10" identifier + number_literal) )))) + identifier) )) - (subscript_expression "param_1[0x57]" identifier [ number_literal ]))) ;) (expression_statement "lVar4 = local_48;" (assignment_expression "lVar4 = local_48" identifier = identifier) ;) (if_statement "if (local_40[0] != 0) goto LAB_001c2fb9;" if (parenthesized_expression "(local_40[0] != 0)" ( (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_001c2fb9;" goto statement_identifier ;)) }))) (expression_statement "lVar4 = *(long *)(lVar4 + 0x10);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x10)" identifier = (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_1[0x5d] = param_1[0x5d] + (ulong)param_2;" (assignment_expression "param_1[0x5d] = param_1[0x5d] + (ulong)param_2" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = (binary_expression "param_1[0x5d] + (ulong)param_2" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) + (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier))) ;) (expression_statement "lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;" (assignment_expression "lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4" identifier = (binary_expression "lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4" (binary_expression "lVar3 + ((ulong)param_2 - param_1[0x57])" identifier + (parenthesized_expression "((ulong)param_2 - param_1[0x57])" ( (binary_expression "(ulong)param_2 - param_1[0x57]" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) - (subscript_expression "param_1[0x57]" identifier [ number_literal ])) ))) + identifier)) ;) (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" identifier = (cast_expression "(int)param_1[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x5e]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0x59] = lVar4;" (assignment_expression "param_1[0x59] = lVar4" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar1 != 0x6474e552) goto joined_r0x001c3142;" if (parenthesized_expression "(iVar1 != 0x6474e552)" ( (binary_expression "iVar1 != 0x6474e552" identifier != number_literal) )) (goto_statement "goto joined_r0x001c3142;" goto statement_identifier ;)) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x18)" ( (binary_expression "PTR_DAT_003be6b0 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0016cdf0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }" { (expression_statement "plVar7 = (long *)PTR_DAT_003be6b0;" (assignment_expression "plVar7 = (long *)PTR_DAT_003be6b0" identifier = (cast_expression "(long *)PTR_DAT_003be6b0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_001bf730();" (call_expression "FUN_001bf730()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }" if (parenthesized_expression "((int)plVar7[0x5e] == 7)" ( (binary_expression "(int)plVar7[0x5e] == 7" (cast_expression "(int)plVar7[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar7[0x5e]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }" { (expression_statement "puVar8 = (undefined8 *)*plVar7;" (assignment_expression "puVar8 = (undefined8 *)*plVar7" identifier = (cast_expression "(undefined8 *)*plVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }" if (parenthesized_expression "(puVar8 != (undefined8 *)plVar7[1])" ( (binary_expression "puVar8 != (undefined8 *)plVar7[1]" identifier != (cast_expression "(undefined8 *)plVar7[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) )) (compound_statement "{\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }" { (do_statement "do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);" do (compound_statement "{\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        }" { (expression_statement "plVar10 = (long *)*puVar8;" (assignment_expression "plVar10 = (long *)*puVar8" identifier = (cast_expression "(long *)*puVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);" (call_expression "(**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57])" (parenthesized_expression "(**(code **)(*plVar10 + 0x88))" ( (pointer_expression "**(code **)(*plVar10 + 0x88)" * (pointer_expression "*(code **)(*plVar10 + 0x88)" * (cast_expression "(code **)(*plVar10 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar10 + 0x88)" ( (binary_expression "*plVar10 + 0x88" (pointer_expression "*plVar10" * identifier) + number_literal) ))))) )) (argument_list "(plVar10,plVar7[0x57])" ( identifier , (subscript_expression "plVar7[0x57]" identifier [ number_literal ]) ))) ;) }) while (parenthesized_expression "((undefined8 *)plVar7[1] != puVar8)" ( (binary_expression "(undefined8 *)plVar7[1] != puVar8" (cast_expression "(undefined8 *)plVar7[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ])) != identifier) )) ;) })) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets")" identifier (argument_list "("../../gold/output.cc",0x12bb,"set_tls_offsets")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_tls_offsets"" " string_content ") ))) ;) })) (expression_statement "lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);" (assignment_expression "lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" identifier = (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar5 = param_1[0x57] + lVar4;" (assignment_expression "uVar5 = param_1[0x57] + lVar4" identifier = (binary_expression "param_1[0x57] + lVar4" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) + identifier)) ;) (if_statement "if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }" { (expression_statement "lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);" (assignment_expression "lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" identifier = (pointer_expression "*(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" * (cast_expression "(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28" (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x18)" ( (binary_expression "PTR_DAT_003be6b0 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "cVar2 = FUN_001ee080();" (assignment_expression "cVar2 = FUN_001ee080()" identifier = (call_expression "FUN_001ee080()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }" { (if_statement "if (lVar3 != 0) goto LAB_001c3210;" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c3210;" goto statement_identifier ;)) (goto_statement "goto LAB_001c31b2;" goto statement_identifier ;) })) (if_statement "if (lVar3 != 0) goto LAB_001c3125;" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c3125;" goto statement_identifier ;)) }) (else_clause "else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" else (compound_statement "{\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" { (expression_statement "cVar2 = FUN_001ee080();" (assignment_expression "cVar2 = FUN_001ee080()" identifier = (call_expression "FUN_001ee080()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }" { (labeled_statement "LAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;" statement_identifier : (expression_statement "uVar5 = lVar3 + -1 + uVar5 & -lVar3;" (assignment_expression "uVar5 = lVar3 + -1 + uVar5 & -lVar3" identifier = (binary_expression "lVar3 + -1 + uVar5 & -lVar3" (binary_expression "lVar3 + -1 + uVar5" (binary_expression "lVar3 + -1" identifier + number_literal) + identifier) & (unary_expression "-lVar3" - identifier))) ;)) (labeled_statement "LAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];" statement_identifier : (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" identifier = (cast_expression "(int)param_1[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x5e]" identifier [ number_literal ]))) ;)) (expression_statement "param_1[0x59] = uVar5 - param_1[0x57];" (assignment_expression "param_1[0x59] = uVar5 - param_1[0x57]" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = (binary_expression "uVar5 - param_1[0x57]" identifier - (subscript_expression "param_1[0x57]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x001c3142;" goto statement_identifier ;) })) (labeled_statement "LAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" statement_identifier : (if_statement "if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" if (parenthesized_expression "((-lVar3 & lVar3 + -1 + uVar5) != uVar5)" ( (binary_expression "(-lVar3 & lVar3 + -1 + uVar5) != uVar5" (parenthesized_expression "(-lVar3 & lVar3 + -1 + uVar5)" ( (binary_expression "-lVar3 & lVar3 + -1 + uVar5" (unary_expression "-lVar3" - identifier) & (binary_expression "lVar3 + -1 + uVar5" (binary_expression "lVar3 + -1" identifier + number_literal) + identifier)) )) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x12a8,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) }))) }))) (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" identifier = (cast_expression "(int)param_1[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x5e]" identifier [ number_literal ]))) ;) (labeled_statement "joined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar1 != 7) {\n    return;\n  }" if (parenthesized_expression "(iVar1 != 7)" ( (binary_expression "iVar1 != 7" identifier != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "lVar3 = FUN_001c2530(param_1);" (assignment_expression "lVar3 = FUN_001c2530(param_1)" identifier = (call_expression "FUN_001c2530(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = param_1[0x59];\n  }" { (expression_statement "uVar5 = param_1[0x59];" (assignment_expression "uVar5 = param_1[0x59]" identifier = (subscript_expression "param_1[0x59]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" else (compound_statement "{\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" { (if_statement "if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }" if (parenthesized_expression "(param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3))" ( (binary_expression "param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) != (parenthesized_expression "((param_1[0x57] - 1U) + lVar3 & -lVar3)" ( (binary_expression "(param_1[0x57] - 1U) + lVar3 & -lVar3" (binary_expression "(param_1[0x57] - 1U) + lVar3" (parenthesized_expression "(param_1[0x57] - 1U)" ( (binary_expression "param_1[0x57] - 1U" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) - number_literal) )) + identifier) & (unary_expression "-lVar3" - identifier)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }" { comment (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x12b1,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;" (assignment_expression "uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3" identifier = (binary_expression "lVar3 + -1 + param_1[0x59] & -lVar3" (binary_expression "lVar3 + -1 + param_1[0x59]" (binary_expression "lVar3 + -1" identifier + number_literal) + (subscript_expression "param_1[0x59]" identifier [ number_literal ])) & (unary_expression "-lVar3" - identifier))) ;) }))) (expression_statement "param_1[0x59] = uVar5;" (assignment_expression "param_1[0x59] = uVar5" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void set_offset(Output_segment * this, uint increase) */\n\nvoid __thiscall gold::Output_segment::set_offset(Output_segment *this,uint increase)\n\n{\n  Elf_Word EVar1;\n  Output_data *pOVar2;\n  Output_data *pOVar3;\n  long lVar4;\n  bool bVar5;\n  int iVar6;\n  undefined4 extraout_var;\n  uint64_t uVar7;\n  ulong uVar8;\n  undefined4 extraout_var_00;\n  Output_data **ppOVar9;\n  Output_data *pOVar10;\n  pointer ppOVar11;\n  uint64_t uVar12;\n  Output_data *pOVar13;\n  Output_data *last_data;\n  Output_data *last_bss;\n  \n  if (this->type_ == 1) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((this->field_0x2f8 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1257,"set_offset");\n  }\n  ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n             _M_start;\n  if (ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish)\n  {\n    if (increase == 0) {\n      this->vaddr_ = 0;\n      this->paddr_ = 0;\n      this->field_0x2f8 = this->field_0x2f8 | 2;\n      this->memsz_ = 0;\n      this->min_p_align_ = 0;\n      this->offset_ = 0;\n      this->filesz_ = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x125f,"set_offset");\n  }\n  last_data = (Output_data *)0x0;\n  last_bss = (Output_data *)0x0;\n  pOVar10 = (Output_data *)0x0;\nLAB_001c2eb7:\n  do {\n    pOVar3 = *ppOVar11;\n    pOVar13 = pOVar3;\n    if (pOVar10 != (Output_data *)0x0) {\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }\n    }\n    iVar6 = (*pOVar3->_vptr_Output_data[6])();\n    ppOVar9 = &last_data;\n    if (((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)) {\n      ppOVar9 = &last_bss;\n    }\n    pOVar3 = *ppOVar9;\n    pOVar2 = *ppOVar11;\n    pOVar10 = pOVar13;\n    if (pOVar3 != (Output_data *)0x0) {\n      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *ppOVar9 = pOVar2;\n    ppOVar11 = ppOVar11 + 1;\n  } while (this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n           _M_finish != ppOVar11);\n  if ((pOVar13->field_0x20 & 1) == 0) goto LAB_001c3220;\n  this->vaddr_ = pOVar13->address_;\n  iVar6 = (*pOVar13->_vptr_Output_data[4])(pOVar13);\n  if ((char)iVar6 == '\0') {\n    uVar7 = this->vaddr_;\n  }\n  else if (pOVar13->_vptr_Output_data[5] == Output_section::do_load_address) {\n    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }\n    uVar7 = pOVar13[1].offset_;\n  }\n  else {\n    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);\n    uVar7 = CONCAT44(extraout_var_00,iVar6);\n  }\n  this->paddr_ = uVar7;\n  this->field_0x2f8 = this->field_0x2f8 | 2;\n  if ((pOVar13->field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  this->offset_ = pOVar13->offset_;\n  if (last_data == (Output_data *)0x0) {\n    this->filesz_ = 0;\nLAB_001c2fb9:\n    if ((last_bss->field_0x20 & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");\n    }\n    uVar7 = last_bss->address_;\n    pOVar10 = last_bss;\n    if ((last_bss->field_0x20 & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((last_data->field_0x20 & 1) == 0) goto LAB_001c3220;\n    uVar7 = last_data->address_;\n    if ((last_data->field_0x20 & 2) == 0) goto LAB_001c3238;\n    this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_;\n    pOVar10 = last_data;\n    if (last_bss != (Output_data *)0x0) goto LAB_001c2fb9;\n  }\n  lVar4 = pOVar10->data_size_;\n  this->filesz_ = this->filesz_ + (ulong)increase;\n  uVar7 = uVar7 + ((ulong)increase - this->vaddr_) + lVar4;\n  EVar1 = this->type_;\n  this->memsz_ = uVar7;\n  if (EVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)parameters);\n  }\n  uVar12 = (parameters->options_->max_page_size_).value;\n  uVar8 = this->vaddr_ + uVar7;\n  if (uVar12 == 0) {\n    uVar12 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28);\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\n      if (uVar12 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (uVar12 != 0) goto LAB_001c3125;\n  }\n  else {\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\nLAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;\nLAB_001c31b2:\n      EVar1 = this->type_;\n      this->memsz_ = uVar8 - this->vaddr_;\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  EVar1 = this->type_;\njoined_r0x001c3142:\n  if (EVar1 != 7) {\n    return;\n  }\n  uVar7 = maximum_alignment(this);\n  if (uVar7 == 0) {\n    uVar8 = this->memsz_;\n  }\n  else {\n    if (this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7;\n  }\n  this->memsz_ = uVar8;\n  return;\n}\n\n" comment comment (function_definition "void __thiscall gold::Output_segment::set_offset(Output_segment *this,uint increase)\n\n{\n  Elf_Word EVar1;\n  Output_data *pOVar2;\n  Output_data *pOVar3;\n  long lVar4;\n  bool bVar5;\n  int iVar6;\n  undefined4 extraout_var;\n  uint64_t uVar7;\n  ulong uVar8;\n  undefined4 extraout_var_00;\n  Output_data **ppOVar9;\n  Output_data *pOVar10;\n  pointer ppOVar11;\n  uint64_t uVar12;\n  Output_data *pOVar13;\n  Output_data *last_data;\n  Output_data *last_bss;\n  \n  if (this->type_ == 1) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((this->field_0x2f8 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1257,"set_offset");\n  }\n  ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n             _M_start;\n  if (ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish)\n  {\n    if (increase == 0) {\n      this->vaddr_ = 0;\n      this->paddr_ = 0;\n      this->field_0x2f8 = this->field_0x2f8 | 2;\n      this->memsz_ = 0;\n      this->min_p_align_ = 0;\n      this->offset_ = 0;\n      this->filesz_ = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x125f,"set_offset");\n  }\n  last_data = (Output_data *)0x0;\n  last_bss = (Output_data *)0x0;\n  pOVar10 = (Output_data *)0x0;\nLAB_001c2eb7:\n  do {\n    pOVar3 = *ppOVar11;\n    pOVar13 = pOVar3;\n    if (pOVar10 != (Output_data *)0x0) {\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }\n    }\n    iVar6 = (*pOVar3->_vptr_Output_data[6])();\n    ppOVar9 = &last_data;\n    if (((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)) {\n      ppOVar9 = &last_bss;\n    }\n    pOVar3 = *ppOVar9;\n    pOVar2 = *ppOVar11;\n    pOVar10 = pOVar13;\n    if (pOVar3 != (Output_data *)0x0) {\n      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *ppOVar9 = pOVar2;\n    ppOVar11 = ppOVar11 + 1;\n  } while (this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n           _M_finish != ppOVar11);\n  if ((pOVar13->field_0x20 & 1) == 0) goto LAB_001c3220;\n  this->vaddr_ = pOVar13->address_;\n  iVar6 = (*pOVar13->_vptr_Output_data[4])(pOVar13);\n  if ((char)iVar6 == '\0') {\n    uVar7 = this->vaddr_;\n  }\n  else if (pOVar13->_vptr_Output_data[5] == Output_section::do_load_address) {\n    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }\n    uVar7 = pOVar13[1].offset_;\n  }\n  else {\n    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);\n    uVar7 = CONCAT44(extraout_var_00,iVar6);\n  }\n  this->paddr_ = uVar7;\n  this->field_0x2f8 = this->field_0x2f8 | 2;\n  if ((pOVar13->field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  this->offset_ = pOVar13->offset_;\n  if (last_data == (Output_data *)0x0) {\n    this->filesz_ = 0;\nLAB_001c2fb9:\n    if ((last_bss->field_0x20 & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");\n    }\n    uVar7 = last_bss->address_;\n    pOVar10 = last_bss;\n    if ((last_bss->field_0x20 & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((last_data->field_0x20 & 1) == 0) goto LAB_001c3220;\n    uVar7 = last_data->address_;\n    if ((last_data->field_0x20 & 2) == 0) goto LAB_001c3238;\n    this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_;\n    pOVar10 = last_data;\n    if (last_bss != (Output_data *)0x0) goto LAB_001c2fb9;\n  }\n  lVar4 = pOVar10->data_size_;\n  this->filesz_ = this->filesz_ + (ulong)increase;\n  uVar7 = uVar7 + ((ulong)increase - this->vaddr_) + lVar4;\n  EVar1 = this->type_;\n  this->memsz_ = uVar7;\n  if (EVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)parameters);\n  }\n  uVar12 = (parameters->options_->max_page_size_).value;\n  uVar8 = this->vaddr_ + uVar7;\n  if (uVar12 == 0) {\n    uVar12 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28);\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\n      if (uVar12 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (uVar12 != 0) goto LAB_001c3125;\n  }\n  else {\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\nLAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;\nLAB_001c31b2:\n      EVar1 = this->type_;\n      this->memsz_ = uVar8 - this->vaddr_;\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  EVar1 = this->type_;\njoined_r0x001c3142:\n  if (EVar1 != 7) {\n    return;\n  }\n  uVar7 = maximum_alignment(this);\n  if (uVar7 == 0) {\n    uVar8 = this->memsz_;\n  }\n  else {\n    if (this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7;\n  }\n  this->memsz_ = uVar8;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_segment::" identifier : : identifier : :) (function_declarator "set_offset(Output_segment *this,uint increase)" identifier (parameter_list "(Output_segment *this,uint increase)" ( (parameter_declaration "Output_segment *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint increase" type_identifier identifier) ))) (compound_statement "{\n  Elf_Word EVar1;\n  Output_data *pOVar2;\n  Output_data *pOVar3;\n  long lVar4;\n  bool bVar5;\n  int iVar6;\n  undefined4 extraout_var;\n  uint64_t uVar7;\n  ulong uVar8;\n  undefined4 extraout_var_00;\n  Output_data **ppOVar9;\n  Output_data *pOVar10;\n  pointer ppOVar11;\n  uint64_t uVar12;\n  Output_data *pOVar13;\n  Output_data *last_data;\n  Output_data *last_bss;\n  \n  if (this->type_ == 1) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((this->field_0x2f8 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1257,"set_offset");\n  }\n  ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n             _M_start;\n  if (ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish)\n  {\n    if (increase == 0) {\n      this->vaddr_ = 0;\n      this->paddr_ = 0;\n      this->field_0x2f8 = this->field_0x2f8 | 2;\n      this->memsz_ = 0;\n      this->min_p_align_ = 0;\n      this->offset_ = 0;\n      this->filesz_ = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x125f,"set_offset");\n  }\n  last_data = (Output_data *)0x0;\n  last_bss = (Output_data *)0x0;\n  pOVar10 = (Output_data *)0x0;\nLAB_001c2eb7:\n  do {\n    pOVar3 = *ppOVar11;\n    pOVar13 = pOVar3;\n    if (pOVar10 != (Output_data *)0x0) {\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }\n    }\n    iVar6 = (*pOVar3->_vptr_Output_data[6])();\n    ppOVar9 = &last_data;\n    if (((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)) {\n      ppOVar9 = &last_bss;\n    }\n    pOVar3 = *ppOVar9;\n    pOVar2 = *ppOVar11;\n    pOVar10 = pOVar13;\n    if (pOVar3 != (Output_data *)0x0) {\n      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *ppOVar9 = pOVar2;\n    ppOVar11 = ppOVar11 + 1;\n  } while (this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n           _M_finish != ppOVar11);\n  if ((pOVar13->field_0x20 & 1) == 0) goto LAB_001c3220;\n  this->vaddr_ = pOVar13->address_;\n  iVar6 = (*pOVar13->_vptr_Output_data[4])(pOVar13);\n  if ((char)iVar6 == '\0') {\n    uVar7 = this->vaddr_;\n  }\n  else if (pOVar13->_vptr_Output_data[5] == Output_section::do_load_address) {\n    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }\n    uVar7 = pOVar13[1].offset_;\n  }\n  else {\n    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);\n    uVar7 = CONCAT44(extraout_var_00,iVar6);\n  }\n  this->paddr_ = uVar7;\n  this->field_0x2f8 = this->field_0x2f8 | 2;\n  if ((pOVar13->field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  this->offset_ = pOVar13->offset_;\n  if (last_data == (Output_data *)0x0) {\n    this->filesz_ = 0;\nLAB_001c2fb9:\n    if ((last_bss->field_0x20 & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");\n    }\n    uVar7 = last_bss->address_;\n    pOVar10 = last_bss;\n    if ((last_bss->field_0x20 & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((last_data->field_0x20 & 1) == 0) goto LAB_001c3220;\n    uVar7 = last_data->address_;\n    if ((last_data->field_0x20 & 2) == 0) goto LAB_001c3238;\n    this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_;\n    pOVar10 = last_data;\n    if (last_bss != (Output_data *)0x0) goto LAB_001c2fb9;\n  }\n  lVar4 = pOVar10->data_size_;\n  this->filesz_ = this->filesz_ + (ulong)increase;\n  uVar7 = uVar7 + ((ulong)increase - this->vaddr_) + lVar4;\n  EVar1 = this->type_;\n  this->memsz_ = uVar7;\n  if (EVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)parameters);\n  }\n  uVar12 = (parameters->options_->max_page_size_).value;\n  uVar8 = this->vaddr_ + uVar7;\n  if (uVar12 == 0) {\n    uVar12 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28);\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\n      if (uVar12 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (uVar12 != 0) goto LAB_001c3125;\n  }\n  else {\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\nLAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;\nLAB_001c31b2:\n      EVar1 = this->type_;\n      this->memsz_ = uVar8 - this->vaddr_;\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  EVar1 = this->type_;\njoined_r0x001c3142:\n  if (EVar1 != 7) {\n    return;\n  }\n  uVar7 = maximum_alignment(this);\n  if (uVar7 == 0) {\n    uVar8 = this->memsz_;\n  }\n  else {\n    if (this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7;\n  }\n  this->memsz_ = uVar8;\n  return;\n}" { (declaration "Elf_Word EVar1;" type_identifier identifier ;) (declaration "Output_data *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "Output_data *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "uint64_t uVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined4 extraout_var_00;" type_identifier identifier ;) (declaration "Output_data **ppOVar9;" type_identifier (pointer_declarator "**ppOVar9" * (pointer_declarator "*ppOVar9" * identifier)) ;) (declaration "Output_data *pOVar10;" type_identifier (pointer_declarator "*pOVar10" * identifier) ;) (declaration "pointer ppOVar11;" type_identifier identifier ;) (declaration "uint64_t uVar12;" primitive_type identifier ;) (declaration "Output_data *pOVar13;" type_identifier (pointer_declarator "*pOVar13" * identifier) ;) (declaration "Output_data *last_data;" type_identifier (pointer_declarator "*last_data" * identifier) ;) (declaration "Output_data *last_bss;" type_identifier (pointer_declarator "*last_bss" * identifier) ;) (if_statement "if (this->type_ == 1) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1255,"set_offset");\n  }" if (parenthesized_expression "(this->type_ == 1)" ( (binary_expression "this->type_ == 1" (field_expression "this->type_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1255,"set_offset");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x1255,"set_offset");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x1255,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x1255,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (if_statement "if ((this->field_0x2f8 & 2) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1257,"set_offset");\n  }" if (parenthesized_expression "((this->field_0x2f8 & 2) != 0)" ( (binary_expression "(this->field_0x2f8 & 2) != 0" (parenthesized_expression "(this->field_0x2f8 & 2)" ( (binary_expression "this->field_0x2f8 & 2" (field_expression "this->field_0x2f8" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x1257,"set_offset");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x1257,"set_offset");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x1257,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x1257,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n             _M_start;" (field_expression "ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n             _M_start" (field_expression "ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold::Output_data*,_std" (assignment_expression "ppOVar11 = this->output_lists_[0].\n             super__Vector_base<gold" identifier = (binary_expression "this->output_lists_[0].\n             super__Vector_base<gold" (field_expression "this->output_lists_[0].\n             super__Vector_base" (subscript_expression "this->output_lists_[0]" (field_expression "this->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish)\n  {\n    if (increase == 0) {\n      this->vaddr_ = 0;\n      this->paddr_ = 0;\n      this->field_0x2f8 = this->field_0x2f8 | 2;\n      this->memsz_ = 0;\n      this->min_p_align_ = 0;\n      this->offset_ = 0;\n      this->filesz_ = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x125f,"set_offset");\n  }" if (parenthesized_expression "(ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish)" ( (field_expression "ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish" (field_expression "ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold::Output_data*,_std" (binary_expression "ppOVar11 ==\n      this->output_lists_[0].\n      super__Vector_base<gold" identifier == (binary_expression "this->output_lists_[0].\n      super__Vector_base<gold" (field_expression "this->output_lists_[0].\n      super__Vector_base" (subscript_expression "this->output_lists_[0]" (field_expression "this->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    if (increase == 0) {\n      this->vaddr_ = 0;\n      this->paddr_ = 0;\n      this->field_0x2f8 = this->field_0x2f8 | 2;\n      this->memsz_ = 0;\n      this->min_p_align_ = 0;\n      this->offset_ = 0;\n      this->filesz_ = 0;\n      return;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x125f,"set_offset");\n  }" { (if_statement "if (increase == 0) {\n      this->vaddr_ = 0;\n      this->paddr_ = 0;\n      this->field_0x2f8 = this->field_0x2f8 | 2;\n      this->memsz_ = 0;\n      this->min_p_align_ = 0;\n      this->offset_ = 0;\n      this->filesz_ = 0;\n      return;\n    }" if (parenthesized_expression "(increase == 0)" ( (binary_expression "increase == 0" identifier == number_literal) )) (compound_statement "{\n      this->vaddr_ = 0;\n      this->paddr_ = 0;\n      this->field_0x2f8 = this->field_0x2f8 | 2;\n      this->memsz_ = 0;\n      this->min_p_align_ = 0;\n      this->offset_ = 0;\n      this->filesz_ = 0;\n      return;\n    }" { (expression_statement "this->vaddr_ = 0;" (assignment_expression "this->vaddr_ = 0" (field_expression "this->vaddr_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->paddr_ = 0;" (assignment_expression "this->paddr_ = 0" (field_expression "this->paddr_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->field_0x2f8 = this->field_0x2f8 | 2;" (assignment_expression "this->field_0x2f8 = this->field_0x2f8 | 2" (field_expression "this->field_0x2f8" identifier -> field_identifier) = (binary_expression "this->field_0x2f8 | 2" (field_expression "this->field_0x2f8" identifier -> field_identifier) | number_literal)) ;) (expression_statement "this->memsz_ = 0;" (assignment_expression "this->memsz_ = 0" (field_expression "this->memsz_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->min_p_align_ = 0;" (assignment_expression "this->min_p_align_ = 0" (field_expression "this->min_p_align_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->offset_ = 0;" (assignment_expression "this->offset_ = 0" (field_expression "this->offset_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->filesz_ = 0;" (assignment_expression "this->filesz_ = 0" (field_expression "this->filesz_" identifier -> field_identifier) = number_literal) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x125f,"set_offset");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x125f,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x125f,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "last_data = (Output_data *)0x0;" (assignment_expression "last_data = (Output_data *)0x0" identifier = (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "last_bss = (Output_data *)0x0;" (assignment_expression "last_bss = (Output_data *)0x0" identifier = (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pOVar10 = (Output_data *)0x0;" (assignment_expression "pOVar10 = (Output_data *)0x0" identifier = (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_001c2eb7:\n  do {\n    pOVar3 = *ppOVar11;\n    pOVar13 = pOVar3;\n    if (pOVar10 != (Output_data *)0x0) {\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }\n    }\n    iVar6 = (*pOVar3->_vptr_Output_data[6])();\n    ppOVar9 = &last_data;\n    if (((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)) {\n      ppOVar9 = &last_bss;\n    }\n    pOVar3 = *ppOVar9;\n    pOVar2 = *ppOVar11;\n    pOVar10 = pOVar13;\n    if (pOVar3 != (Output_data *)0x0) {\n      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *ppOVar9 = pOVar2;\n    ppOVar11 = ppOVar11 + 1;\n  } while (this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n           _M_finish != ppOVar11);" statement_identifier : (do_statement "do {\n    pOVar3 = *ppOVar11;\n    pOVar13 = pOVar3;\n    if (pOVar10 != (Output_data *)0x0) {\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }\n    }\n    iVar6 = (*pOVar3->_vptr_Output_data[6])();\n    ppOVar9 = &last_data;\n    if (((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)) {\n      ppOVar9 = &last_bss;\n    }\n    pOVar3 = *ppOVar9;\n    pOVar2 = *ppOVar11;\n    pOVar10 = pOVar13;\n    if (pOVar3 != (Output_data *)0x0) {\n      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *ppOVar9 = pOVar2;\n    ppOVar11 = ppOVar11 + 1;\n  } while (this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n           _M_finish != ppOVar11);" do (compound_statement "{\n    pOVar3 = *ppOVar11;\n    pOVar13 = pOVar3;\n    if (pOVar10 != (Output_data *)0x0) {\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }\n    }\n    iVar6 = (*pOVar3->_vptr_Output_data[6])();\n    ppOVar9 = &last_data;\n    if (((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)) {\n      ppOVar9 = &last_bss;\n    }\n    pOVar3 = *ppOVar9;\n    pOVar2 = *ppOVar11;\n    pOVar10 = pOVar13;\n    if (pOVar3 != (Output_data *)0x0) {\n      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *ppOVar9 = pOVar2;\n    ppOVar11 = ppOVar11 + 1;\n  }" { (expression_statement "pOVar3 = *ppOVar11;" (assignment_expression "pOVar3 = *ppOVar11" identifier = (pointer_expression "*ppOVar11" * identifier)) ;) (expression_statement "pOVar13 = pOVar3;" (assignment_expression "pOVar13 = pOVar3" identifier = identifier) ;) (if_statement "if (pOVar10 != (Output_data *)0x0) {\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }\n    }" if (parenthesized_expression "(pOVar10 != (Output_data *)0x0)" ( (binary_expression "pOVar10 != (Output_data *)0x0" identifier != (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }\n    }" { (if_statement "if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((pOVar3->field_0x20 & 1) == 0)" ( (binary_expression "(pOVar3->field_0x20 & 1) == 0" (parenthesized_expression "(pOVar3->field_0x20 & 1)" ( (binary_expression "pOVar3->field_0x20 & 1" (field_expression "pOVar3->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if ((pOVar10->field_0x20 & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((pOVar10->field_0x20 & 1) == 0)" ( (binary_expression "(pOVar10->field_0x20 & 1) == 0" (parenthesized_expression "(pOVar10->field_0x20 & 1)" ( (binary_expression "pOVar10->field_0x20 & 1" (field_expression "pOVar10->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if ((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)) {\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }" if (parenthesized_expression "((pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_))" ( (binary_expression "(pOVar10->address_ <= pOVar3->address_) &&\n         (pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)" (parenthesized_expression "(pOVar10->address_ <= pOVar3->address_)" ( (binary_expression "pOVar10->address_ <= pOVar3->address_" (field_expression "pOVar10->address_" identifier -> field_identifier) <= (field_expression "pOVar3->address_" identifier -> field_identifier)) )) && (parenthesized_expression "(pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_)" ( (comma_expression "pOVar13 = pOVar10, pOVar10->address_ == pOVar3->address_" (assignment_expression "pOVar13 = pOVar10" identifier = identifier) , (binary_expression "pOVar10->address_ == pOVar3->address_" (field_expression "pOVar10->address_" identifier -> field_identifier) == (field_expression "pOVar3->address_" identifier -> field_identifier))) ))) )) (compound_statement "{\n        if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;\n        if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }\n      }" { (if_statement "if (((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)) goto LAB_001c3238;" if (parenthesized_expression "(((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0))" ( (binary_expression "((pOVar3->field_0x20 & 2) == 0) || ((pOVar10->field_0x20 & 2) == 0)" (parenthesized_expression "((pOVar3->field_0x20 & 2) == 0)" ( (binary_expression "(pOVar3->field_0x20 & 2) == 0" (parenthesized_expression "(pOVar3->field_0x20 & 2)" ( (binary_expression "pOVar3->field_0x20 & 2" (field_expression "pOVar3->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((pOVar10->field_0x20 & 2) == 0)" ( (binary_expression "(pOVar10->field_0x20 & 2) == 0" (parenthesized_expression "(pOVar10->field_0x20 & 2)" ( (binary_expression "pOVar10->field_0x20 & 2" (field_expression "pOVar10->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (if_statement "if (pOVar3->data_size_ < pOVar10->data_size_) {\n          pOVar13 = pOVar3;\n        }" if (parenthesized_expression "(pOVar3->data_size_ < pOVar10->data_size_)" ( (binary_expression "pOVar3->data_size_ < pOVar10->data_size_" (field_expression "pOVar3->data_size_" identifier -> field_identifier) < (field_expression "pOVar10->data_size_" identifier -> field_identifier)) )) (compound_statement "{\n          pOVar13 = pOVar3;\n        }" { (expression_statement "pOVar13 = pOVar3;" (assignment_expression "pOVar13 = pOVar3" identifier = identifier) ;) })) })) })) (expression_statement "iVar6 = (*pOVar3->_vptr_Output_data[6])();" (assignment_expression "iVar6 = (*pOVar3->_vptr_Output_data[6])()" identifier = (call_expression "(*pOVar3->_vptr_Output_data[6])()" (parenthesized_expression "(*pOVar3->_vptr_Output_data[6])" ( (pointer_expression "*pOVar3->_vptr_Output_data[6]" * (subscript_expression "pOVar3->_vptr_Output_data[6]" (field_expression "pOVar3->_vptr_Output_data" identifier -> field_identifier) [ number_literal ])) )) (argument_list "()" ( )))) ;) (expression_statement "ppOVar9 = &last_data;" (assignment_expression "ppOVar9 = &last_data" identifier = (pointer_expression "&last_data" & identifier)) ;) (if_statement "if (((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)) {\n      ppOVar9 = &last_bss;\n    }" if (parenthesized_expression "(((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8))" ( (binary_expression "((char)iVar6 != '\0') &&\n       (iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)" (parenthesized_expression "((char)iVar6 != '\0')" ( (binary_expression "(char)iVar6 != '\0'" (cast_expression "(char)iVar6" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8)" ( (comma_expression "iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])(), ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8" (assignment_expression "iVar6 = (*(*ppOVar11)->_vptr_Output_data[9])()" identifier = (call_expression "(*(*ppOVar11)->_vptr_Output_data[9])()" (parenthesized_expression "(*(*ppOVar11)->_vptr_Output_data[9])" ( (pointer_expression "*(*ppOVar11)->_vptr_Output_data[9]" * (subscript_expression "(*ppOVar11)->_vptr_Output_data[9]" (field_expression "(*ppOVar11)->_vptr_Output_data" (parenthesized_expression "(*ppOVar11)" ( (pointer_expression "*ppOVar11" * identifier) )) -> field_identifier) [ number_literal ])) )) (argument_list "()" ( )))) , (comma_expression "ppOVar9 = &last_data,\n       *(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8" (assignment_expression "ppOVar9 = &last_data" identifier = (pointer_expression "&last_data" & identifier)) , (binary_expression "*(int *)(CONCAT44(extraout_var,iVar6) + 0x6c) == 8" (pointer_expression "*(int *)(CONCAT44(extraout_var,iVar6) + 0x6c)" * (cast_expression "(int *)(CONCAT44(extraout_var,iVar6) + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CONCAT44(extraout_var,iVar6) + 0x6c)" ( (binary_expression "CONCAT44(extraout_var,iVar6) + 0x6c" (call_expression "CONCAT44(extraout_var,iVar6)" identifier (argument_list "(extraout_var,iVar6)" ( identifier , identifier ))) + number_literal) )))) == number_literal))) ))) )) (compound_statement "{\n      ppOVar9 = &last_bss;\n    }" { (expression_statement "ppOVar9 = &last_bss;" (assignment_expression "ppOVar9 = &last_bss" identifier = (pointer_expression "&last_bss" & identifier)) ;) })) (expression_statement "pOVar3 = *ppOVar9;" (assignment_expression "pOVar3 = *ppOVar9" identifier = (pointer_expression "*ppOVar9" * identifier)) ;) (expression_statement "pOVar2 = *ppOVar11;" (assignment_expression "pOVar2 = *ppOVar11" identifier = (pointer_expression "*ppOVar11" * identifier)) ;) (expression_statement "pOVar10 = pOVar13;" (assignment_expression "pOVar10 = pOVar13" identifier = identifier) ;) (if_statement "if (pOVar3 != (Output_data *)0x0) {\n      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }\n    }" if (parenthesized_expression "(pOVar3 != (Output_data *)0x0)" ( (binary_expression "pOVar3 != (Output_data *)0x0" identifier != (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;\n      if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }\n    }" { (if_statement "if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((pOVar2->field_0x20 & 1) == 0)" ( (binary_expression "(pOVar2->field_0x20 & 1) == 0" (parenthesized_expression "(pOVar2->field_0x20 & 1)" ( (binary_expression "pOVar2->field_0x20 & 1" (field_expression "pOVar2->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if ((pOVar3->field_0x20 & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((pOVar3->field_0x20 & 1) == 0)" ( (binary_expression "(pOVar3->field_0x20 & 1) == 0" (parenthesized_expression "(pOVar3->field_0x20 & 1)" ( (binary_expression "pOVar3->field_0x20 & 1" (field_expression "pOVar3->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if (pOVar2->address_ <= pOVar3->address_) {\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }" if (parenthesized_expression "(pOVar2->address_ <= pOVar3->address_)" ( (binary_expression "pOVar2->address_ <= pOVar3->address_" (field_expression "pOVar2->address_" identifier -> field_identifier) <= (field_expression "pOVar3->address_" identifier -> field_identifier)) )) (compound_statement "{\n        if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }\n        ppOVar11 = ppOVar11 + 1;\n        if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;\n        goto LAB_001c2eb7;\n      }" { (if_statement "if (pOVar2->address_ == pOVar3->address_) {\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }" if (parenthesized_expression "(pOVar2->address_ == pOVar3->address_)" ( (binary_expression "pOVar2->address_ == pOVar3->address_" (field_expression "pOVar2->address_" identifier -> field_identifier) == (field_expression "pOVar3->address_" identifier -> field_identifier)) )) (compound_statement "{\n          if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;\n          if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;\n        }" { (if_statement "if (((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)) goto LAB_001c3238;" if (parenthesized_expression "(((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0))" ( (binary_expression "((pOVar2->field_0x20 & 2) == 0) || ((pOVar3->field_0x20 & 2) == 0)" (parenthesized_expression "((pOVar2->field_0x20 & 2) == 0)" ( (binary_expression "(pOVar2->field_0x20 & 2) == 0" (parenthesized_expression "(pOVar2->field_0x20 & 2)" ( (binary_expression "pOVar2->field_0x20 & 2" (field_expression "pOVar2->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((pOVar3->field_0x20 & 2) == 0)" ( (binary_expression "(pOVar3->field_0x20 & 2) == 0" (parenthesized_expression "(pOVar3->field_0x20 & 2)" ( (binary_expression "pOVar3->field_0x20 & 2" (field_expression "pOVar3->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (if_statement "if (pOVar3->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;" if (parenthesized_expression "(pOVar3->data_size_ < pOVar2->data_size_)" ( (binary_expression "pOVar3->data_size_ < pOVar2->data_size_" (field_expression "pOVar3->data_size_" identifier -> field_identifier) < (field_expression "pOVar2->data_size_" identifier -> field_identifier)) )) (goto_statement "goto LAB_001c2f10;" goto statement_identifier ;)) })) (expression_statement "ppOVar11 = ppOVar11 + 1;" (assignment_expression "ppOVar11 = ppOVar11 + 1" identifier = (binary_expression "ppOVar11 + 1" identifier + number_literal)) ;) (if_statement "if (this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11) break;" if (parenthesized_expression "(this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11)" ( (binary_expression "this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish == ppOVar11" (field_expression "this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n            _M_finish" (field_expression "this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "this->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std" (binary_expression "this->output_lists_[0].\n            super__Vector_base<gold" (field_expression "this->output_lists_[0].\n            super__Vector_base" (subscript_expression "this->output_lists_[0]" (field_expression "this->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_001c2eb7;" goto statement_identifier ;) })) })) (labeled_statement "LAB_001c2f10:\n    *ppOVar9 = pOVar2;" statement_identifier : (expression_statement "*ppOVar9 = pOVar2;" (assignment_expression "*ppOVar9 = pOVar2" (pointer_expression "*ppOVar9" * identifier) = identifier) ;)) (expression_statement "ppOVar11 = ppOVar11 + 1;" (assignment_expression "ppOVar11 = ppOVar11 + 1" identifier = (binary_expression "ppOVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n           _M_finish != ppOVar11)" ( (binary_expression "this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n           _M_finish != ppOVar11" (field_expression "this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n           _M_finish" (field_expression "this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "this->output_lists_[0].\n           super__Vector_base<gold::Output_data*,_std" (binary_expression "this->output_lists_[0].\n           super__Vector_base<gold" (field_expression "this->output_lists_[0].\n           super__Vector_base" (subscript_expression "this->output_lists_[0]" (field_expression "this->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;)) (if_statement "if ((pOVar13->field_0x20 & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((pOVar13->field_0x20 & 1) == 0)" ( (binary_expression "(pOVar13->field_0x20 & 1) == 0" (parenthesized_expression "(pOVar13->field_0x20 & 1)" ( (binary_expression "pOVar13->field_0x20 & 1" (field_expression "pOVar13->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (expression_statement "this->vaddr_ = pOVar13->address_;" (assignment_expression "this->vaddr_ = pOVar13->address_" (field_expression "this->vaddr_" identifier -> field_identifier) = (field_expression "pOVar13->address_" identifier -> field_identifier)) ;) (expression_statement "iVar6 = (*pOVar13->_vptr_Output_data[4])(pOVar13);" (assignment_expression "iVar6 = (*pOVar13->_vptr_Output_data[4])(pOVar13)" identifier = (call_expression "(*pOVar13->_vptr_Output_data[4])(pOVar13)" (parenthesized_expression "(*pOVar13->_vptr_Output_data[4])" ( (pointer_expression "*pOVar13->_vptr_Output_data[4]" * (subscript_expression "pOVar13->_vptr_Output_data[4]" (field_expression "pOVar13->_vptr_Output_data" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pOVar13)" ( identifier )))) ;) (if_statement "if ((char)iVar6 == '\0') {\n    uVar7 = this->vaddr_;\n  }\n  else if (pOVar13->_vptr_Output_data[5] == Output_section::do_load_address) {\n    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }\n    uVar7 = pOVar13[1].offset_;\n  }\n  else {\n    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);\n    uVar7 = CONCAT44(extraout_var_00,iVar6);\n  }" if (parenthesized_expression "((char)iVar6 == '\0')" ( (binary_expression "(char)iVar6 == '\0'" (cast_expression "(char)iVar6" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar7 = this->vaddr_;\n  }" { (expression_statement "uVar7 = this->vaddr_;" (assignment_expression "uVar7 = this->vaddr_" identifier = (field_expression "this->vaddr_" identifier -> field_identifier)) ;) }) (else_clause "else if (pOVar13->_vptr_Output_data[5] == Output_section::do_load_address) {\n    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }\n    uVar7 = pOVar13[1].offset_;\n  }\n  else {\n    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);\n    uVar7 = CONCAT44(extraout_var_00,iVar6);\n  }" else (if_statement "if (pOVar13->_vptr_Output_data[5] == Output_section::do_load_address) {\n    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }\n    uVar7 = pOVar13[1].offset_;\n  }\n  else {\n    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);\n    uVar7 = CONCAT44(extraout_var_00,iVar6);\n  }" if (parenthesized_expression "(pOVar13->_vptr_Output_data[5] == Output_section::do_load_address)" ( (binary_expression "pOVar13->_vptr_Output_data[5] == Output_section" (subscript_expression "pOVar13->_vptr_Output_data[5]" (field_expression "pOVar13->_vptr_Output_data" identifier -> field_identifier) [ number_literal ]) == identifier) (ERROR "::do_load_address" : : identifier) )) (compound_statement "{\n    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }\n    uVar7 = pOVar13[1].offset_;\n  }" { (if_statement "if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }" if (parenthesized_expression "(-1 < *(char *)&pOVar13[5]._vptr_Output_data)" ( (binary_expression "-1 < *(char *)&pOVar13[5]._vptr_Output_data" number_literal < (pointer_expression "*(char *)&pOVar13[5]._vptr_Output_data" * (cast_expression "(char *)&pOVar13[5]._vptr_Output_data" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar13[5]._vptr_Output_data" & (field_expression "pOVar13[5]._vptr_Output_data" (subscript_expression "pOVar13[5]" identifier [ number_literal ]) . field_identifier))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");" (call_expression "do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "uVar7 = pOVar13[1].offset_;" (assignment_expression "uVar7 = pOVar13[1].offset_" identifier = (field_expression "pOVar13[1].offset_" (subscript_expression "pOVar13[1]" identifier [ number_literal ]) . field_identifier)) ;) }) (else_clause "else {\n    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);\n    uVar7 = CONCAT44(extraout_var_00,iVar6);\n  }" else (compound_statement "{\n    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);\n    uVar7 = CONCAT44(extraout_var_00,iVar6);\n  }" { (expression_statement "iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);" (assignment_expression "iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13)" identifier = (call_expression "(*pOVar13->_vptr_Output_data[5])(pOVar13)" (parenthesized_expression "(*pOVar13->_vptr_Output_data[5])" ( (pointer_expression "*pOVar13->_vptr_Output_data[5]" * (subscript_expression "pOVar13->_vptr_Output_data[5]" (field_expression "pOVar13->_vptr_Output_data" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pOVar13)" ( identifier )))) ;) (expression_statement "uVar7 = CONCAT44(extraout_var_00,iVar6);" (assignment_expression "uVar7 = CONCAT44(extraout_var_00,iVar6)" identifier = (call_expression "CONCAT44(extraout_var_00,iVar6)" identifier (argument_list "(extraout_var_00,iVar6)" ( identifier , identifier )))) ;) }))))) (expression_statement "this->paddr_ = uVar7;" (assignment_expression "this->paddr_ = uVar7" (field_expression "this->paddr_" identifier -> field_identifier) = identifier) ;) (expression_statement "this->field_0x2f8 = this->field_0x2f8 | 2;" (assignment_expression "this->field_0x2f8 = this->field_0x2f8 | 2" (field_expression "this->field_0x2f8" identifier -> field_identifier) = (binary_expression "this->field_0x2f8 | 2" (field_expression "this->field_0x2f8" identifier -> field_identifier) | number_literal)) ;) (if_statement "if ((pOVar13->field_0x20 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((pOVar13->field_0x20 & 4) == 0)" ( (binary_expression "(pOVar13->field_0x20 & 4) == 0" (parenthesized_expression "(pOVar13->field_0x20 & 4)" ( (binary_expression "pOVar13->field_0x20 & 4" (field_expression "pOVar13->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "this->offset_ = pOVar13->offset_;" (assignment_expression "this->offset_ = pOVar13->offset_" (field_expression "this->offset_" identifier -> field_identifier) = (field_expression "pOVar13->offset_" identifier -> field_identifier)) ;) (if_statement "if (last_data == (Output_data *)0x0) {\n    this->filesz_ = 0;\nLAB_001c2fb9:\n    if ((last_bss->field_0x20 & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");\n    }\n    uVar7 = last_bss->address_;\n    pOVar10 = last_bss;\n    if ((last_bss->field_0x20 & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((last_data->field_0x20 & 1) == 0) goto LAB_001c3220;\n    uVar7 = last_data->address_;\n    if ((last_data->field_0x20 & 2) == 0) goto LAB_001c3238;\n    this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_;\n    pOVar10 = last_data;\n    if (last_bss != (Output_data *)0x0) goto LAB_001c2fb9;\n  }" if (parenthesized_expression "(last_data == (Output_data *)0x0)" ( (binary_expression "last_data == (Output_data *)0x0" identifier == (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    this->filesz_ = 0;\nLAB_001c2fb9:\n    if ((last_bss->field_0x20 & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");\n    }\n    uVar7 = last_bss->address_;\n    pOVar10 = last_bss;\n    if ((last_bss->field_0x20 & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n  }" { (expression_statement "this->filesz_ = 0;" (assignment_expression "this->filesz_ = 0" (field_expression "this->filesz_" identifier -> field_identifier) = number_literal) ;) (labeled_statement "LAB_001c2fb9:\n    if ((last_bss->field_0x20 & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");\n    }" statement_identifier : (if_statement "if ((last_bss->field_0x20 & 1) == 0) {\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");\n    }" if (parenthesized_expression "((last_bss->field_0x20 & 1) == 0)" ( (binary_expression "(last_bss->field_0x20 & 1) == 0" (parenthesized_expression "(last_bss->field_0x20 & 1)" ( (binary_expression "last_bss->field_0x20 & 1" (field_expression "last_bss->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");\n    }" { (labeled_statement "LAB_001c3220:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xc5,"address");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;)) }))) (expression_statement "uVar7 = last_bss->address_;" (assignment_expression "uVar7 = last_bss->address_" identifier = (field_expression "last_bss->address_" identifier -> field_identifier)) ;) (expression_statement "pOVar10 = last_bss;" (assignment_expression "pOVar10 = last_bss" identifier = identifier) ;) (if_statement "if ((last_bss->field_0x20 & 2) == 0) {\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((last_bss->field_0x20 & 2) == 0)" ( (binary_expression "(last_bss->field_0x20 & 2) == 0" (parenthesized_expression "(last_bss->field_0x20 & 2)" ( (binary_expression "last_bss->field_0x20 & 2" (field_expression "last_bss->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }" { (labeled_statement "LAB_001c3238:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;)) })) }) (else_clause "else {\n    if ((last_data->field_0x20 & 1) == 0) goto LAB_001c3220;\n    uVar7 = last_data->address_;\n    if ((last_data->field_0x20 & 2) == 0) goto LAB_001c3238;\n    this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_;\n    pOVar10 = last_data;\n    if (last_bss != (Output_data *)0x0) goto LAB_001c2fb9;\n  }" else (compound_statement "{\n    if ((last_data->field_0x20 & 1) == 0) goto LAB_001c3220;\n    uVar7 = last_data->address_;\n    if ((last_data->field_0x20 & 2) == 0) goto LAB_001c3238;\n    this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_;\n    pOVar10 = last_data;\n    if (last_bss != (Output_data *)0x0) goto LAB_001c2fb9;\n  }" { (if_statement "if ((last_data->field_0x20 & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((last_data->field_0x20 & 1) == 0)" ( (binary_expression "(last_data->field_0x20 & 1) == 0" (parenthesized_expression "(last_data->field_0x20 & 1)" ( (binary_expression "last_data->field_0x20 & 1" (field_expression "last_data->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (expression_statement "uVar7 = last_data->address_;" (assignment_expression "uVar7 = last_data->address_" identifier = (field_expression "last_data->address_" identifier -> field_identifier)) ;) (if_statement "if ((last_data->field_0x20 & 2) == 0) goto LAB_001c3238;" if (parenthesized_expression "((last_data->field_0x20 & 2) == 0)" ( (binary_expression "(last_data->field_0x20 & 2) == 0" (parenthesized_expression "(last_data->field_0x20 & 2)" ( (binary_expression "last_data->field_0x20 & 2" (field_expression "last_data->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (expression_statement "this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_;" (assignment_expression "this->filesz_ = (last_data->data_size_ + uVar7) - this->vaddr_" (field_expression "this->filesz_" identifier -> field_identifier) = (binary_expression "(last_data->data_size_ + uVar7) - this->vaddr_" (parenthesized_expression "(last_data->data_size_ + uVar7)" ( (binary_expression "last_data->data_size_ + uVar7" (field_expression "last_data->data_size_" identifier -> field_identifier) + identifier) )) - (field_expression "this->vaddr_" identifier -> field_identifier))) ;) (expression_statement "pOVar10 = last_data;" (assignment_expression "pOVar10 = last_data" identifier = identifier) ;) (if_statement "if (last_bss != (Output_data *)0x0) goto LAB_001c2fb9;" if (parenthesized_expression "(last_bss != (Output_data *)0x0)" ( (binary_expression "last_bss != (Output_data *)0x0" identifier != (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001c2fb9;" goto statement_identifier ;)) }))) (expression_statement "lVar4 = pOVar10->data_size_;" (assignment_expression "lVar4 = pOVar10->data_size_" identifier = (field_expression "pOVar10->data_size_" identifier -> field_identifier)) ;) (expression_statement "this->filesz_ = this->filesz_ + (ulong)increase;" (assignment_expression "this->filesz_ = this->filesz_ + (ulong)increase" (field_expression "this->filesz_" identifier -> field_identifier) = (binary_expression "this->filesz_ + (ulong)increase" (field_expression "this->filesz_" identifier -> field_identifier) + (cast_expression "(ulong)increase" ( (type_descriptor "ulong" type_identifier) ) identifier))) ;) (expression_statement "uVar7 = uVar7 + ((ulong)increase - this->vaddr_) + lVar4;" (assignment_expression "uVar7 = uVar7 + ((ulong)increase - this->vaddr_) + lVar4" identifier = (binary_expression "uVar7 + ((ulong)increase - this->vaddr_) + lVar4" (binary_expression "uVar7 + ((ulong)increase - this->vaddr_)" identifier + (parenthesized_expression "((ulong)increase - this->vaddr_)" ( (binary_expression "(ulong)increase - this->vaddr_" (cast_expression "(ulong)increase" ( (type_descriptor "ulong" type_identifier) ) identifier) - (field_expression "this->vaddr_" identifier -> field_identifier)) ))) + identifier)) ;) (expression_statement "EVar1 = this->type_;" (assignment_expression "EVar1 = this->type_" identifier = (field_expression "this->type_" identifier -> field_identifier)) ;) (expression_statement "this->memsz_ = uVar7;" (assignment_expression "this->memsz_ = uVar7" (field_expression "this->memsz_" identifier -> field_identifier) = identifier) ;) (if_statement "if (EVar1 != 0x6474e552) goto joined_r0x001c3142;" if (parenthesized_expression "(EVar1 != 0x6474e552)" ( (binary_expression "EVar1 != 0x6474e552" identifier != number_literal) )) (goto_statement "goto joined_r0x001c3142;" goto statement_identifier ;)) (if_statement "if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)parameters);\n  }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    Target::abi_pagesize((Target *)parameters);\n  }" { comment (labeled_statement "Target::abi_pagesize((Target *)parameters);" statement_identifier : (ERROR ":" :) (expression_statement "abi_pagesize((Target *)parameters);" (call_expression "abi_pagesize((Target *)parameters)" identifier (argument_list "((Target *)parameters)" ( (cast_expression "(Target *)parameters" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) })) (expression_statement "uVar12 = (parameters->options_->max_page_size_).value;" (assignment_expression "uVar12 = (parameters->options_->max_page_size_).value" identifier = (field_expression "(parameters->options_->max_page_size_).value" (parenthesized_expression "(parameters->options_->max_page_size_)" ( (field_expression "parameters->options_->max_page_size_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar8 = this->vaddr_ + uVar7;" (assignment_expression "uVar8 = this->vaddr_ + uVar7" identifier = (binary_expression "this->vaddr_ + uVar7" (field_expression "this->vaddr_" identifier -> field_identifier) + identifier)) ;) (if_statement "if (uVar12 == 0) {\n    uVar12 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28);\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\n      if (uVar12 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (uVar12 != 0) goto LAB_001c3125;\n  }\n  else {\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\nLAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;\nLAB_001c31b2:\n      EVar1 = this->type_;\n      this->memsz_ = uVar8 - this->vaddr_;\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar12 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28);\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\n      if (uVar12 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (uVar12 != 0) goto LAB_001c3125;\n  }" { (expression_statement "uVar12 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28);" (assignment_expression "uVar12 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28)" identifier = (pointer_expression "*(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28)" * (cast_expression "(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(parameters->target_ + 8) + 0x28)" ( (binary_expression "*(long *)(parameters->target_ + 8) + 0x28" (pointer_expression "*(long *)(parameters->target_ + 8)" * (cast_expression "(long *)(parameters->target_ + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(parameters->target_ + 8)" ( (binary_expression "parameters->target_ + 8" (field_expression "parameters->target_" identifier -> field_identifier) + number_literal) )))) + number_literal) ))))) ;) (ERROR "bVar5 = Parameters::" (assignment_expression "bVar5 = Parameters" identifier = identifier) : :) (expression_statement "incremental_update(parameters);" (call_expression "incremental_update(parameters)" identifier (argument_list "(parameters)" ( identifier ))) ;) (if_statement "if (bVar5) {\n      if (uVar12 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n      if (uVar12 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }" { (if_statement "if (uVar12 != 0) goto LAB_001c3210;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c3210;" goto statement_identifier ;)) (goto_statement "goto LAB_001c31b2;" goto statement_identifier ;) })) (if_statement "if (uVar12 != 0) goto LAB_001c3125;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c3125;" goto statement_identifier ;)) }) (else_clause "else {\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\nLAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;\nLAB_001c31b2:\n      EVar1 = this->type_;\n      this->memsz_ = uVar8 - this->vaddr_;\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" else (compound_statement "{\n    bVar5 = Parameters::incremental_update(parameters);\n    if (bVar5) {\nLAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;\nLAB_001c31b2:\n      EVar1 = this->type_;\n      this->memsz_ = uVar8 - this->vaddr_;\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" { (ERROR "bVar5 = Parameters::" (assignment_expression "bVar5 = Parameters" identifier = identifier) : :) (expression_statement "incremental_update(parameters);" (call_expression "incremental_update(parameters)" identifier (argument_list "(parameters)" ( identifier ))) ;) (if_statement "if (bVar5) {\nLAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;\nLAB_001c31b2:\n      EVar1 = this->type_;\n      this->memsz_ = uVar8 - this->vaddr_;\n      goto joined_r0x001c3142;\n    }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\nLAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;\nLAB_001c31b2:\n      EVar1 = this->type_;\n      this->memsz_ = uVar8 - this->vaddr_;\n      goto joined_r0x001c3142;\n    }" { (labeled_statement "LAB_001c3210:\n      uVar8 = (uVar12 - 1) + uVar8 & -uVar12;" statement_identifier : (expression_statement "uVar8 = (uVar12 - 1) + uVar8 & -uVar12;" (assignment_expression "uVar8 = (uVar12 - 1) + uVar8 & -uVar12" identifier = (binary_expression "(uVar12 - 1) + uVar8 & -uVar12" (binary_expression "(uVar12 - 1) + uVar8" (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )) + identifier) & (unary_expression "-uVar12" - identifier))) ;)) (labeled_statement "LAB_001c31b2:\n      EVar1 = this->type_;" statement_identifier : (expression_statement "EVar1 = this->type_;" (assignment_expression "EVar1 = this->type_" identifier = (field_expression "this->type_" identifier -> field_identifier)) ;)) (expression_statement "this->memsz_ = uVar8 - this->vaddr_;" (assignment_expression "this->memsz_ = uVar8 - this->vaddr_" (field_expression "this->memsz_" identifier -> field_identifier) = (binary_expression "uVar8 - this->vaddr_" identifier - (field_expression "this->vaddr_" identifier -> field_identifier))) ;) (goto_statement "goto joined_r0x001c3142;" goto statement_identifier ;) })) (labeled_statement "LAB_001c3125:\n    if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }" statement_identifier : (if_statement "if ((-uVar12 & (uVar12 - 1) + uVar8) != uVar8) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }" if (parenthesized_expression "((-uVar12 & (uVar12 - 1) + uVar8) != uVar8)" ( (binary_expression "(-uVar12 & (uVar12 - 1) + uVar8) != uVar8" (parenthesized_expression "(-uVar12 & (uVar12 - 1) + uVar8)" ( (binary_expression "-uVar12 & (uVar12 - 1) + uVar8" (unary_expression "-uVar12" - identifier) & (binary_expression "(uVar12 - 1) + uVar8" (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )) + identifier)) )) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x12a8,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x12a8,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) }))) }))) (expression_statement "EVar1 = this->type_;" (assignment_expression "EVar1 = this->type_" identifier = (field_expression "this->type_" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x001c3142:\n  if (EVar1 != 7) {\n    return;\n  }" statement_identifier : (if_statement "if (EVar1 != 7) {\n    return;\n  }" if (parenthesized_expression "(EVar1 != 7)" ( (binary_expression "EVar1 != 7" identifier != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "uVar7 = maximum_alignment(this);" (assignment_expression "uVar7 = maximum_alignment(this)" identifier = (call_expression "maximum_alignment(this)" identifier (argument_list "(this)" ( identifier )))) ;) (if_statement "if (uVar7 == 0) {\n    uVar8 = this->memsz_;\n  }\n  else {\n    if (this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7;\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar8 = this->memsz_;\n  }" { (expression_statement "uVar8 = this->memsz_;" (assignment_expression "uVar8 = this->memsz_" identifier = (field_expression "this->memsz_" identifier -> field_identifier)) ;) }) (else_clause "else {\n    if (this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7;\n  }" else (compound_statement "{\n    if (this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7;\n  }" { (if_statement "if (this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");\n    }" if (parenthesized_expression "(this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7))" ( (binary_expression "this->vaddr_ != ((this->vaddr_ - 1) + uVar7 & -uVar7)" (field_expression "this->vaddr_" identifier -> field_identifier) != (parenthesized_expression "((this->vaddr_ - 1) + uVar7 & -uVar7)" ( (binary_expression "(this->vaddr_ - 1) + uVar7 & -uVar7" (binary_expression "(this->vaddr_ - 1) + uVar7" (parenthesized_expression "(this->vaddr_ - 1)" ( (binary_expression "this->vaddr_ - 1" (field_expression "this->vaddr_" identifier -> field_identifier) - number_literal) )) + identifier) & (unary_expression "-uVar7" - identifier)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x12b1,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x12b1,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7;" (assignment_expression "uVar8 = (uVar7 - 1) + this->memsz_ & -uVar7" identifier = (binary_expression "(uVar7 - 1) + this->memsz_ & -uVar7" (binary_expression "(uVar7 - 1) + this->memsz_" (parenthesized_expression "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) )) + (field_expression "this->memsz_" identifier -> field_identifier)) & (unary_expression "-uVar7" - identifier))) ;) }))) (expression_statement "this->memsz_ = uVar8;" (assignment_expression "this->memsz_ = uVar8" (field_expression "this->memsz_" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001c2df0(long *param_1,uint param_2)\n\n{\n  int iVar1;\n  char cVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 *puVar8;\n  long *plVar9;\n  long *plVar10;\n  long local_48;\n  long local_40 [2];\n  \n  if ((int)param_1[0x5e] == 1) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }\n  plVar7 = (long *)*param_1;\n  if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }\n  local_48 = 0;\n  local_40[0] = 0;\n  plVar10 = (long *)0x0;\nLAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);\n  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;\n  param_1[0x57] = plVar9[1];\n  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);\n  if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }\n  param_1[0x58] = lVar3;\n  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n  if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  param_1[0x5c] = plVar9[3];\n  if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }\n  lVar4 = *(long *)(lVar4 + 0x10);\n  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;\n  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;\n  iVar1 = (int)param_1[0x5e];\n  param_1[0x59] = lVar4;\n  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }\n  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);\n  uVar5 = param_1[0x57] + lVar4;\n  if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  iVar1 = (int)param_1[0x5e];\njoined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }\n  lVar3 = FUN_001c2530(param_1);\n  if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }\n  param_1[0x59] = uVar5;\n  return;\n}\n\n" (function_definition "void FUN_001c2df0(long *param_1,uint param_2)\n\n{\n  int iVar1;\n  char cVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 *puVar8;\n  long *plVar9;\n  long *plVar10;\n  long local_48;\n  long local_40 [2];\n  \n  if ((int)param_1[0x5e] == 1) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }\n  plVar7 = (long *)*param_1;\n  if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }\n  local_48 = 0;\n  local_40[0] = 0;\n  plVar10 = (long *)0x0;\nLAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);\n  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;\n  param_1[0x57] = plVar9[1];\n  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);\n  if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }\n  param_1[0x58] = lVar3;\n  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n  if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  param_1[0x5c] = plVar9[3];\n  if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }\n  lVar4 = *(long *)(lVar4 + 0x10);\n  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;\n  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;\n  iVar1 = (int)param_1[0x5e];\n  param_1[0x59] = lVar4;\n  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }\n  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);\n  uVar5 = param_1[0x57] + lVar4;\n  if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  iVar1 = (int)param_1[0x5e];\njoined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }\n  lVar3 = FUN_001c2530(param_1);\n  if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }\n  param_1[0x59] = uVar5;\n  return;\n}" primitive_type (function_declarator "FUN_001c2df0(long *param_1,uint param_2)" identifier (parameter_list "(long *param_1,uint param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 *puVar8;\n  long *plVar9;\n  long *plVar10;\n  long local_48;\n  long local_40 [2];\n  \n  if ((int)param_1[0x5e] == 1) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }\n  plVar7 = (long *)*param_1;\n  if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }\n  local_48 = 0;\n  local_40[0] = 0;\n  plVar10 = (long *)0x0;\nLAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);\n  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;\n  param_1[0x57] = plVar9[1];\n  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);\n  if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }\n  param_1[0x58] = lVar3;\n  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n  if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  param_1[0x5c] = plVar9[3];\n  if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }\n  lVar4 = *(long *)(lVar4 + 0x10);\n  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;\n  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;\n  iVar1 = (int)param_1[0x5e];\n  param_1[0x59] = lVar4;\n  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }\n  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);\n  uVar5 = param_1[0x57] + lVar4;\n  if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  iVar1 = (int)param_1[0x5e];\njoined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }\n  lVar3 = FUN_001c2530(param_1);\n  if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }\n  param_1[0x59] = uVar5;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (if_statement "if ((int)param_1[0x5e] == 1) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }" if (parenthesized_expression "((int)param_1[0x5e] == 1)" ( (binary_expression "(int)param_1[0x5e] == 1" (cast_expression "(int)param_1[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x5e]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x1255,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x5f) & 2) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x5f) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x5f) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x5f) & 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x1257,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "plVar7 = (long *)*param_1;" (assignment_expression "plVar7 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }" if (parenthesized_expression "(plVar7 == (long *)param_1[1])" ( (binary_expression "plVar7 == (long *)param_1[1]" identifier == (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }" { (if_statement "if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }" { (expression_statement "param_1[0x57] = 0;" (assignment_expression "param_1[0x57] = 0" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x58] = 0;" (assignment_expression "param_1[0x58] = 0" (subscript_expression "param_1[0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;" (assignment_expression "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "param_1[0x59] = 0;" (assignment_expression "param_1[0x59] = 0" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5b] = 0;" (assignment_expression "param_1[0x5b] = 0" (subscript_expression "param_1[0x5b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5c] = 0;" (assignment_expression "param_1[0x5c] = 0" (subscript_expression "param_1[0x5c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x125f,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_40[0] = 0;" (assignment_expression "local_40[0] = 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar10 = (long *)0x0;" (assignment_expression "plVar10 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);" statement_identifier : (do_statement "do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);" do (compound_statement "{\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  }" { (expression_statement "plVar6 = (long *)*plVar7;" (assignment_expression "plVar6 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (expression_statement "plVar9 = plVar6;" (assignment_expression "plVar9 = plVar6" identifier = identifier) ;) (if_statement "if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }" { (if_statement "if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(plVar6 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(plVar6 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar6 + 4) & 1)" ( (binary_expression "*(byte *)(plVar6 + 4) & 1" (pointer_expression "*(byte *)(plVar6 + 4)" * (cast_expression "(byte *)(plVar6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar6 + 4)" ( (binary_expression "plVar6 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(plVar10 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(plVar10 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar10 + 4) & 1)" ( (binary_expression "*(byte *)(plVar10 + 4) & 1" (pointer_expression "*(byte *)(plVar10 + 4)" * (cast_expression "(byte *)(plVar10 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 4)" ( (binary_expression "plVar10 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }" if (parenthesized_expression "(((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1]))" ( (binary_expression "((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])" (parenthesized_expression "((ulong)plVar10[1] <= (ulong)plVar6[1])" ( (binary_expression "(ulong)plVar10[1] <= (ulong)plVar6[1]" (cast_expression "(ulong)plVar10[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar10[1]" identifier [ number_literal ])) <= (cast_expression "(ulong)plVar6[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar6[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(plVar9 = plVar10, plVar10[1] == plVar6[1])" ( (comma_expression "plVar9 = plVar10, plVar10[1] == plVar6[1]" (assignment_expression "plVar9 = plVar10" identifier = identifier) , (binary_expression "plVar10[1] == plVar6[1]" (subscript_expression "plVar10[1]" identifier [ number_literal ]) == (subscript_expression "plVar6[1]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }" { (if_statement "if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;" if (parenthesized_expression "(((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))" ( (binary_expression "((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0)" (parenthesized_expression "((*(byte *)(plVar6 + 4) & 2) == 0)" ( (binary_expression "(*(byte *)(plVar6 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar6 + 4) & 2)" ( (binary_expression "*(byte *)(plVar6 + 4) & 2" (pointer_expression "*(byte *)(plVar6 + 4)" * (cast_expression "(byte *)(plVar6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar6 + 4)" ( (binary_expression "plVar6 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(plVar10 + 4) & 2) == 0)" ( (binary_expression "(*(byte *)(plVar10 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar10 + 4) & 2)" ( (binary_expression "*(byte *)(plVar10 + 4) & 2" (pointer_expression "*(byte *)(plVar10 + 4)" * (cast_expression "(byte *)(plVar10 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 4)" ( (binary_expression "plVar10 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (if_statement "if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }" if (parenthesized_expression "(plVar6[2] < plVar10[2])" ( (binary_expression "plVar6[2] < plVar10[2]" (subscript_expression "plVar6[2]" identifier [ number_literal ]) < (subscript_expression "plVar10[2]" identifier [ number_literal ])) )) (compound_statement "{\n          plVar9 = plVar6;\n        }" { (expression_statement "plVar9 = plVar6;" (assignment_expression "plVar9 = plVar6" identifier = identifier) ;) })) })) })) (expression_statement "cVar2 = (**(code **)(*plVar6 + 0x30))();" (assignment_expression "cVar2 = (**(code **)(*plVar6 + 0x30))()" identifier = (call_expression "(**(code **)(*plVar6 + 0x30))()" (parenthesized_expression "(**(code **)(*plVar6 + 0x30))" ( (pointer_expression "**(code **)(*plVar6 + 0x30)" * (pointer_expression "*(code **)(*plVar6 + 0x30)" * (cast_expression "(code **)(*plVar6 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x30)" ( (binary_expression "*plVar6 + 0x30" (pointer_expression "*plVar6" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "plVar6 = &local_48;" (assignment_expression "plVar6 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }" if (parenthesized_expression "((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8))" ( (binary_expression "(cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)" (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)" ( (comma_expression "lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8" (assignment_expression "lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))()" identifier = (call_expression "(**(code **)(*(long *)*plVar7 + 0x48))()" (parenthesized_expression "(**(code **)(*(long *)*plVar7 + 0x48))" ( (pointer_expression "**(code **)(*(long *)*plVar7 + 0x48)" * (pointer_expression "*(code **)(*(long *)*plVar7 + 0x48)" * (cast_expression "(code **)(*(long *)*plVar7 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)*plVar7 + 0x48)" ( (binary_expression "*(long *)*plVar7 + 0x48" (pointer_expression "*(long *)*plVar7" * (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) + number_literal) ))))) )) (argument_list "()" ( )))) , (comma_expression "plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8" (assignment_expression "plVar6 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) , (binary_expression "*(int *)(lVar3 + 0x6c) == 8" (pointer_expression "*(int *)(lVar3 + 0x6c)" * (cast_expression "(int *)(lVar3 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x6c)" ( (binary_expression "lVar3 + 0x6c" identifier + number_literal) )))) == number_literal))) ))) )) (compound_statement "{\n      plVar6 = local_40;\n    }" { (expression_statement "plVar6 = local_40;" (assignment_expression "plVar6 = local_40" identifier = identifier) ;) })) (expression_statement "lVar3 = *plVar6;" (assignment_expression "lVar3 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar4 = *plVar7;" (assignment_expression "lVar4 = *plVar7" identifier = (pointer_expression "*plVar7" * identifier)) ;) (expression_statement "plVar10 = plVar9;" (assignment_expression "plVar10 = plVar9" identifier = identifier) ;) (if_statement "if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }" { (if_statement "if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(lVar4 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(lVar4 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar4 + 0x20) & 1" (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar3 + 0x20) & 1" (pointer_expression "*(byte *)(lVar3 + 0x20)" * (cast_expression "(byte *)(lVar3 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (if_statement "if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }" if (parenthesized_expression "(*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8))" ( (binary_expression "*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)" (pointer_expression "*(ulong *)(lVar4 + 8)" * (cast_expression "(ulong *)(lVar4 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) <= (pointer_expression "*(ulong *)(lVar3 + 8)" * (cast_expression "(ulong *)(lVar3 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }" { (if_statement "if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }" if (parenthesized_expression "(*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8))" ( (binary_expression "*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)" (pointer_expression "*(ulong *)(lVar4 + 8)" * (cast_expression "(ulong *)(lVar4 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))) == (pointer_expression "*(ulong *)(lVar3 + 8)" * (cast_expression "(ulong *)(lVar3 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }" { (if_statement "if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;" if (parenthesized_expression "(((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))" ( (binary_expression "((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0)" (parenthesized_expression "((*(byte *)(lVar4 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(lVar4 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 2)" ( (binary_expression "*(byte *)(lVar4 + 0x20) & 2" (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 2)" ( (binary_expression "*(byte *)(lVar3 + 0x20) & 2" (pointer_expression "*(byte *)(lVar3 + 0x20)" * (cast_expression "(byte *)(lVar3 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (if_statement "if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;" if (parenthesized_expression "(*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10))" ( (binary_expression "*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)" (pointer_expression "*(long *)(lVar3 + 0x10)" * (cast_expression "(long *)(lVar3 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) )))) < (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) )) (goto_statement "goto LAB_001c2f10;" goto statement_identifier ;)) })) (expression_statement "plVar7 = plVar7 + 1;" (assignment_expression "plVar7 = plVar7 + 1" identifier = (binary_expression "plVar7 + 1" identifier + number_literal)) ;) (if_statement "if ((long *)param_1[1] == plVar7) break;" if (parenthesized_expression "((long *)param_1[1] == plVar7)" ( (binary_expression "(long *)param_1[1] == plVar7" (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) == identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_001c2eb7;" goto statement_identifier ;) })) })) (labeled_statement "LAB_001c2f10:\n    *plVar6 = lVar4;" statement_identifier : (expression_statement "*plVar6 = lVar4;" (assignment_expression "*plVar6 = lVar4" (pointer_expression "*plVar6" * identifier) = identifier) ;)) (expression_statement "plVar7 = plVar7 + 1;" (assignment_expression "plVar7 = plVar7 + 1" identifier = (binary_expression "plVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((long *)param_1[1] != plVar7)" ( (binary_expression "(long *)param_1[1] != plVar7" (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) != identifier) )) ;)) (if_statement "if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(plVar9 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(plVar9 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar9 + 4) & 1)" ( (binary_expression "*(byte *)(plVar9 + 4) & 1" (pointer_expression "*(byte *)(plVar9 + 4)" * (cast_expression "(byte *)(plVar9 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9 + 4)" ( (binary_expression "plVar9 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (expression_statement "param_1[0x57] = plVar9[1];" (assignment_expression "param_1[0x57] = plVar9[1]" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) (expression_statement "cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);" (assignment_expression "cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9)" identifier = (call_expression "(**(code **)(*plVar9 + 0x20))(plVar9)" (parenthesized_expression "(**(code **)(*plVar9 + 0x20))" ( (pointer_expression "**(code **)(*plVar9 + 0x20)" * (pointer_expression "*(code **)(*plVar9 + 0x20)" * (cast_expression "(code **)(*plVar9 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar9 + 0x20)" ( (binary_expression "*plVar9 + 0x20" (pointer_expression "*plVar9" * identifier) + number_literal) ))))) )) (argument_list "(plVar9)" ( identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar3 = param_1[0x57];\n  }" { (expression_statement "lVar3 = param_1[0x57];" (assignment_expression "lVar3 = param_1[0x57]" identifier = (subscript_expression "param_1[0x57]" identifier [ number_literal ])) ;) }) (else_clause "else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" else (if_statement "if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" if (parenthesized_expression "(*(code **)(*plVar9 + 0x28) == FUN_001926f0)" ( (binary_expression "*(code **)(*plVar9 + 0x28) == FUN_001926f0" (pointer_expression "*(code **)(*plVar9 + 0x28)" * (cast_expression "(code **)(*plVar9 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar9 + 0x28)" ( (binary_expression "*plVar9 + 0x28" (pointer_expression "*plVar9" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }" { (if_statement "if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }" if (parenthesized_expression "(-1 < (char)plVar9[0x19])" ( (binary_expression "-1 < (char)plVar9[0x19]" number_literal < (cast_expression "(char)plVar9[0x19]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "plVar9[0x19]" identifier [ number_literal ]))) )) (compound_statement "{\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }" { (expression_statement "FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "lVar3 = plVar9[8];" (assignment_expression "lVar3 = plVar9[8]" identifier = (subscript_expression "plVar9[8]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" else (compound_statement "{\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" { (expression_statement "lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);" (assignment_expression "lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9)" identifier = (call_expression "(**(code **)(*plVar9 + 0x28))(plVar9)" (parenthesized_expression "(**(code **)(*plVar9 + 0x28))" ( (pointer_expression "**(code **)(*plVar9 + 0x28)" * (pointer_expression "*(code **)(*plVar9 + 0x28)" * (cast_expression "(code **)(*plVar9 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar9 + 0x28)" ( (binary_expression "*plVar9 + 0x28" (pointer_expression "*plVar9" * identifier) + number_literal) ))))) )) (argument_list "(plVar9)" ( identifier )))) ;) }))))) (expression_statement "param_1[0x58] = lVar3;" (assignment_expression "param_1[0x58] = lVar3" (subscript_expression "param_1[0x58]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;" (assignment_expression "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" * (cast_expression "(byte *)(param_1 + 0x5f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5f)" ( (binary_expression "param_1 + 0x5f" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((*(byte *)(plVar9 + 4) & 4) == 0)" ( (binary_expression "(*(byte *)(plVar9 + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(plVar9 + 4) & 4)" ( (binary_expression "*(byte *)(plVar9 + 4) & 4" (pointer_expression "*(byte *)(plVar9 + 4)" * (cast_expression "(byte *)(plVar9 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar9 + 4)" ( (binary_expression "plVar9 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })) (expression_statement "param_1[0x5c] = plVar9[3];" (assignment_expression "param_1[0x5c] = plVar9[3]" (subscript_expression "param_1[0x5c]" identifier [ number_literal ]) = (subscript_expression "plVar9[3]" identifier [ number_literal ])) ;) (if_statement "if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" if (parenthesized_expression "(local_48 == 0)" ( (binary_expression "local_48 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }" { (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" statement_identifier : (if_statement "if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" if (parenthesized_expression "((*(byte *)(local_40[0] + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(local_40[0] + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(local_40[0] + 0x20) & 1)" ( (binary_expression "*(byte *)(local_40[0] + 0x20) & 1" (pointer_expression "*(byte *)(local_40[0] + 0x20)" * (cast_expression "(byte *)(local_40[0] + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + 0x20)" ( (binary_expression "local_40[0] + 0x20" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" { (labeled_statement "LAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");" statement_identifier : (expression_statement "FUN_0016cdf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;)) }))) (expression_statement "lVar3 = *(long *)(local_40[0] + 8);" (assignment_expression "lVar3 = *(long *)(local_40[0] + 8)" identifier = (pointer_expression "*(long *)(local_40[0] + 8)" * (cast_expression "(long *)(local_40[0] + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + 8)" ( (binary_expression "local_40[0] + 8" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "lVar4 = local_40[0];" (assignment_expression "lVar4 = local_40[0]" identifier = (subscript_expression "local_40[0]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((*(byte *)(local_40[0] + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(local_40[0] + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(local_40[0] + 0x20) & 2)" ( (binary_expression "*(byte *)(local_40[0] + 0x20) & 2" (pointer_expression "*(byte *)(local_40[0] + 0x20)" * (cast_expression "(byte *)(local_40[0] + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + 0x20)" ( (binary_expression "local_40[0] + 0x20" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" { (labeled_statement "LAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" statement_identifier : (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;)) })) }) (else_clause "else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" else (compound_statement "{\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" { (if_statement "if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;" if (parenthesized_expression "((*(byte *)(local_48 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(local_48 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(local_48 + 0x20) & 1)" ( (binary_expression "*(byte *)(local_48 + 0x20) & 1" (pointer_expression "*(byte *)(local_48 + 0x20)" * (cast_expression "(byte *)(local_48 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0x20)" ( (binary_expression "local_48 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3220;" goto statement_identifier ;)) (expression_statement "lVar3 = *(long *)(local_48 + 8);" (assignment_expression "lVar3 = *(long *)(local_48 + 8)" identifier = (pointer_expression "*(long *)(local_48 + 8)" * (cast_expression "(long *)(local_48 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 8)" ( (binary_expression "local_48 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;" if (parenthesized_expression "((*(byte *)(local_48 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(local_48 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(local_48 + 0x20) & 2)" ( (binary_expression "*(byte *)(local_48 + 0x20) & 2" (pointer_expression "*(byte *)(local_48 + 0x20)" * (cast_expression "(byte *)(local_48 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0x20)" ( (binary_expression "local_48 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001c3238;" goto statement_identifier ;)) (expression_statement "param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];" (assignment_expression "param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57]" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = (binary_expression "(*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57]" (parenthesized_expression "(*(long *)(local_48 + 0x10) + lVar3)" ( (binary_expression "*(long *)(local_48 + 0x10) + lVar3" (pointer_expression "*(long *)(local_48 + 0x10)" * (cast_expression "(long *)(local_48 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + 0x10)" ( (binary_expression "local_48 + 0x10" identifier + number_literal) )))) + identifier) )) - (subscript_expression "param_1[0x57]" identifier [ number_literal ]))) ;) (expression_statement "lVar4 = local_48;" (assignment_expression "lVar4 = local_48" identifier = identifier) ;) (if_statement "if (local_40[0] != 0) goto LAB_001c2fb9;" if (parenthesized_expression "(local_40[0] != 0)" ( (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_001c2fb9;" goto statement_identifier ;)) }))) (expression_statement "lVar4 = *(long *)(lVar4 + 0x10);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x10)" identifier = (pointer_expression "*(long *)(lVar4 + 0x10)" * (cast_expression "(long *)(lVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_1[0x5d] = param_1[0x5d] + (ulong)param_2;" (assignment_expression "param_1[0x5d] = param_1[0x5d] + (ulong)param_2" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = (binary_expression "param_1[0x5d] + (ulong)param_2" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) + (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier))) ;) (expression_statement "lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;" (assignment_expression "lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4" identifier = (binary_expression "lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4" (binary_expression "lVar3 + ((ulong)param_2 - param_1[0x57])" identifier + (parenthesized_expression "((ulong)param_2 - param_1[0x57])" ( (binary_expression "(ulong)param_2 - param_1[0x57]" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) - (subscript_expression "param_1[0x57]" identifier [ number_literal ])) ))) + identifier)) ;) (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" identifier = (cast_expression "(int)param_1[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x5e]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0x59] = lVar4;" (assignment_expression "param_1[0x59] = lVar4" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar1 != 0x6474e552) goto joined_r0x001c3142;" if (parenthesized_expression "(iVar1 != 0x6474e552)" ( (binary_expression "iVar1 != 0x6474e552" identifier != number_literal) )) (goto_statement "goto joined_r0x001c3142;" goto statement_identifier ;)) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x18)" ( (binary_expression "PTR_DAT_003be6b0 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0016cdf0("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }" { (expression_statement "plVar7 = (long *)PTR_DAT_003be6b0;" (assignment_expression "plVar7 = (long *)PTR_DAT_003be6b0" identifier = (cast_expression "(long *)PTR_DAT_003be6b0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "FUN_001bf730();" (call_expression "FUN_001bf730()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }" if (parenthesized_expression "((int)plVar7[0x5e] == 7)" ( (binary_expression "(int)plVar7[0x5e] == 7" (cast_expression "(int)plVar7[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar7[0x5e]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }" { (expression_statement "puVar8 = (undefined8 *)*plVar7;" (assignment_expression "puVar8 = (undefined8 *)*plVar7" identifier = (cast_expression "(undefined8 *)*plVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }" if (parenthesized_expression "(puVar8 != (undefined8 *)plVar7[1])" ( (binary_expression "puVar8 != (undefined8 *)plVar7[1]" identifier != (cast_expression "(undefined8 *)plVar7[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) )) (compound_statement "{\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }" { (do_statement "do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);" do (compound_statement "{\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        }" { (expression_statement "plVar10 = (long *)*puVar8;" (assignment_expression "plVar10 = (long *)*puVar8" identifier = (cast_expression "(long *)*puVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "(**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);" (call_expression "(**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57])" (parenthesized_expression "(**(code **)(*plVar10 + 0x88))" ( (pointer_expression "**(code **)(*plVar10 + 0x88)" * (pointer_expression "*(code **)(*plVar10 + 0x88)" * (cast_expression "(code **)(*plVar10 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar10 + 0x88)" ( (binary_expression "*plVar10 + 0x88" (pointer_expression "*plVar10" * identifier) + number_literal) ))))) )) (argument_list "(plVar10,plVar7[0x57])" ( identifier , (subscript_expression "plVar7[0x57]" identifier [ number_literal ]) ))) ;) }) while (parenthesized_expression "((undefined8 *)plVar7[1] != puVar8)" ( (binary_expression "(undefined8 *)plVar7[1] != puVar8" (cast_expression "(undefined8 *)plVar7[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ])) != identifier) )) ;) })) (return_statement "return;" return ;) })) (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets")" identifier (argument_list "("../../gold/output.cc",0x12bb,"set_tls_offsets")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_tls_offsets"" " string_content ") ))) ;) })) (expression_statement "lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);" (assignment_expression "lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" identifier = (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar5 = param_1[0x57] + lVar4;" (assignment_expression "uVar5 = param_1[0x57] + lVar4" identifier = (binary_expression "param_1[0x57] + lVar4" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) + identifier)) ;) (if_statement "if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }" { (expression_statement "lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);" (assignment_expression "lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" identifier = (pointer_expression "*(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" * (cast_expression "(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28" (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x18)" ( (binary_expression "PTR_DAT_003be6b0 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "cVar2 = FUN_001ee080();" (assignment_expression "cVar2 = FUN_001ee080()" identifier = (call_expression "FUN_001ee080()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }" { (if_statement "if (lVar3 != 0) goto LAB_001c3210;" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c3210;" goto statement_identifier ;)) (goto_statement "goto LAB_001c31b2;" goto statement_identifier ;) })) (if_statement "if (lVar3 != 0) goto LAB_001c3125;" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001c3125;" goto statement_identifier ;)) }) (else_clause "else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" else (compound_statement "{\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" { (expression_statement "cVar2 = FUN_001ee080();" (assignment_expression "cVar2 = FUN_001ee080()" identifier = (call_expression "FUN_001ee080()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }" { (labeled_statement "LAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;" statement_identifier : (expression_statement "uVar5 = lVar3 + -1 + uVar5 & -lVar3;" (assignment_expression "uVar5 = lVar3 + -1 + uVar5 & -lVar3" identifier = (binary_expression "lVar3 + -1 + uVar5 & -lVar3" (binary_expression "lVar3 + -1 + uVar5" (binary_expression "lVar3 + -1" identifier + number_literal) + identifier) & (unary_expression "-lVar3" - identifier))) ;)) (labeled_statement "LAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];" statement_identifier : (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" identifier = (cast_expression "(int)param_1[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x5e]" identifier [ number_literal ]))) ;)) (expression_statement "param_1[0x59] = uVar5 - param_1[0x57];" (assignment_expression "param_1[0x59] = uVar5 - param_1[0x57]" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = (binary_expression "uVar5 - param_1[0x57]" identifier - (subscript_expression "param_1[0x57]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x001c3142;" goto statement_identifier ;) })) (labeled_statement "LAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" statement_identifier : (if_statement "if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" if (parenthesized_expression "((-lVar3 & lVar3 + -1 + uVar5) != uVar5)" ( (binary_expression "(-lVar3 & lVar3 + -1 + uVar5) != uVar5" (parenthesized_expression "(-lVar3 & lVar3 + -1 + uVar5)" ( (binary_expression "-lVar3 & lVar3 + -1 + uVar5" (unary_expression "-lVar3" - identifier) & (binary_expression "lVar3 + -1 + uVar5" (binary_expression "lVar3 + -1" identifier + number_literal) + identifier)) )) != identifier) )) (compound_statement "{\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" { (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x12a8,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) }))) }))) (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" identifier = (cast_expression "(int)param_1[0x5e]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x5e]" identifier [ number_literal ]))) ;) (labeled_statement "joined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar1 != 7) {\n    return;\n  }" if (parenthesized_expression "(iVar1 != 7)" ( (binary_expression "iVar1 != 7" identifier != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "lVar3 = FUN_001c2530(param_1);" (assignment_expression "lVar3 = FUN_001c2530(param_1)" identifier = (call_expression "FUN_001c2530(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = param_1[0x59];\n  }" { (expression_statement "uVar5 = param_1[0x59];" (assignment_expression "uVar5 = param_1[0x59]" identifier = (subscript_expression "param_1[0x59]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" else (compound_statement "{\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" { (if_statement "if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }" if (parenthesized_expression "(param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3))" ( (binary_expression "param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) != (parenthesized_expression "((param_1[0x57] - 1U) + lVar3 & -lVar3)" ( (binary_expression "(param_1[0x57] - 1U) + lVar3 & -lVar3" (binary_expression "(param_1[0x57] - 1U) + lVar3" (parenthesized_expression "(param_1[0x57] - 1U)" ( (binary_expression "param_1[0x57] - 1U" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) - number_literal) )) + identifier) & (unary_expression "-lVar3" - identifier)) ))) )) (compound_statement "{\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }" { (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset")" identifier (argument_list "("../../gold/output.cc",0x12b1,"set_offset")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""set_offset"" " string_content ") ))) ;) })) (expression_statement "uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;" (assignment_expression "uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3" identifier = (binary_expression "lVar3 + -1 + param_1[0x59] & -lVar3" (binary_expression "lVar3 + -1 + param_1[0x59]" (binary_expression "lVar3 + -1" identifier + number_literal) + (subscript_expression "param_1[0x59]" identifier [ number_literal ])) & (unary_expression "-lVar3" - identifier))) ;) }))) (expression_statement "param_1[0x59] = uVar5;" (assignment_expression "param_1[0x59] = uVar5" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) == (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (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 * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) ))))) )) (argument_list ( )))) , (comma_expression (assignment_expression IDENT = (pointer_expression & IDENT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (break_statement break ;)) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (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) )))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )) - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (subscript_expression IDENT [ LIT ])) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (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 IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) })) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + LIT) + IDENT) & (unary_expression - IDENT))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & (binary_expression (binary_expression IDENT + LIT) + IDENT)) )) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) }))) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )) + IDENT) & (unary_expression - IDENT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + LIT) + (subscript_expression IDENT [ LIT ])) & (unary_expression - IDENT))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_001c2df0(long *param_1,uint param_2)\n\n{\n  int iVar1;\n  char cVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 *puVar8;\n  long *plVar9;\n  long *plVar10;\n  long local_48;\n  long local_40 [2];\n  \n  if ((int)param_1[0x5e] == 1) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }\n  plVar7 = (long *)*param_1;\n  if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }\n  local_48 = 0;\n  local_40[0] = 0;\n  plVar10 = (long *)0x0;\nLAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);\n  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;\n  param_1[0x57] = plVar9[1];\n  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);\n  if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }\n  param_1[0x58] = lVar3;\n  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n  if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  param_1[0x5c] = plVar9[3];\n  if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }\n  lVar4 = *(long *)(lVar4 + 0x10);\n  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;\n  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;\n  iVar1 = (int)param_1[0x5e];\n  param_1[0x59] = lVar4;\n  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }\n  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);\n  uVar5 = param_1[0x57] + lVar4;\n  if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  iVar1 = (int)param_1[0x5e];\njoined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }\n  lVar3 = FUN_001c2530(param_1);\n  if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }\n  param_1[0x59] = uVar5;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001c2df0(long *param_1,uint param_2)" (identifier "FUN_001c2df0") (parameter_list "(long *param_1,uint param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 *puVar8;\n  long *plVar9;\n  long *plVar10;\n  long local_48;\n  long local_40 [2];\n  \n  if ((int)param_1[0x5e] == 1) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }\n  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }\n  plVar7 = (long *)*param_1;\n  if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }\n  local_48 = 0;\n  local_40[0] = 0;\n  plVar10 = (long *)0x0;\nLAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);\n  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;\n  param_1[0x57] = plVar9[1];\n  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);\n  if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }\n  param_1[0x58] = lVar3;\n  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n  if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }\n  param_1[0x5c] = plVar9[3];\n  if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }\n  lVar4 = *(long *)(lVar4 + 0x10);\n  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;\n  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;\n  iVar1 = (int)param_1[0x5e];\n  param_1[0x59] = lVar4;\n  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;\n  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }\n  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);\n  uVar5 = param_1[0x57] + lVar4;\n  if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }\n  iVar1 = (int)param_1[0x5e];\njoined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }\n  lVar3 = FUN_001c2530(param_1);\n  if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }\n  param_1[0x59] = uVar5;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "long *plVar6;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar6" (* "*") (identifier "plVar6")) (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "long *plVar9;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar9" (* "*") (identifier "plVar9")) (; ";")) (declaration "long *plVar10;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar10" (* "*") (identifier "plVar10")) (; ";")) (declaration "long local_48;" (sized_type_specifier "long" (long "long")) (identifier "local_48") (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (if_statement "if ((int)param_1[0x5e] == 1) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }" (if "if") (parenthesized_expression "((int)param_1[0x5e] == 1)" (( "(") (binary_expression "(int)param_1[0x5e] == 1" (cast_expression "(int)param_1[0x5e]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[0x5e]" (identifier "param_1") ([ "[") (number_literal "0x5e") (] "]"))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.cc",0x1255,"set_offset")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x1255") (, ",") (string_literal ""set_offset"" (" """) (string_content "set_offset") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x5f) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x5f) & 2) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x5f) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x5f) & 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" (* "*") (cast_expression "(byte *)(param_1 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5f)" (( "(") (binary_expression "param_1 + 0x5f" (identifier "param_1") (+ "+") (number_literal "0x5f")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.cc",0x1257,"set_offset")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x1257") (, ",") (string_literal ""set_offset"" (" """) (string_content "set_offset") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "plVar7 = (long *)*param_1;" (assignment_expression "plVar7 = (long *)*param_1" (identifier "plVar7") (= "=") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (plVar7 == (long *)param_1[1]) {\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }" (if "if") (parenthesized_expression "(plVar7 == (long *)param_1[1])" (( "(") (binary_expression "plVar7 == (long *)param_1[1]" (identifier "plVar7") (== "==") (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");\n  }" ({ "{") (if_statement "if (param_2 == 0) {\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_1[0x57] = 0;\n      param_1[0x58] = 0;\n      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;\n      param_1[0x59] = 0;\n      param_1[0x5b] = 0;\n      param_1[0x5c] = 0;\n      param_1[0x5d] = 0;\n      return;\n    }" ({ "{") (expression_statement "param_1[0x57] = 0;" (assignment_expression "param_1[0x57] = 0" (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x58] = 0;" (assignment_expression "param_1[0x58] = 0" (subscript_expression "param_1[0x58]" (identifier "param_1") ([ "[") (number_literal "0x58") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;" (assignment_expression "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" (* "*") (cast_expression "(byte *)(param_1 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5f)" (( "(") (binary_expression "param_1 + 0x5f" (identifier "param_1") (+ "+") (number_literal "0x5f")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" (* "*") (cast_expression "(byte *)(param_1 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5f)" (( "(") (binary_expression "param_1 + 0x5f" (identifier "param_1") (+ "+") (number_literal "0x5f")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (expression_statement "param_1[0x59] = 0;" (assignment_expression "param_1[0x59] = 0" (subscript_expression "param_1[0x59]" (identifier "param_1") ([ "[") (number_literal "0x59") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5b] = 0;" (assignment_expression "param_1[0x5b] = 0" (subscript_expression "param_1[0x5b]" (identifier "param_1") ([ "[") (number_literal "0x5b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5c] = 0;" (assignment_expression "param_1[0x5c] = 0" (subscript_expression "param_1[0x5c]" (identifier "param_1") ([ "[") (number_literal "0x5c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" (identifier "param_1") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.cc",0x125f,"set_offset")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x125f") (, ",") (string_literal ""set_offset"" (" """) (string_content "set_offset") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40[0] = 0;" (assignment_expression "local_40[0] = 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar10 = (long *)0x0;" (assignment_expression "plVar10 = (long *)0x0" (identifier "plVar10") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_001c2eb7:\n  do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);" (statement_identifier "LAB_001c2eb7") (: ":") (do_statement "do {\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  } while ((long *)param_1[1] != plVar7);" (do "do") (compound_statement "{\n    plVar6 = (long *)*plVar7;\n    plVar9 = plVar6;\n    if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }\n    cVar2 = (**(code **)(*plVar6 + 0x30))();\n    plVar6 = &local_48;\n    if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }\n    lVar3 = *plVar6;\n    lVar4 = *plVar7;\n    plVar10 = plVar9;\n    if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }\nLAB_001c2f10:\n    *plVar6 = lVar4;\n    plVar7 = plVar7 + 1;\n  }" ({ "{") (expression_statement "plVar6 = (long *)*plVar7;" (assignment_expression "plVar6 = (long *)*plVar7" (identifier "plVar6") (= "=") (cast_expression "(long *)*plVar7" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")))) (; ";")) (expression_statement "plVar9 = plVar6;" (assignment_expression "plVar9 = plVar6" (identifier "plVar9") (= "=") (identifier "plVar6")) (; ";")) (if_statement "if (plVar10 != (long *)0x0) {\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(plVar10 != (long *)0x0)" (( "(") (binary_expression "plVar10 != (long *)0x0" (identifier "plVar10") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;\n      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }\n    }" ({ "{") (if_statement "if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;" (if "if") (parenthesized_expression "((*(byte *)(plVar6 + 4) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(plVar6 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar6 + 4) & 1)" (( "(") (binary_expression "*(byte *)(plVar6 + 4) & 1" (pointer_expression "*(byte *)(plVar6 + 4)" (* "*") (cast_expression "(byte *)(plVar6 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar6 + 4)" (( "(") (binary_expression "plVar6 + 4" (identifier "plVar6") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3220;" (goto "goto") (statement_identifier "LAB_001c3220") (; ";"))) (if_statement "if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;" (if "if") (parenthesized_expression "((*(byte *)(plVar10 + 4) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(plVar10 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar10 + 4) & 1)" (( "(") (binary_expression "*(byte *)(plVar10 + 4) & 1" (pointer_expression "*(byte *)(plVar10 + 4)" (* "*") (cast_expression "(byte *)(plVar10 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar10 + 4)" (( "(") (binary_expression "plVar10 + 4" (identifier "plVar10") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3220;" (goto "goto") (statement_identifier "LAB_001c3220") (; ";"))) (if_statement "if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }" (if "if") (parenthesized_expression "(((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1]))" (( "(") (binary_expression "((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])" (parenthesized_expression "((ulong)plVar10[1] <= (ulong)plVar6[1])" (( "(") (binary_expression "(ulong)plVar10[1] <= (ulong)plVar6[1]" (cast_expression "(ulong)plVar10[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "plVar10[1]" (identifier "plVar10") ([ "[") (number_literal "1") (] "]"))) (<= "<=") (cast_expression "(ulong)plVar6[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "plVar6[1]" (identifier "plVar6") ([ "[") (number_literal "1") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(plVar9 = plVar10, plVar10[1] == plVar6[1])" (( "(") (comma_expression "plVar9 = plVar10, plVar10[1] == plVar6[1]" (assignment_expression "plVar9 = plVar10" (identifier "plVar9") (= "=") (identifier "plVar10")) (, ",") (binary_expression "plVar10[1] == plVar6[1]" (subscript_expression "plVar10[1]" (identifier "plVar10") ([ "[") (number_literal "1") (] "]")) (== "==") (subscript_expression "plVar6[1]" (identifier "plVar6") ([ "[") (number_literal "1") (] "]")))) () ")"))) () ")")) (compound_statement "{\n        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;\n        if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }\n      }" ({ "{") (if_statement "if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))\n        goto LAB_001c3238;" (if "if") (parenthesized_expression "(((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))" (( "(") (binary_expression "((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0)" (parenthesized_expression "((*(byte *)(plVar6 + 4) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(plVar6 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar6 + 4) & 2)" (( "(") (binary_expression "*(byte *)(plVar6 + 4) & 2" (pointer_expression "*(byte *)(plVar6 + 4)" (* "*") (cast_expression "(byte *)(plVar6 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar6 + 4)" (( "(") (binary_expression "plVar6 + 4" (identifier "plVar6") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(plVar10 + 4) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(plVar10 + 4) & 2) == 0" (parenthesized_expression "(*(byte *)(plVar10 + 4) & 2)" (( "(") (binary_expression "*(byte *)(plVar10 + 4) & 2" (pointer_expression "*(byte *)(plVar10 + 4)" (* "*") (cast_expression "(byte *)(plVar10 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar10 + 4)" (( "(") (binary_expression "plVar10 + 4" (identifier "plVar10") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_001c3238;" (goto "goto") (statement_identifier "LAB_001c3238") (; ";"))) (if_statement "if (plVar6[2] < plVar10[2]) {\n          plVar9 = plVar6;\n        }" (if "if") (parenthesized_expression "(plVar6[2] < plVar10[2])" (( "(") (binary_expression "plVar6[2] < plVar10[2]" (subscript_expression "plVar6[2]" (identifier "plVar6") ([ "[") (number_literal "2") (] "]")) (< "<") (subscript_expression "plVar10[2]" (identifier "plVar10") ([ "[") (number_literal "2") (] "]"))) () ")")) (compound_statement "{\n          plVar9 = plVar6;\n        }" ({ "{") (expression_statement "plVar9 = plVar6;" (assignment_expression "plVar9 = plVar6" (identifier "plVar9") (= "=") (identifier "plVar6")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "cVar2 = (**(code **)(*plVar6 + 0x30))();" (assignment_expression "cVar2 = (**(code **)(*plVar6 + 0x30))()" (identifier "cVar2") (= "=") (call_expression "(**(code **)(*plVar6 + 0x30))()" (parenthesized_expression "(**(code **)(*plVar6 + 0x30))" (( "(") (pointer_expression "**(code **)(*plVar6 + 0x30)" (* "*") (pointer_expression "*(code **)(*plVar6 + 0x30)" (* "*") (cast_expression "(code **)(*plVar6 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar6 + 0x30)" (( "(") (binary_expression "*plVar6 + 0x30" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "plVar6 = &local_48;" (assignment_expression "plVar6 = &local_48" (identifier "plVar6") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (if_statement "if ((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)) {\n      plVar6 = local_40;\n    }" (if "if") (parenthesized_expression "((cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8))" (( "(") (binary_expression "(cVar2 != '\0') &&\n       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)" (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8)" (( "(") (comma_expression "lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8" (assignment_expression "lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))()" (identifier "lVar3") (= "=") (call_expression "(**(code **)(*(long *)*plVar7 + 0x48))()" (parenthesized_expression "(**(code **)(*(long *)*plVar7 + 0x48))" (( "(") (pointer_expression "**(code **)(*(long *)*plVar7 + 0x48)" (* "*") (pointer_expression "*(code **)(*(long *)*plVar7 + 0x48)" (* "*") (cast_expression "(code **)(*(long *)*plVar7 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)*plVar7 + 0x48)" (( "(") (binary_expression "*(long *)*plVar7 + 0x48" (pointer_expression "*(long *)*plVar7" (* "*") (cast_expression "(long *)*plVar7" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")))) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (, ",") (comma_expression "plVar6 = &local_48,\n       *(int *)(lVar3 + 0x6c) == 8" (assignment_expression "plVar6 = &local_48" (identifier "plVar6") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (, ",") (binary_expression "*(int *)(lVar3 + 0x6c) == 8" (pointer_expression "*(int *)(lVar3 + 0x6c)" (* "*") (cast_expression "(int *)(lVar3 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x6c)" (( "(") (binary_expression "lVar3 + 0x6c" (identifier "lVar3") (+ "+") (number_literal "0x6c")) () ")")))) (== "==") (number_literal "8")))) () ")"))) () ")")) (compound_statement "{\n      plVar6 = local_40;\n    }" ({ "{") (expression_statement "plVar6 = local_40;" (assignment_expression "plVar6 = local_40" (identifier "plVar6") (= "=") (identifier "local_40")) (; ";")) (} "}"))) (expression_statement "lVar3 = *plVar6;" (assignment_expression "lVar3 = *plVar6" (identifier "lVar3") (= "=") (pointer_expression "*plVar6" (* "*") (identifier "plVar6"))) (; ";")) (expression_statement "lVar4 = *plVar7;" (assignment_expression "lVar4 = *plVar7" (identifier "lVar4") (= "=") (pointer_expression "*plVar7" (* "*") (identifier "plVar7"))) (; ";")) (expression_statement "plVar10 = plVar9;" (assignment_expression "plVar10 = plVar9" (identifier "plVar10") (= "=") (identifier "plVar9")) (; ";")) (if_statement "if (lVar3 != 0) {\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;\n      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }\n    }" ({ "{") (if_statement "if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;" (if "if") (parenthesized_expression "((*(byte *)(lVar4 + 0x20) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(lVar4 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(lVar4 + 0x20) & 1" (pointer_expression "*(byte *)(lVar4 + 0x20)" (* "*") (cast_expression "(byte *)(lVar4 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3220;" (goto "goto") (statement_identifier "LAB_001c3220") (; ";"))) (if_statement "if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;" (if "if") (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(lVar3 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(lVar3 + 0x20) & 1" (pointer_expression "*(byte *)(lVar3 + 0x20)" (* "*") (cast_expression "(byte *)(lVar3 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x20)" (( "(") (binary_expression "lVar3 + 0x20" (identifier "lVar3") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3220;" (goto "goto") (statement_identifier "LAB_001c3220") (; ";"))) (if_statement "if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }" (if "if") (parenthesized_expression "(*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8))" (( "(") (binary_expression "*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)" (pointer_expression "*(ulong *)(lVar4 + 8)" (* "*") (cast_expression "(ulong *)(lVar4 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")")))) (<= "<=") (pointer_expression "*(ulong *)(lVar3 + 8)" (* "*") (cast_expression "(ulong *)(lVar3 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }\n        plVar7 = plVar7 + 1;\n        if ((long *)param_1[1] == plVar7) break;\n        goto LAB_001c2eb7;\n      }" ({ "{") (if_statement "if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }" (if "if") (parenthesized_expression "(*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8))" (( "(") (binary_expression "*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)" (pointer_expression "*(ulong *)(lVar4 + 8)" (* "*") (cast_expression "(ulong *)(lVar4 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")")))) (== "==") (pointer_expression "*(ulong *)(lVar3 + 8)" (* "*") (cast_expression "(ulong *)(lVar3 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;\n          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;\n        }" ({ "{") (if_statement "if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))\n          goto LAB_001c3238;" (if "if") (parenthesized_expression "(((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))" (( "(") (binary_expression "((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0)" (parenthesized_expression "((*(byte *)(lVar4 + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(lVar4 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(lVar4 + 0x20) & 2" (pointer_expression "*(byte *)(lVar4 + 0x20)" (* "*") (cast_expression "(byte *)(lVar4 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(lVar3 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(lVar3 + 0x20) & 2" (pointer_expression "*(byte *)(lVar3 + 0x20)" (* "*") (cast_expression "(byte *)(lVar3 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x20)" (( "(") (binary_expression "lVar3 + 0x20" (identifier "lVar3") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_001c3238;" (goto "goto") (statement_identifier "LAB_001c3238") (; ";"))) (if_statement "if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;" (if "if") (parenthesized_expression "(*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10))" (( "(") (binary_expression "*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)" (pointer_expression "*(long *)(lVar3 + 0x10)" (* "*") (cast_expression "(long *)(lVar3 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x10)" (( "(") (binary_expression "lVar3 + 0x10" (identifier "lVar3") (+ "+") (number_literal "0x10")) () ")")))) (< "<") (pointer_expression "*(long *)(lVar4 + 0x10)" (* "*") (cast_expression "(long *)(lVar4 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (goto_statement "goto LAB_001c2f10;" (goto "goto") (statement_identifier "LAB_001c2f10") (; ";"))) (} "}"))) (expression_statement "plVar7 = plVar7 + 1;" (assignment_expression "plVar7 = plVar7 + 1" (identifier "plVar7") (= "=") (binary_expression "plVar7 + 1" (identifier "plVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((long *)param_1[1] == plVar7) break;" (if "if") (parenthesized_expression "((long *)param_1[1] == plVar7)" (( "(") (binary_expression "(long *)param_1[1] == plVar7" (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "plVar7")) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_001c2eb7;" (goto "goto") (statement_identifier "LAB_001c2eb7") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_001c2f10:\n    *plVar6 = lVar4;" (statement_identifier "LAB_001c2f10") (: ":") (expression_statement "*plVar6 = lVar4;" (assignment_expression "*plVar6 = lVar4" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (= "=") (identifier "lVar4")) (; ";"))) (expression_statement "plVar7 = plVar7 + 1;" (assignment_expression "plVar7 = plVar7 + 1" (identifier "plVar7") (= "=") (binary_expression "plVar7 + 1" (identifier "plVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((long *)param_1[1] != plVar7)" (( "(") (binary_expression "(long *)param_1[1] != plVar7" (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "plVar7")) () ")")) (; ";"))) (if_statement "if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;" (if "if") (parenthesized_expression "((*(byte *)(plVar9 + 4) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(plVar9 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(plVar9 + 4) & 1)" (( "(") (binary_expression "*(byte *)(plVar9 + 4) & 1" (pointer_expression "*(byte *)(plVar9 + 4)" (* "*") (cast_expression "(byte *)(plVar9 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar9 + 4)" (( "(") (binary_expression "plVar9 + 4" (identifier "plVar9") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3220;" (goto "goto") (statement_identifier "LAB_001c3220") (; ";"))) (expression_statement "param_1[0x57] = plVar9[1];" (assignment_expression "param_1[0x57] = plVar9[1]" (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]")) (= "=") (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);" (assignment_expression "cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9)" (identifier "cVar2") (= "=") (call_expression "(**(code **)(*plVar9 + 0x20))(plVar9)" (parenthesized_expression "(**(code **)(*plVar9 + 0x20))" (( "(") (pointer_expression "**(code **)(*plVar9 + 0x20)" (* "*") (pointer_expression "*(code **)(*plVar9 + 0x20)" (* "*") (cast_expression "(code **)(*plVar9 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar9 + 0x20)" (( "(") (binary_expression "*plVar9 + 0x20" (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(plVar9)" (( "(") (identifier "plVar9") () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n    lVar3 = param_1[0x57];\n  }\n  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    lVar3 = param_1[0x57];\n  }" ({ "{") (expression_statement "lVar3 = param_1[0x57];" (assignment_expression "lVar3 = param_1[0x57]" (identifier "lVar3") (= "=") (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]"))) (; ";")) (} "}")) (else_clause "else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" (else "else") (if_statement "if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }\n  else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar9 + 0x28) == FUN_001926f0)" (( "(") (binary_expression "*(code **)(*plVar9 + 0x28) == FUN_001926f0" (pointer_expression "*(code **)(*plVar9 + 0x28)" (* "*") (cast_expression "(code **)(*plVar9 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar9 + 0x28)" (( "(") (binary_expression "*plVar9 + 0x28" (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (+ "+") (number_literal "0x28")) () ")")))) (== "==") (identifier "FUN_001926f0")) () ")")) (compound_statement "{\n    if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }\n    lVar3 = plVar9[8];\n  }" ({ "{") (if_statement "if (-1 < (char)plVar9[0x19]) {\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }" (if "if") (parenthesized_expression "(-1 < (char)plVar9[0x19])" (( "(") (binary_expression "-1 < (char)plVar9[0x19]" (number_literal "-1") (< "<") (cast_expression "(char)plVar9[0x19]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "plVar9[0x19]" (identifier "plVar9") ([ "[") (number_literal "0x19") (] "]")))) () ")")) (compound_statement "{\n                    \n      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");\n    }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0x107b,"do_load_address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x107b") (, ",") (string_literal ""do_load_address"" (" """) (string_content "do_load_address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar3 = plVar9[8];" (assignment_expression "lVar3 = plVar9[8]" (identifier "lVar3") (= "=") (subscript_expression "plVar9[8]" (identifier "plVar9") ([ "[") (number_literal "8") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" (else "else") (compound_statement "{\n    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);\n  }" ({ "{") (expression_statement "lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);" (assignment_expression "lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9)" (identifier "lVar3") (= "=") (call_expression "(**(code **)(*plVar9 + 0x28))(plVar9)" (parenthesized_expression "(**(code **)(*plVar9 + 0x28))" (( "(") (pointer_expression "**(code **)(*plVar9 + 0x28)" (* "*") (pointer_expression "*(code **)(*plVar9 + 0x28)" (* "*") (cast_expression "(code **)(*plVar9 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar9 + 0x28)" (( "(") (binary_expression "*plVar9 + 0x28" (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(plVar9)" (( "(") (identifier "plVar9") () ")")))) (; ";")) (} "}")))))) (expression_statement "param_1[0x58] = lVar3;" (assignment_expression "param_1[0x58] = lVar3" (subscript_expression "param_1[0x58]" (identifier "param_1") ([ "[") (number_literal "0x58") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;" (assignment_expression "*(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" (* "*") (cast_expression "(byte *)(param_1 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5f)" (( "(") (binary_expression "param_1 + 0x5f" (identifier "param_1") (+ "+") (number_literal "0x5f")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0x5f) | 2" (pointer_expression "*(byte *)(param_1 + 0x5f)" (* "*") (cast_expression "(byte *)(param_1 + 0x5f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5f)" (( "(") (binary_expression "param_1 + 0x5f" (identifier "param_1") (+ "+") (number_literal "0x5f")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (if_statement "if ((*(byte *)(plVar9 + 4) & 4) == 0) {\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" (if "if") (parenthesized_expression "((*(byte *)(plVar9 + 4) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(plVar9 + 4) & 4) == 0" (parenthesized_expression "(*(byte *)(plVar9 + 4) & 4)" (( "(") (binary_expression "*(byte *)(plVar9 + 4) & 4" (pointer_expression "*(byte *)(plVar9 + 4)" (* "*") (cast_expression "(byte *)(plVar9 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar9 + 4)" (( "(") (binary_expression "plVar9 + 4" (identifier "plVar9") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xe3,"offset")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0xe3,"offset")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "param_1[0x5c] = plVar9[3];" (assignment_expression "param_1[0x5c] = plVar9[3]" (subscript_expression "param_1[0x5c]" (identifier "param_1") ([ "[") (number_literal "0x5c") (] "]")) (= "=") (subscript_expression "plVar9[3]" (identifier "plVar9") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (local_48 == 0) {\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }\n  else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" (if "if") (parenthesized_expression "(local_48 == 0)" (( "(") (binary_expression "local_48 == 0" (identifier "local_48") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_1[0x5d] = 0;\nLAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }\n    lVar3 = *(long *)(local_40[0] + 8);\n    lVar4 = local_40[0];\n    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }\n  }" ({ "{") (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" (identifier "param_1") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_001c2fb9:\n    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" (statement_identifier "LAB_001c2fb9") (: ":") (if_statement "if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" (if "if") (parenthesized_expression "((*(byte *)(local_40[0] + 0x20) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(local_40[0] + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(local_40[0] + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(local_40[0] + 0x20) & 1" (pointer_expression "*(byte *)(local_40[0] + 0x20)" (* "*") (cast_expression "(byte *)(local_40[0] + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40[0] + 0x20)" (( "(") (binary_expression "local_40[0] + 0x20" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");\n    }" ({ "{") (labeled_statement "LAB_001c3220:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xc5,"address");" (statement_identifier "LAB_001c3220") (: ":") (expression_statement "FUN_0016cdf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xc5,"address")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";"))) (} "}")))) (expression_statement "lVar3 = *(long *)(local_40[0] + 8);" (assignment_expression "lVar3 = *(long *)(local_40[0] + 8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(local_40[0] + 8)" (* "*") (cast_expression "(long *)(local_40[0] + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40[0] + 8)" (( "(") (binary_expression "local_40[0] + 8" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar4 = local_40[0];" (assignment_expression "lVar4 = local_40[0]" (identifier "lVar4") (= "=") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" (if "if") (parenthesized_expression "((*(byte *)(local_40[0] + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_40[0] + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(local_40[0] + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(local_40[0] + 0x20) & 2" (pointer_expression "*(byte *)(local_40[0] + 0x20)" (* "*") (cast_expression "(byte *)(local_40[0] + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40[0] + 0x20)" (( "(") (binary_expression "local_40[0] + 0x20" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");\n    }" ({ "{") (labeled_statement "LAB_001c3238:\n                    \n      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (statement_identifier "LAB_001c3238") (: ":") (expression_statement "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0016cdf0("../../gold/output.h",0xcf,"data_size")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.h",0xcf,"data_size")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xcf") (, ",") (string_literal ""data_size"" (" """) (string_content "data_size") (" """)) () ")"))) (; ";"))) (} "}"))) (} "}")) (else_clause "else {\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" (else "else") (compound_statement "{\n    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;\n    lVar3 = *(long *)(local_48 + 8);\n    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;\n    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];\n    lVar4 = local_48;\n    if (local_40[0] != 0) goto LAB_001c2fb9;\n  }" ({ "{") (if_statement "if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;" (if "if") (parenthesized_expression "((*(byte *)(local_48 + 0x20) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(local_48 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(local_48 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(local_48 + 0x20) & 1" (pointer_expression "*(byte *)(local_48 + 0x20)" (* "*") (cast_expression "(byte *)(local_48 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + 0x20)" (( "(") (binary_expression "local_48 + 0x20" (identifier "local_48") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3220;" (goto "goto") (statement_identifier "LAB_001c3220") (; ";"))) (expression_statement "lVar3 = *(long *)(local_48 + 8);" (assignment_expression "lVar3 = *(long *)(local_48 + 8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(local_48 + 8)" (* "*") (cast_expression "(long *)(local_48 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + 8)" (( "(") (binary_expression "local_48 + 8" (identifier "local_48") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;" (if "if") (parenthesized_expression "((*(byte *)(local_48 + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(local_48 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(local_48 + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(local_48 + 0x20) & 2" (pointer_expression "*(byte *)(local_48 + 0x20)" (* "*") (cast_expression "(byte *)(local_48 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + 0x20)" (( "(") (binary_expression "local_48 + 0x20" (identifier "local_48") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3238;" (goto "goto") (statement_identifier "LAB_001c3238") (; ";"))) (expression_statement "param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];" (assignment_expression "param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57]" (subscript_expression "param_1[0x5d]" (identifier "param_1") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (binary_expression "(*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57]" (parenthesized_expression "(*(long *)(local_48 + 0x10) + lVar3)" (( "(") (binary_expression "*(long *)(local_48 + 0x10) + lVar3" (pointer_expression "*(long *)(local_48 + 0x10)" (* "*") (cast_expression "(long *)(local_48 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + 0x10)" (( "(") (binary_expression "local_48 + 0x10" (identifier "local_48") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "lVar3")) () ")")) (- "-") (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]")))) (; ";")) (expression_statement "lVar4 = local_48;" (assignment_expression "lVar4 = local_48" (identifier "lVar4") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (local_40[0] != 0) goto LAB_001c2fb9;" (if "if") (parenthesized_expression "(local_40[0] != 0)" (( "(") (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c2fb9;" (goto "goto") (statement_identifier "LAB_001c2fb9") (; ";"))) (} "}")))) (expression_statement "lVar4 = *(long *)(lVar4 + 0x10);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x10)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar4 + 0x10)" (* "*") (cast_expression "(long *)(lVar4 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "param_1[0x5d] = param_1[0x5d] + (ulong)param_2;" (assignment_expression "param_1[0x5d] = param_1[0x5d] + (ulong)param_2" (subscript_expression "param_1[0x5d]" (identifier "param_1") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (binary_expression "param_1[0x5d] + (ulong)param_2" (subscript_expression "param_1[0x5d]" (identifier "param_1") ([ "[") (number_literal "0x5d") (] "]")) (+ "+") (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2")))) (; ";")) (expression_statement "lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;" (assignment_expression "lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4" (identifier "lVar4") (= "=") (binary_expression "lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4" (binary_expression "lVar3 + ((ulong)param_2 - param_1[0x57])" (identifier "lVar3") (+ "+") (parenthesized_expression "((ulong)param_2 - param_1[0x57])" (( "(") (binary_expression "(ulong)param_2 - param_1[0x57]" (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2")) (- "-") (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]"))) () ")"))) (+ "+") (identifier "lVar4"))) (; ";")) (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" (identifier "iVar1") (= "=") (cast_expression "(int)param_1[0x5e]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[0x5e]" (identifier "param_1") ([ "[") (number_literal "0x5e") (] "]")))) (; ";")) (expression_statement "param_1[0x59] = lVar4;" (assignment_expression "param_1[0x59] = lVar4" (subscript_expression "param_1[0x59]" (identifier "param_1") ([ "[") (number_literal "0x59") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (iVar1 != 0x6474e552) goto joined_r0x001c3142;" (if "if") (parenthesized_expression "(iVar1 != 0x6474e552)" (( "(") (binary_expression "iVar1 != 0x6474e552" (identifier "iVar1") (!= "!=") (number_literal "0x6474e552")) () ")")) (goto_statement "goto joined_r0x001c3142;" (goto "goto") (statement_identifier "joined_r0x001c3142") (; ";"))) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x18" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0016cdf0("../../gold/parameters.h",0x69,"target")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x10" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    plVar7 = (long *)PTR_DAT_003be6b0;\n    FUN_001bf730();\n    if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }\n                    \n    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");\n  }" ({ "{") (expression_statement "plVar7 = (long *)PTR_DAT_003be6b0;" (assignment_expression "plVar7 = (long *)PTR_DAT_003be6b0" (identifier "plVar7") (= "=") (cast_expression "(long *)PTR_DAT_003be6b0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_003be6b0"))) (; ";")) (expression_statement "FUN_001bf730();" (call_expression "FUN_001bf730()" (identifier "FUN_001bf730") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((int)plVar7[0x5e] == 7) {\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }" (if "if") (parenthesized_expression "((int)plVar7[0x5e] == 7)" (( "(") (binary_expression "(int)plVar7[0x5e] == 7" (cast_expression "(int)plVar7[0x5e]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar7[0x5e]" (identifier "plVar7") ([ "[") (number_literal "0x5e") (] "]"))) (== "==") (number_literal "7")) () ")")) (compound_statement "{\n      puVar8 = (undefined8 *)*plVar7;\n      if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }\n      return;\n    }" ({ "{") (expression_statement "puVar8 = (undefined8 *)*plVar7;" (assignment_expression "puVar8 = (undefined8 *)*plVar7" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)*plVar7" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")))) (; ";")) (if_statement "if (puVar8 != (undefined8 *)plVar7[1]) {\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }" (if "if") (parenthesized_expression "(puVar8 != (undefined8 *)plVar7[1])" (( "(") (binary_expression "puVar8 != (undefined8 *)plVar7[1]" (identifier "puVar8") (!= "!=") (cast_expression "(undefined8 *)plVar7[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n        do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);\n      }" ({ "{") (do_statement "do {\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        } while ((undefined8 *)plVar7[1] != puVar8);" (do "do") (compound_statement "{\n          plVar10 = (long *)*puVar8;\n          puVar8 = puVar8 + 1;\n          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);\n        }" ({ "{") (expression_statement "plVar10 = (long *)*puVar8;" (assignment_expression "plVar10 = (long *)*puVar8" (identifier "plVar10") (= "=") (cast_expression "(long *)*puVar8" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);" (call_expression "(**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57])" (parenthesized_expression "(**(code **)(*plVar10 + 0x88))" (( "(") (pointer_expression "**(code **)(*plVar10 + 0x88)" (* "*") (pointer_expression "*(code **)(*plVar10 + 0x88)" (* "*") (cast_expression "(code **)(*plVar10 + 0x88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar10 + 0x88)" (( "(") (binary_expression "*plVar10 + 0x88" (pointer_expression "*plVar10" (* "*") (identifier "plVar10")) (+ "+") (number_literal "0x88")) () ")"))))) () ")")) (argument_list "(plVar10,plVar7[0x57])" (( "(") (identifier "plVar10") (, ",") (subscript_expression "plVar7[0x57]" (identifier "plVar7") ([ "[") (number_literal "0x57") (] "]")) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined8 *)plVar7[1] != puVar8)" (( "(") (binary_expression "(undefined8 *)plVar7[1] != puVar8" (cast_expression "(undefined8 *)plVar7[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.cc",0x12bb,"set_tls_offsets")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x12bb") (, ",") (string_literal ""set_tls_offsets"" (" """) (string_content "set_tls_offsets") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);" (assignment_expression "lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8)" (( "(") (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x10" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x84e8")) () ")"))))) (; ";")) (expression_statement "uVar5 = param_1[0x57] + lVar4;" (assignment_expression "uVar5 = param_1[0x57] + lVar4" (identifier "uVar5") (= "=") (binary_expression "param_1[0x57] + lVar4" (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]")) (+ "+") (identifier "lVar4"))) (; ";")) (if_statement "if (lVar3 == 0) {\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }\n  else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }\n    if (lVar3 != 0) goto LAB_001c3125;\n  }" ({ "{") (expression_statement "lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);" (assignment_expression "lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" (* "*") (cast_expression "(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28)" (( "(") (binary_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28" (pointer_expression "*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_003be6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x18)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x18" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "cVar2 = FUN_001ee080();" (assignment_expression "cVar2 = FUN_001ee080()" (identifier "cVar2") (= "=") (call_expression "FUN_001ee080()" (identifier "FUN_001ee080") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar2 != '\0') {\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (lVar3 != 0) goto LAB_001c3210;\n      goto LAB_001c31b2;\n    }" ({ "{") (if_statement "if (lVar3 != 0) goto LAB_001c3210;" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3210;" (goto "goto") (statement_identifier "LAB_001c3210") (; ";"))) (goto_statement "goto LAB_001c31b2;" (goto "goto") (statement_identifier "LAB_001c31b2") (; ";")) (} "}"))) (if_statement "if (lVar3 != 0) goto LAB_001c3125;" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c3125;" (goto "goto") (statement_identifier "LAB_001c3125") (; ";"))) (} "}")) (else_clause "else {\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" (else "else") (compound_statement "{\n    cVar2 = FUN_001ee080();\n    if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }\nLAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }\n  }" ({ "{") (expression_statement "cVar2 = FUN_001ee080();" (assignment_expression "cVar2 = FUN_001ee080()" (identifier "cVar2") (= "=") (call_expression "FUN_001ee080()" (identifier "FUN_001ee080") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar2 != '\0') {\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;\nLAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];\n      param_1[0x59] = uVar5 - param_1[0x57];\n      goto joined_r0x001c3142;\n    }" ({ "{") (labeled_statement "LAB_001c3210:\n      uVar5 = lVar3 + -1 + uVar5 & -lVar3;" (statement_identifier "LAB_001c3210") (: ":") (expression_statement "uVar5 = lVar3 + -1 + uVar5 & -lVar3;" (assignment_expression "uVar5 = lVar3 + -1 + uVar5 & -lVar3" (identifier "uVar5") (= "=") (binary_expression "lVar3 + -1 + uVar5 & -lVar3" (binary_expression "lVar3 + -1 + uVar5" (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1")) (+ "+") (identifier "uVar5")) (& "&") (unary_expression "-lVar3" (- "-") (identifier "lVar3")))) (; ";"))) (labeled_statement "LAB_001c31b2:\n      iVar1 = (int)param_1[0x5e];" (statement_identifier "LAB_001c31b2") (: ":") (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" (identifier "iVar1") (= "=") (cast_expression "(int)param_1[0x5e]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[0x5e]" (identifier "param_1") ([ "[") (number_literal "0x5e") (] "]")))) (; ";"))) (expression_statement "param_1[0x59] = uVar5 - param_1[0x57];" (assignment_expression "param_1[0x59] = uVar5 - param_1[0x57]" (subscript_expression "param_1[0x59]" (identifier "param_1") ([ "[") (number_literal "0x59") (] "]")) (= "=") (binary_expression "uVar5 - param_1[0x57]" (identifier "uVar5") (- "-") (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]")))) (; ";")) (goto_statement "goto joined_r0x001c3142;" (goto "goto") (statement_identifier "joined_r0x001c3142") (; ";")) (} "}"))) (labeled_statement "LAB_001c3125:\n    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" (statement_identifier "LAB_001c3125") (: ":") (if_statement "if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" (if "if") (parenthesized_expression "((-lVar3 & lVar3 + -1 + uVar5) != uVar5)" (( "(") (binary_expression "(-lVar3 & lVar3 + -1 + uVar5) != uVar5" (parenthesized_expression "(-lVar3 & lVar3 + -1 + uVar5)" (( "(") (binary_expression "-lVar3 & lVar3 + -1 + uVar5" (unary_expression "-lVar3" (- "-") (identifier "lVar3")) (& "&") (binary_expression "lVar3 + -1 + uVar5" (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1")) (+ "+") (identifier "uVar5"))) () ")")) (!= "!=") (identifier "uVar5")) () ")")) (compound_statement "{\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");\n    }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.cc",0x12a8,"set_offset")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x12a8") (, ",") (string_literal ""set_offset"" (" """) (string_content "set_offset") (" """)) () ")"))) (; ";")) (} "}")))) (} "}")))) (expression_statement "iVar1 = (int)param_1[0x5e];" (assignment_expression "iVar1 = (int)param_1[0x5e]" (identifier "iVar1") (= "=") (cast_expression "(int)param_1[0x5e]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[0x5e]" (identifier "param_1") ([ "[") (number_literal "0x5e") (] "]")))) (; ";")) (labeled_statement "joined_r0x001c3142:\n  if (iVar1 != 7) {\n    return;\n  }" (statement_identifier "joined_r0x001c3142") (: ":") (if_statement "if (iVar1 != 7) {\n    return;\n  }" (if "if") (parenthesized_expression "(iVar1 != 7)" (( "(") (binary_expression "iVar1 != 7" (identifier "iVar1") (!= "!=") (number_literal "7")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "lVar3 = FUN_001c2530(param_1);" (assignment_expression "lVar3 = FUN_001c2530(param_1)" (identifier "lVar3") (= "=") (call_expression "FUN_001c2530(param_1)" (identifier "FUN_001c2530") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (lVar3 == 0) {\n    uVar5 = param_1[0x59];\n  }\n  else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = param_1[0x59];\n  }" ({ "{") (expression_statement "uVar5 = param_1[0x59];" (assignment_expression "uVar5 = param_1[0x59]" (identifier "uVar5") (= "=") (subscript_expression "param_1[0x59]" (identifier "param_1") ([ "[") (number_literal "0x59") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" (else "else") (compound_statement "{\n    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }\n    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;\n  }" ({ "{") (if_statement "if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }" (if "if") (parenthesized_expression "(param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3))" (( "(") (binary_expression "param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)" (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]")) (!= "!=") (parenthesized_expression "((param_1[0x57] - 1U) + lVar3 & -lVar3)" (( "(") (binary_expression "(param_1[0x57] - 1U) + lVar3 & -lVar3" (binary_expression "(param_1[0x57] - 1U) + lVar3" (parenthesized_expression "(param_1[0x57] - 1U)" (( "(") (binary_expression "param_1[0x57] - 1U" (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]")) (- "-") (number_literal "1U")) () ")")) (+ "+") (identifier "lVar3")) (& "&") (unary_expression "-lVar3" (- "-") (identifier "lVar3"))) () ")"))) () ")")) (compound_statement "{\n                    \n      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");\n    }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");" (call_expression "FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/output.cc",0x12b1,"set_offset")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x12b1") (, ",") (string_literal ""set_offset"" (" """) (string_content "set_offset") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;" (assignment_expression "uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3" (identifier "uVar5") (= "=") (binary_expression "lVar3 + -1 + param_1[0x59] & -lVar3" (binary_expression "lVar3 + -1 + param_1[0x59]" (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1")) (+ "+") (subscript_expression "param_1[0x59]" (identifier "param_1") ([ "[") (number_literal "0x59") (] "]"))) (& "&") (unary_expression "-lVar3" (- "-") (identifier "lVar3")))) (; ";")) (} "}")))) (expression_statement "param_1[0x59] = uVar5;" (assignment_expression "param_1[0x59] = uVar5" (subscript_expression "param_1[0x59]" (identifier "param_1") ([ "[") (number_literal "0x59") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void set_offset(Output_segment * this, uint increase) */

void __thiscall var_2::type_1::function_1(type_1 *this,type_2 var_6)

{
  type_3 var_15;
  type_4 *pOVar2;
  type_4 *var_9;
  long var_14;
  bool bVar5;
  int iVar6;
  type_5 extraout_var;
  uint64_t var_12;
  type_6 var_19;
  type_5 extraout_var_00;
  type_4 **ppOVar9;
  type_4 *var_7;
  type_7 var_5;
  uint64_t var_17;
  type_4 *pOVar13;
  type_4 *var_11;
  type_4 *var_13;
  
  if (this->type_ == 1) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/output.cc",0x1255,"set_offset");
  }
  if ((this->field_0x2f8 & 2) != 0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/output.cc",0x1257,"set_offset");
  }
  var_5 = this->output_lists_[0].
             super__Vector_base<var_2::type_4*,var_3::allocator<var_2::type_4*>var_4>._M_impl.
             _M_start;
  if (var_5 ==
      this->output_lists_[0].
      super__Vector_base<var_2::type_4*,var_3::allocator<var_2::type_4*>var_4>._M_impl._M_finish)
  {
    if (var_6 == 0) {
      this->vaddr_ = 0;
      this->paddr_ = 0;
      this->field_0x2f8 = this->field_0x2f8 | 2;
      this->memsz_ = 0;
      this->min_p_align_ = 0;
      this->offset_ = 0;
      this->filesz_ = 0;
      return;
    }
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/output.cc",0x125f,"set_offset");
  }
  var_11 = (type_4 *)0x0;
  var_13 = (type_4 *)0x0;
  var_7 = (type_4 *)0x0;
LAB_001c2eb7:
  do {
    var_9 = *var_5;
    pOVar13 = var_9;
    if (var_7 != (type_4 *)0x0) {
      if ((var_9->field_0x20 & 1) == 0) goto LAB_001c3220;
      if ((var_7->field_0x20 & 1) == 0) goto LAB_001c3220;
      if ((var_7->address_ <= var_9->address_) &&
         (pOVar13 = var_7, var_7->address_ == var_9->address_)) {
        if (((var_9->field_0x20 & 2) == 0) || ((var_7->field_0x20 & 2) == 0)) goto LAB_001c3238;
        if (var_9->data_size_ < var_7->data_size_) {
          pOVar13 = var_9;
        }
      }
    }
    iVar6 = (*var_9->_vptr_Output_data[6])();
    ppOVar9 = &var_11;
    if (((char)iVar6 != '\0') &&
       (iVar6 = (*(*var_5)->_vptr_Output_data[9])(), ppOVar9 = &var_11,
       *(int *)(var_8(extraout_var,iVar6) + 0x6c) == 8)) {
      ppOVar9 = &var_13;
    }
    var_9 = *ppOVar9;
    pOVar2 = *var_5;
    var_7 = pOVar13;
    if (var_9 != (type_4 *)0x0) {
      if ((pOVar2->field_0x20 & 1) == 0) goto LAB_001c3220;
      if ((var_9->field_0x20 & 1) == 0) goto LAB_001c3220;
      if (pOVar2->address_ <= var_9->address_) {
        if (pOVar2->address_ == var_9->address_) {
          if (((pOVar2->field_0x20 & 2) == 0) || ((var_9->field_0x20 & 2) == 0)) goto LAB_001c3238;
          if (var_9->data_size_ < pOVar2->data_size_) goto LAB_001c2f10;
        }
        var_5 = var_5 + 1;
        if (this->output_lists_[0].
            super__Vector_base<var_2::type_4*,var_3::allocator<var_2::type_4*>var_4>._M_impl.
            _M_finish == var_5) break;
        goto LAB_001c2eb7;
      }
    }
LAB_001c2f10:
    *ppOVar9 = pOVar2;
    var_5 = var_5 + 1;
  } while (this->output_lists_[0].
           super__Vector_base<var_2::type_4*,var_3::allocator<var_2::type_4*>var_4>._M_impl.
           _M_finish != var_5);
  if ((pOVar13->field_0x20 & 1) == 0) goto LAB_001c3220;
  this->vaddr_ = pOVar13->address_;
  iVar6 = (*pOVar13->_vptr_Output_data[4])(pOVar13);
  if ((char)iVar6 == '\0') {
    var_12 = this->vaddr_;
  }
  else if (pOVar13->_vptr_Output_data[5] == var_10::do_load_address) {
    if (-1 < *(char *)&pOVar13[5]._vptr_Output_data) {
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/output.h",0x107b,"do_load_address");
    }
    var_12 = pOVar13[1].offset_;
  }
  else {
    iVar6 = (*pOVar13->_vptr_Output_data[5])(pOVar13);
    var_12 = var_8(extraout_var_00,iVar6);
  }
  this->paddr_ = var_12;
  this->field_0x2f8 = this->field_0x2f8 | 2;
  if ((pOVar13->field_0x20 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/output.h",0xe3,"offset");
  }
  this->offset_ = pOVar13->offset_;
  if (var_11 == (type_4 *)0x0) {
    this->filesz_ = 0;
LAB_001c2fb9:
    if ((var_13->field_0x20 & 1) == 0) {
LAB_001c3220:
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/output.h",0xc5,"address");
    }
    var_12 = var_13->address_;
    var_7 = var_13;
    if ((var_13->field_0x20 & 2) == 0) {
LAB_001c3238:
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/output.h",0xcf,"data_size");
    }
  }
  else {
    if ((var_11->field_0x20 & 1) == 0) goto LAB_001c3220;
    var_12 = var_11->address_;
    if ((var_11->field_0x20 & 2) == 0) goto LAB_001c3238;
    this->filesz_ = (var_11->data_size_ + var_12) - this->vaddr_;
    var_7 = var_11;
    if (var_13 != (type_4 *)0x0) goto LAB_001c2fb9;
  }
  var_14 = var_7->data_size_;
  this->filesz_ = this->filesz_ + (type_6)var_6;
  var_12 = var_12 + ((type_6)var_6 - this->vaddr_) + var_14;
  var_15 = this->type_;
  this->memsz_ = var_12;
  if (var_15 != 0x6474e552) goto joined_r0x001c3142;
  if (parameters->target_ == (type_8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/parameters.h",0x69,"target");
  }
  if (parameters->options_ == (type_9 *)0x0) {
                    /* WARNING: Subroutine does not return */
    Target::var_16((type_8 *)parameters);
  }
  var_17 = (parameters->options_->max_page_size_).value;
  var_19 = this->vaddr_ + var_12;
  if (var_17 == 0) {
    var_17 = *(uint64_t *)(*(long *)(parameters->target_ + 8) + 0x28);
    bVar5 = Parameters::var_18(parameters);
    if (bVar5) {
      if (var_17 != 0) goto LAB_001c3210;
      goto LAB_001c31b2;
    }
    if (var_17 != 0) goto LAB_001c3125;
  }
  else {
    bVar5 = Parameters::var_18(parameters);
    if (bVar5) {
LAB_001c3210:
      var_19 = (var_17 - 1) + var_19 & -var_17;
LAB_001c31b2:
      var_15 = this->type_;
      this->memsz_ = var_19 - this->vaddr_;
      goto joined_r0x001c3142;
    }
LAB_001c3125:
    if ((-var_17 & (var_17 - 1) + var_19) != var_19) {
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/output.cc",0x12a8,"set_offset");
    }
  }
  var_15 = this->type_;
joined_r0x001c3142:
  if (var_15 != 7) {
    return;
  }
  var_12 = var_20(this);
  if (var_12 == 0) {
    var_19 = this->memsz_;
  }
  else {
    if (this->vaddr_ != ((this->vaddr_ - 1) + var_12 & -var_12)) {
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/output.cc",0x12b1,"set_offset");
    }
    var_19 = (var_12 - 1) + this->memsz_ & -var_12;
  }
  this->memsz_ = var_19;
  return;
}


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

void MASKED(long *param_1,uint param_2)

{
  int iVar1;
  char cVar2;
  long lVar3;
  long lVar4;
  ulong uVar5;
  long *plVar6;
  long *plVar7;
  undefined8 *puVar8;
  long *plVar9;
  long *plVar10;
  long local_48;
  long local_40 [2];
  
  if ((int)param_1[0x5e] == 1) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.cc",0x1255,"set_offset");
  }
  if ((*(byte *)(param_1 + 0x5f) & 2) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.cc",0x1257,"set_offset");
  }
  plVar7 = (long *)*param_1;
  if (plVar7 == (long *)param_1[1]) {
    if (param_2 == 0) {
      param_1[0x57] = 0;
      param_1[0x58] = 0;
      *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;
      param_1[0x59] = 0;
      param_1[0x5b] = 0;
      param_1[0x5c] = 0;
      param_1[0x5d] = 0;
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.cc",0x125f,"set_offset");
  }
  local_48 = 0;
  local_40[0] = 0;
  plVar10 = (long *)0x0;
LAB_001c2eb7:
  do {
    plVar6 = (long *)*plVar7;
    plVar9 = plVar6;
    if (plVar10 != (long *)0x0) {
      if ((*(byte *)(plVar6 + 4) & 1) == 0) goto LAB_001c3220;
      if ((*(byte *)(plVar10 + 4) & 1) == 0) goto LAB_001c3220;
      if (((ulong)plVar10[1] <= (ulong)plVar6[1]) && (plVar9 = plVar10, plVar10[1] == plVar6[1])) {
        if (((*(byte *)(plVar6 + 4) & 2) == 0) || ((*(byte *)(plVar10 + 4) & 2) == 0))
        goto LAB_001c3238;
        if (plVar6[2] < plVar10[2]) {
          plVar9 = plVar6;
        }
      }
    }
    cVar2 = (**(code **)(*plVar6 + 0x30))();
    plVar6 = &local_48;
    if ((cVar2 != '\0') &&
       (lVar3 = (**(code **)(*(long *)*plVar7 + 0x48))(), plVar6 = &local_48,
       *(int *)(lVar3 + 0x6c) == 8)) {
      plVar6 = local_40;
    }
    lVar3 = *plVar6;
    lVar4 = *plVar7;
    plVar10 = plVar9;
    if (lVar3 != 0) {
      if ((*(byte *)(lVar4 + 0x20) & 1) == 0) goto LAB_001c3220;
      if ((*(byte *)(lVar3 + 0x20) & 1) == 0) goto LAB_001c3220;
      if (*(ulong *)(lVar4 + 8) <= *(ulong *)(lVar3 + 8)) {
        if (*(ulong *)(lVar4 + 8) == *(ulong *)(lVar3 + 8)) {
          if (((*(byte *)(lVar4 + 0x20) & 2) == 0) || ((*(byte *)(lVar3 + 0x20) & 2) == 0))
          goto LAB_001c3238;
          if (*(long *)(lVar3 + 0x10) < *(long *)(lVar4 + 0x10)) goto LAB_001c2f10;
        }
        plVar7 = plVar7 + 1;
        if ((long *)param_1[1] == plVar7) break;
        goto LAB_001c2eb7;
      }
    }
LAB_001c2f10:
    *plVar6 = lVar4;
    plVar7 = plVar7 + 1;
  } while ((long *)param_1[1] != plVar7);
  if ((*(byte *)(plVar9 + 4) & 1) == 0) goto LAB_001c3220;
  param_1[0x57] = plVar9[1];
  cVar2 = (**(code **)(*plVar9 + 0x20))(plVar9);
  if (cVar2 == '\0') {
    lVar3 = param_1[0x57];
  }
  else if (*(code **)(*plVar9 + 0x28) == FUN_001926f0) {
    if (-1 < (char)plVar9[0x19]) {
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.h",0x107b,"do_load_address");
    }
    lVar3 = plVar9[8];
  }
  else {
    lVar3 = (**(code **)(*plVar9 + 0x28))(plVar9);
  }
  param_1[0x58] = lVar3;
  *(byte *)(param_1 + 0x5f) = *(byte *)(param_1 + 0x5f) | 2;
  if ((*(byte *)(plVar9 + 4) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.h",0xe3,"offset");
  }
  param_1[0x5c] = plVar9[3];
  if (local_48 == 0) {
    param_1[0x5d] = 0;
LAB_001c2fb9:
    if ((*(byte *)(local_40[0] + 0x20) & 1) == 0) {
LAB_001c3220:
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.h",0xc5,"address");
    }
    lVar3 = *(long *)(local_40[0] + 8);
    lVar4 = local_40[0];
    if ((*(byte *)(local_40[0] + 0x20) & 2) == 0) {
LAB_001c3238:
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.h",0xcf,"data_size");
    }
  }
  else {
    if ((*(byte *)(local_48 + 0x20) & 1) == 0) goto LAB_001c3220;
    lVar3 = *(long *)(local_48 + 8);
    if ((*(byte *)(local_48 + 0x20) & 2) == 0) goto LAB_001c3238;
    param_1[0x5d] = (*(long *)(local_48 + 0x10) + lVar3) - param_1[0x57];
    lVar4 = local_48;
    if (local_40[0] != 0) goto LAB_001c2fb9;
  }
  lVar4 = *(long *)(lVar4 + 0x10);
  param_1[0x5d] = param_1[0x5d] + (ulong)param_2;
  lVar4 = lVar3 + ((ulong)param_2 - param_1[0x57]) + lVar4;
  iVar1 = (int)param_1[0x5e];
  param_1[0x59] = lVar4;
  if (iVar1 != 0x6474e552) goto joined_r0x001c3142;
  if (*(long *)(PTR_DAT_003be6b0 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/parameters.h",0x69,"target");
  }
  if (*(long *)(PTR_DAT_003be6b0 + 0x10) == 0) {
    plVar7 = (long *)PTR_DAT_003be6b0;
    FUN_001bf730();
    if ((int)plVar7[0x5e] == 7) {
      puVar8 = (undefined8 *)*plVar7;
      if (puVar8 != (undefined8 *)plVar7[1]) {
        do {
          plVar10 = (long *)*puVar8;
          puVar8 = puVar8 + 1;
          (**(code **)(*plVar10 + 0x88))(plVar10,plVar7[0x57]);
        } while ((undefined8 *)plVar7[1] != puVar8);
      }
      return;
    }
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/output.cc",0x12bb,"set_tls_offsets");
  }
  lVar3 = *(long *)(*(long *)(PTR_DAT_003be6b0 + 0x10) + 0x84e8);
  uVar5 = param_1[0x57] + lVar4;
  if (lVar3 == 0) {
    lVar3 = *(long *)(*(long *)(*(long *)(PTR_DAT_003be6b0 + 0x18) + 8) + 0x28);
    cVar2 = FUN_001ee080();
    if (cVar2 != '\0') {
      if (lVar3 != 0) goto LAB_001c3210;
      goto LAB_001c31b2;
    }
    if (lVar3 != 0) goto LAB_001c3125;
  }
  else {
    cVar2 = FUN_001ee080();
    if (cVar2 != '\0') {
LAB_001c3210:
      uVar5 = lVar3 + -1 + uVar5 & -lVar3;
LAB_001c31b2:
      iVar1 = (int)param_1[0x5e];
      param_1[0x59] = uVar5 - param_1[0x57];
      goto joined_r0x001c3142;
    }
LAB_001c3125:
    if ((-lVar3 & lVar3 + -1 + uVar5) != uVar5) {
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.cc",0x12a8,"set_offset");
    }
  }
  iVar1 = (int)param_1[0x5e];
joined_r0x001c3142:
  if (iVar1 != 7) {
    return;
  }
  lVar3 = FUN_001c2530(param_1);
  if (lVar3 == 0) {
    uVar5 = param_1[0x59];
  }
  else {
    if (param_1[0x57] != ((param_1[0x57] - 1U) + lVar3 & -lVar3)) {
                    /* WARNING: Subroutine does not return */
      FUN_0016cdf0("../../gold/output.cc",0x12b1,"set_offset");
    }
    uVar5 = lVar3 + -1 + param_1[0x59] & -lVar3;
  }
  param_1[0x59] = uVar5;
  return;
}

