
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: do_sized_write<32, true>
   DWARF original prototype: void do_sized_write<32,_true>(Output_section_headers * this,
   Output_file * of) */

void __thiscall
gold::Output_section_headers::do_sized_write<32,_true>(Output_section_headers *this,Output_file *of)

{
  byte bVar1;
  Output_file *this_1;
  long lVar2;
  Output_section *pOVar3;
  _func_int_varargs *p_Var4;
  pointer ppOVar5;
  Output_segment *pOVar6;
  Stringpool *secnamepool;
  Layout *layout;
  uint uVar7;
  int iVar8;
  ulong uVar9;
  Section_list *pSVar10;
  uint uVar11;
  size_t in_RDX;
  Segment_list *pSVar12;
  uchar *puVar13;
  Shdr_data<32> *pSVar14;
  Shdr_data<32> *pSVar15;
  pointer *pppOVar16;
  pointer ppOVar17;
  pointer ppOVar18;
  pointer local_50;
  Shdr_write<32,_true> oshdr;
  
  bVar1 = (this->super_Output_data).field_0x20;
  if ((bVar1 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
  }
  this_1 = (Output_file *)(this->super_Output_data).data_size_;
  if ((bVar1 & 4) != 0) {
    lVar2 = (this->super_Output_data).offset_;
    if ((lVar2 < 0) || (of->file_size_ < (long)&this_1->name_ + lVar2)) {
      Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1);
    }
    else {
      puVar13 = of->base_ + lVar2;
      pOVar3 = this->shstrtab_section_;
      puVar13[0] = '\0';
      puVar13[1] = '\0';
      puVar13[2] = '\0';
      puVar13[3] = '\0';
      puVar13[4] = '\0';
      puVar13[5] = '\0';
      puVar13[6] = '\0';
      puVar13[7] = '\0';
      puVar13[8] = '\0';
      puVar13[9] = '\0';
      puVar13[10] = '\0';
      puVar13[0xb] = '\0';
      puVar13[0xc] = '\0';
      puVar13[0xd] = '\0';
      puVar13[0xe] = '\0';
      puVar13[0xf] = '\0';
      puVar13[0x10] = '\0';
      puVar13[0x11] = '\0';
      puVar13[0x12] = '\0';
      puVar13[0x13] = '\0';
      uVar7 = (uint)((long)this_1 / 0x28);
      uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
      if ((ulong)((long)this_1 / 0x28) < 0xff00) {
        uVar7 = 0;
      }
      *(uint *)(puVar13 + 0x14) = uVar7;
      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];
      if (p_Var4 == Output_section::do_out_shndx) {
        uVar7 = pOVar3->out_shndx_;
        if (uVar7 == 0xffffffff) {
LAB_0020b739:
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");
        }
      }
      else {
        uVar7 = (*p_Var4)();
      }
      uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
      if (uVar7 < 0xff00) {
        uVar11 = 0;
      }
      *(uint *)(puVar13 + 0x18) = uVar11;
      pSVar12 = this->segment_list_;
      ppOVar5 = (pSVar12->
                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).
                _M_impl._M_finish;
      local_50 = (pSVar12->
                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).
                 _M_impl._M_start;
      puVar13[0x20] = '\0';
      puVar13[0x21] = '\0';
      puVar13[0x22] = '\0';
      puVar13[0x23] = '\0';
      puVar13[0x24] = '\0';
      puVar13[0x25] = '\0';
      puVar13[0x26] = '\0';
      puVar13[0x27] = '\0';
      uVar9 = (long)ppOVar5 - (long)local_50 >> 3;
      uVar11 = (uint)uVar9;
      uVar7 = 0;
      if (0xfffe < uVar9) {
        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;
      }
      pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28);
      *(uint *)(puVar13 + 0x1c) = uVar7;
      if (parameters->options_ == (General_options *)0x0) {
LAB_0020b78c:
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
      }
      if ((parameters->options_->relocatable_).value == false) {
        if (local_50 == ppOVar5) {
          uVar7 = 1;
        }
        else {
          uVar7 = 1;
          do {
            pOVar6 = *local_50;
            if (pOVar6->type_ == 1) {
              secnamepool = this->secnamepool_;
              pppOVar16 = &pOVar6->output_lists_[0].
                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>
                           ._M_impl._M_finish;
              layout = this->layout_;
              do {
                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;
                pSVar15 = pSVar14;
                if (ppOVar18 != *pppOVar16) {
                  do {
                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();
                    pSVar14 = pSVar15;
                    if ((char)iVar8 != '\0') {
                      pOVar3 = (Output_section *)*ppOVar18;
                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];
                      if (p_Var4 == Output_section::do_out_shndx) {
                        uVar11 = pOVar3->out_shndx_;
                        if (uVar11 == 0xffffffff) goto LAB_0020b739;
                      }
                      else {
                        uVar11 = (*p_Var4)(pOVar3);
                      }
                      if (uVar11 != uVar7) {
                    /* WARNING: Subroutine does not return */
                        do_gold_unreachable("../../gold/output.cc",0x1354,
                                            "write_section_headers_list");
                      }
                      pSVar14 = pSVar15 + 1;
                      uVar7 = uVar7 + 1;
                      oshdr.p_ = pSVar15;
                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);
                    }
                    ppOVar18 = ppOVar18 + 1;
                    pSVar15 = pSVar14;
                  } while (*pppOVar16 != ppOVar18);
                }
                pppOVar16 = pppOVar16 + 3;
              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);
              pSVar12 = this->segment_list_;
            }
            local_50 = local_50 + 1;
          } while ((pSVar12->
                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>
                   )._M_impl._M_finish != local_50);
        }
      }
      else {
        pSVar10 = this->section_list_;
        uVar7 = 1;
        ppOVar17 = (pSVar10->
                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                   )._M_impl._M_start;
        if (ppOVar17 !=
            (pSVar10->
            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
            _M_impl._M_finish) {
          pSVar15 = pSVar14;
          do {
            pOVar3 = *ppOVar17;
            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {
              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];
              if (p_Var4 == Output_section::do_out_shndx) {
                uVar11 = pOVar3->out_shndx_;
                if (uVar11 == 0xffffffff) goto LAB_0020b739;
              }
              else {
                uVar11 = (*p_Var4)();
              }
              if (uVar7 != uVar11) {
                    /* WARNING: Subroutine does not return */
                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");
              }
              pSVar14 = pSVar15 + 1;
              uVar7 = uVar7 + 1;
              oshdr.p_ = pSVar15;
              Output_section::write_header<32,_true>
                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);
              pSVar10 = this->section_list_;
            }
            ppOVar17 = ppOVar17 + 1;
            pSVar15 = pSVar14;
          } while ((pSVar10->
                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                   )._M_impl._M_finish != ppOVar17);
        }
      }
      pSVar10 = this->unattached_section_list_;
      ppOVar17 = (pSVar10->
                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
                 _M_impl._M_start;
      if (ppOVar17 !=
          (pSVar10->
          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl
          ._M_finish) {
        do {
          pOVar3 = *ppOVar17;
          if (pOVar3->type_ == 0x11) {
            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;
            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;
          }
          else {
LAB_0020b690:
            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];
            if (p_Var4 == Output_section::do_out_shndx) {
              uVar11 = pOVar3->out_shndx_;
              if (uVar11 == 0xffffffff) goto LAB_0020b739;
            }
            else {
              uVar11 = (*p_Var4)();
            }
            if (uVar11 != uVar7) {
                    /* WARNING: Subroutine does not return */
              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");
            }
            uVar7 = uVar7 + 1;
            oshdr.p_ = pSVar14;
            Output_section::write_header<32,_true>
                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);
            pSVar10 = this->unattached_section_list_;
            pSVar14 = pSVar14 + 1;
          }
          ppOVar17 = ppOVar17 + 1;
        } while ((pSVar10->
                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).
                 _M_impl._M_finish != ppOVar17);
      }
      if (((this->super_Output_data).field_0x20 & 4) != 0) {
        return;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0xe3,"offset");
}



void FUN_0020b390(long param_1,long param_2)

{
  long lVar1;
  long lVar2;
  code *pcVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  long *plVar6;
  char cVar7;
  uint uVar8;
  int iVar9;
  ulong uVar10;
  long *plVar11;
  long *plVar12;
  uint uVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  int iVar16;
  long *local_50;
  undefined8 *local_40 [2];
  
  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/output.h",0xcf,"data_size");
  }
  lVar1 = *(long *)(param_1 + 0x10);
  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {
    lVar2 = *(long *)(param_1 + 0x18);
    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {
      FUN_001f4570();
    }
    else {
      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));
      plVar12 = *(long **)(param_1 + 0x50);
      *puVar14 = 0;
      puVar14[1] = 0;
      *(undefined4 *)(puVar14 + 2) = 0;
      uVar10 = lVar1 / 0x28;
      uVar8 = (uint)uVar10;
      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      if (uVar10 < 0xff00) {
        uVar8 = 0;
      }
      *(uint *)((long)puVar14 + 0x14) = uVar8;
      pcVar3 = *(code **)(*plVar12 + 0x58);
      if (pcVar3 == FUN_001869e0) {
        uVar8 = *(uint *)((long)plVar12 + 0x7c);
        if (uVar8 == 0xffffffff) {
LAB_0020b739:
                    /* WARNING: Subroutine does not return */
          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");
        }
      }
      else {
        uVar8 = (*pcVar3)();
      }
      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      if (uVar8 < 0xff00) {
        uVar13 = 0;
      }
      *(uint *)(puVar14 + 3) = uVar13;
      plVar11 = *(long **)(param_1 + 0x30);
      plVar12 = (long *)plVar11[1];
      local_50 = (long *)*plVar11;
      puVar14[4] = 0;
      uVar10 = (long)plVar12 - (long)local_50 >> 3;
      uVar13 = (uint)uVar10;
      uVar8 = 0;
      if (0xfffe < uVar10) {
        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;
      }
      puVar15 = puVar14 + 5;
      *(uint *)((long)puVar14 + 0x1c) = uVar8;
      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
LAB_0020b78c:
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/parameters.h",0x5c,"options");
      }
      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {
        if (local_50 == plVar12) {
          iVar16 = 1;
        }
        else {
          iVar16 = 1;
          do {
            lVar1 = *local_50;
            if (*(int *)(lVar1 + 0x2f0) == 1) {
              uVar4 = *(undefined8 *)(param_1 + 0x48);
              plVar12 = (long *)(lVar1 + 8);
              uVar5 = *(undefined8 *)(param_1 + 0x28);
              do {
                plVar11 = (long *)plVar12[-1];
                puVar14 = puVar15;
                if (plVar11 != (long *)*plVar12) {
                  do {
                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();
                    puVar15 = puVar14;
                    if (cVar7 != '\0') {
                      plVar6 = (long *)*plVar11;
                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {
                        iVar9 = *(int *)((long)plVar6 + 0x7c);
                        if (iVar9 == -1) goto LAB_0020b739;
                      }
                      else {
                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);
                      }
                      if (iVar9 != iVar16) {
                    /* WARNING: Subroutine does not return */
                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");
                      }
                      puVar15 = puVar14 + 5;
                      iVar16 = iVar16 + 1;
                      local_40[0] = puVar14;
                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);
                    }
                    plVar11 = plVar11 + 1;
                    puVar14 = puVar15;
                  } while ((long *)*plVar12 != plVar11);
                }
                plVar12 = plVar12 + 3;
              } while ((long *)(lVar1 + 0x2c0) != plVar12);
              plVar11 = *(long **)(param_1 + 0x30);
            }
            local_50 = local_50 + 1;
          } while ((long *)plVar11[1] != local_50);
        }
      }
      else {
        plVar11 = *(long **)(param_1 + 0x38);
        iVar16 = 1;
        plVar12 = (long *)*plVar11;
        if (plVar12 != (long *)plVar11[1]) {
          puVar14 = puVar15;
          do {
            plVar6 = (long *)*plVar12;
            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||
               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {
              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {
                iVar9 = *(int *)((long)plVar6 + 0x7c);
                if (iVar9 == -1) goto LAB_0020b739;
              }
              else {
                iVar9 = (**(code **)(*plVar6 + 0x58))();
              }
              if (iVar16 != iVar9) {
                    /* WARNING: Subroutine does not return */
                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");
              }
              puVar15 = puVar14 + 5;
              iVar16 = iVar16 + 1;
              local_40[0] = puVar14;
              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),
                           local_40);
              plVar11 = *(long **)(param_1 + 0x38);
            }
            plVar12 = plVar12 + 1;
            puVar14 = puVar15;
          } while ((long *)plVar11[1] != plVar12);
        }
      }
      plVar12 = *(long **)(param_1 + 0x40);
      puVar14 = (undefined8 *)*plVar12;
      if (puVar14 != (undefined8 *)plVar12[1]) {
        do {
          plVar11 = (long *)*puVar14;
          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {
            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;
            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;
          }
          else {
LAB_0020b690:
            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {
              iVar9 = *(int *)((long)plVar11 + 0x7c);
              if (iVar9 == -1) goto LAB_0020b739;
            }
            else {
              iVar9 = (**(code **)(*plVar11 + 0x58))();
            }
            if (iVar9 != iVar16) {
                    /* WARNING: Subroutine does not return */
              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");
            }
            iVar16 = iVar16 + 1;
            local_40[0] = puVar15;
            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),
                         local_40);
            plVar12 = *(long **)(param_1 + 0x40);
            puVar15 = puVar15 + 5;
          }
          puVar14 = puVar14 + 1;
        } while ((undefined8 *)plVar12[1] != puVar14);
      }
      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {
        return;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/output.h",0xe3,"offset");
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
MOVZX EAX,byte ptr [RDI + 0x20]
TEST AL,0x2
JZ 0x0020b7c1
MOV R13,RDI
MOV RCX,qword ptr [RDI + 0x10]
TEST AL,0x4
JZ 0x0020b7a9
MOV RBX,qword ptr [RDI + 0x18]
TEST RBX,RBX
JS 0x0020b7a4
LEA RAX,[RBX + RCX*0x1]
CMP qword ptr [RSI + 0x10],RAX
JL 0x0020b7a4
MOV RAX,RCX
SAR RCX,0x3f
ADD RBX,qword ptr [RSI + 0x18]
MOV RDI,qword ptr [RDI + 0x50]
MOV RDX,0x6666666666666667
MOV qword ptr [RBX],0x0
IMUL RDX
MOV qword ptr [RBX + 0x8],0x0
MOV dword ptr [RBX + 0x10],0x0
SAR RDX,0x4
SUB RDX,RCX
LEA RCX,[0x1869e0]
MOV EAX,EDX
CMP RDX,0xfeff
MOV EDX,0x0
BSWAP EAX
CMOVBE EAX,EDX
MOV dword ptr [RBX + 0x14],EAX
MOV RAX,qword ptr [RDI]
MOV RAX,qword ptr [RAX + 0x58]
CMP RAX,RCX
JNZ 0x0020b732
MOV EAX,dword ptr [RDI + 0x7c]
CMP EAX,-0x1
JZ 0x0020b739
XOR ESI,ESI
MOV EDX,EAX
CMP EAX,0xfeff
BSWAP EDX
CMOVBE EDX,ESI
MOV dword ptr [RBX + 0x18],EDX
MOV RDX,qword ptr [R13 + 0x30]
MOV R8,qword ptr [RDX + 0x8]
MOV RDI,qword ptr [RDX]
MOV qword ptr [RBX + 0x20],0x0
MOV RAX,R8
SUB RAX,RDI
SAR RAX,0x3
CMP RAX,0xfffe
MOV ECX,EAX
MOV EAX,ESI
BSWAP ECX
CMOVA EAX,ECX
ADD RBX,0x28
MOV dword ptr [RBX + -0xc],EAX
MOV RAX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x0020b78c
CMP byte ptr [RAX + 0x5051],0x0
JNZ 0x0020b5b8
CMP RDI,R8
JZ 0x0020b751
LEA RAX,[RSP + 0x38]
MOV qword ptr [RSP + 0x28],RDI
MOV R12D,0x1
MOV qword ptr [RSP + 0x20],RAX
NOP dword ptr [RAX]
MOV RAX,qword ptr [RSP + 0x28]
MOV RAX,qword ptr [RAX]
CMP dword ptr [RAX + 0x2f0],0x1
JNZ 0x0020b663
MOV RCX,qword ptr [R13 + 0x48]
LEA RBP,[RAX + 0x8]
ADD RAX,0x2c0
MOV qword ptr [RSP + 0x18],RAX
MOV qword ptr [RSP + 0x8],RCX
MOV RCX,qword ptr [R13 + 0x28]
MOV qword ptr [RSP + 0x10],RCX
NOP word ptr CS:[RAX + RAX*0x1]
MOV R8,qword ptr [RBP + -0x8]
CMP R8,qword ptr [RBP]
JZ 0x0020b650
MOV R15,R8
JMP 0x0020b56c
MOV EAX,dword ptr [R14 + 0x7c]
CMP EAX,-0x1
JZ 0x0020b739
CMP EAX,R12D
JNZ 0x0020b599
MOV RCX,qword ptr [RSP + 0x20]
MOV RDX,qword ptr [RSP + 0x8]
MOV RDI,R14
MOV qword ptr [RSP + 0x38],RBX
MOV RSI,qword ptr [RSP + 0x10]
ADD RBX,0x28
ADD R12D,0x1
CALL 0x0020b160
ADD R15,0x8
CMP qword ptr [RBP],R15
JZ 0x0020b650
MOV RDI,qword ptr [R15]
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x30]
TEST AL,AL
JZ 0x0020b55e
MOV R14,qword ptr [R15]
LEA RCX,[0x1869e0]
MOV RAX,qword ptr [R14]
MOV RAX,qword ptr [RAX + 0x58]
CMP RAX,RCX
JZ 0x0020b528
MOV RDI,R14
CALL RAX
CMP EAX,R12D
JZ 0x0020b53a
LEA RDX,[0x380d00]
MOV ESI,0x1354
LEA RDI,[0x37e8cf]
CALL 0x0017c650
MOV RAX,qword ptr [R13 + 0x38]
MOV R12D,0x1
MOV RBP,qword ptr [RAX]
CMP RBP,qword ptr [RAX + 0x8]
JZ 0x0020b678
LEA R15,[RSP + 0x38]
JMP 0x0020b624
MOV EAX,dword ptr [RDI + 0x7c]
CMP EAX,-0x1
JZ 0x0020b739
CMP R12D,EAX
JNZ 0x0020b774
MOV RDX,qword ptr [R13 + 0x48]
MOV RSI,qword ptr [R13 + 0x28]
MOV RCX,R15
MOV qword ptr [RSP + 0x38],RBX
MOV RDI,qword ptr [RBP]
ADD RBX,0x28
ADD R12D,0x1
CALL 0x0020b160
MOV RAX,qword ptr [R13 + 0x38]
ADD RBP,0x8
CMP qword ptr [RAX + 0x8],RBP
JZ 0x0020b678
MOV RDI,qword ptr [RBP]
TEST byte ptr [RDI + 0x70],0x2
JNZ 0x0020b634
CMP dword ptr [RDI + 0x6c],0x11
JNZ 0x0020b61a
MOV RAX,qword ptr [RDI]
LEA RCX,[0x1869e0]
MOV RAX,qword ptr [RAX + 0x58]
CMP RAX,RCX
JZ 0x0020b5e0
CALL RAX
JMP 0x0020b5ec
ADD RBP,0x18
CMP qword ptr [RSP + 0x18],RBP
JNZ 0x0020b510
MOV RDX,qword ptr [R13 + 0x30]
ADD qword ptr [RSP + 0x28],0x8
MOV RAX,qword ptr [RSP + 0x28]
CMP qword ptr [RDX + 0x8],RAX
JNZ 0x0020b4d0
MOV RAX,qword ptr [R13 + 0x40]
LEA R15,[RSP + 0x38]
MOV RBP,qword ptr [RAX]
CMP RBP,qword ptr [RAX + 0x8]
JNZ 0x0020b6e7
JMP 0x0020b718
MOV RAX,qword ptr [RDI]
LEA RSI,[0x1869e0]
MOV RAX,qword ptr [RAX + 0x58]
CMP RAX,RSI
JNZ 0x0020b710
MOV EAX,dword ptr [RDI + 0x7c]
CMP EAX,-0x1
JZ 0x0020b739
CMP EAX,R12D
JNZ 0x0020b75c
MOV RDX,qword ptr [R13 + 0x48]
MOV RSI,qword ptr [R13 + 0x28]
MOV RCX,R15
MOV qword ptr [RSP + 0x38],RBX
MOV RDI,qword ptr [RBP]
ADD RBX,0x28
ADD R12D,0x1
CALL 0x0020b160
MOV RAX,qword ptr [R13 + 0x40]
ADD RBP,0x8
CMP qword ptr [RAX + 0x8],RBP
JZ 0x0020b718
MOV RDI,qword ptr [RBP]
CMP dword ptr [RDI + 0x6c],0x11
JNZ 0x0020b690
MOV RDX,qword ptr [0x0043e6b0]
MOV RDX,qword ptr [RDX + 0x10]
TEST RDX,RDX
JZ 0x0020b78c
CMP byte ptr [RDX + 0x5051],0x0
JZ 0x0020b690
JMP 0x0020b6dd
CALL RAX
JMP 0x0020b6af
TEST byte ptr [R13 + 0x20],0x4
JZ 0x0020b7a9
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL RAX
JMP 0x0020b446
LEA RDX,[0x380d80]
MOV ESI,0x1043
LEA RDI,[0x373454]
CALL 0x0017c650
MOV R12D,0x1
JMP 0x0020b678
LEA RDX,[0x380d20]
MOV ESI,0x167
LEA RDI,[0x37e8cf]
CALL 0x0017c650
LEA RDX,[0x380d20]
MOV ESI,0x155
LEA RDI,[0x37e8cf]
CALL 0x0017c650
LEA RDX,[0x380df0]
MOV ESI,0x5c
LEA RDI,[0x3726d0]
CALL 0x0017c650
CALL 0x001f4570
LEA RDX,[0x380d2f]
MOV ESI,0xe3
LEA RDI,[0x373454]
CALL 0x0017c650
LEA RDX,[0x380db0]
MOV ESI,0xcf
LEA RDI,[0x373454]
CALL 0x0017c650
(translation_unit "void FUN_0020b390(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  code *pcVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  char cVar7;\n  uint uVar8;\n  int iVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  int iVar16;\n  long *local_50;\n  undefined8 *local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar1 = *(long *)(param_1 + 0x10);\n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0xe3,"offset");\n}\n\n" (function_definition "void FUN_0020b390(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  code *pcVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  char cVar7;\n  uint uVar8;\n  int iVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  int iVar16;\n  long *local_50;\n  undefined8 *local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar1 = *(long *)(param_1 + 0x10);\n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0xe3,"offset");\n}" primitive_type (function_declarator "FUN_0020b390(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  code *pcVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  char cVar7;\n  uint uVar8;\n  int iVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  int iVar16;\n  long *local_50;\n  undefined8 *local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar1 = *(long *)(param_1 + 0x10);\n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.h",0xe3,"offset");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "long *local_50;" (sized_type_specifier "long" long) (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0017c650("../../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 ") ))) ;) })) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }" { (expression_statement "lVar2 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" if (parenthesized_expression "((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1))" ( (binary_expression "(lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)" (parenthesized_expression "(lVar2 < 0)" ( (binary_expression "lVar2 < 0" identifier < number_literal) )) || (parenthesized_expression "(*(long *)(param_2 + 0x10) < lVar2 + lVar1)" ( (binary_expression "*(long *)(param_2 + 0x10) < lVar2 + lVar1" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) < (binary_expression "lVar2 + lVar1" identifier + identifier)) ))) )) (compound_statement "{\n      FUN_001f4570();\n    }" { (expression_statement "FUN_001f4570();" (call_expression "FUN_001f4570()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" else (compound_statement "{\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" { (expression_statement "puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));" (assignment_expression "puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18))" identifier = (cast_expression "(undefined8 *)(lVar2 + *(long *)(param_2 + 0x18))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + *(long *)(param_2 + 0x18))" ( (binary_expression "lVar2 + *(long *)(param_2 + 0x18)" identifier + (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) )))) ;) (expression_statement "plVar12 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x50)" identifier = (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*puVar14 = 0;" (assignment_expression "*puVar14 = 0" (pointer_expression "*puVar14" * identifier) = number_literal) ;) (expression_statement "puVar14[1] = 0;" (assignment_expression "puVar14[1] = 0" (subscript_expression "puVar14[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar14 + 2) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + 2) = 0" (pointer_expression "*(undefined4 *)(puVar14 + 2)" * (cast_expression "(undefined4 *)(puVar14 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 2)" ( (binary_expression "puVar14 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar10 = lVar1 / 0x28;" (assignment_expression "uVar10 = lVar1 / 0x28" identifier = (binary_expression "lVar1 / 0x28" identifier / number_literal)) ;) (expression_statement "uVar8 = (uint)uVar10;" (assignment_expression "uVar8 = (uint)uVar10" identifier = (cast_expression "(uint)uVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }" if (parenthesized_expression "(uVar10 < 0xff00)" ( (binary_expression "uVar10 < 0xff00" identifier < number_literal) )) (compound_statement "{\n        uVar8 = 0;\n      }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) })) (expression_statement "*(uint *)((long)puVar14 + 0x14) = uVar8;" (assignment_expression "*(uint *)((long)puVar14 + 0x14) = uVar8" (pointer_expression "*(uint *)((long)puVar14 + 0x14)" * (cast_expression "(uint *)((long)puVar14 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + 0x14)" ( (binary_expression "(long)puVar14 + 0x14" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(*plVar12 + 0x58);" (assignment_expression "pcVar3 = *(code **)(*plVar12 + 0x58)" identifier = (pointer_expression "*(code **)(*plVar12 + 0x58)" * (cast_expression "(code **)(*plVar12 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar12 + 0x58)" ( (binary_expression "*plVar12 + 0x58" (pointer_expression "*plVar12" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }" if (parenthesized_expression "(pcVar3 == FUN_001869e0)" ( (binary_expression "pcVar3 == FUN_001869e0" identifier == identifier) )) (compound_statement "{\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }" { (expression_statement "uVar8 = *(uint *)((long)plVar12 + 0x7c);" (assignment_expression "uVar8 = *(uint *)((long)plVar12 + 0x7c)" identifier = (pointer_expression "*(uint *)((long)plVar12 + 0x7c)" * (cast_expression "(uint *)((long)plVar12 + 0x7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + 0x7c)" ( (binary_expression "(long)plVar12 + 0x7c" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }" { (labeled_statement "LAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");" statement_identifier : comment (expression_statement "FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");" (call_expression "FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx")" identifier (argument_list "("../../gold/output.h",0x1043,"do_out_shndx")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_out_shndx"" " string_content ") ))) ;)) })) }) (else_clause "else {\n        uVar8 = (*pcVar3)();\n      }" else (compound_statement "{\n        uVar8 = (*pcVar3)();\n      }" { (expression_statement "uVar8 = (*pcVar3)();" (assignment_expression "uVar8 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }" if (parenthesized_expression "(uVar8 < 0xff00)" ( (binary_expression "uVar8 < 0xff00" identifier < number_literal) )) (compound_statement "{\n        uVar13 = 0;\n      }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) })) (expression_statement "*(uint *)(puVar14 + 3) = uVar13;" (assignment_expression "*(uint *)(puVar14 + 3) = uVar13" (pointer_expression "*(uint *)(puVar14 + 3)" * (cast_expression "(uint *)(puVar14 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 3)" ( (binary_expression "puVar14 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "plVar11 = *(long **)(param_1 + 0x30);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x30)" identifier = (pointer_expression "*(long **)(param_1 + 0x30)" * (cast_expression "(long **)(param_1 + 0x30)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "plVar12 = (long *)plVar11[1];" (assignment_expression "plVar12 = (long *)plVar11[1]" identifier = (cast_expression "(long *)plVar11[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "local_50 = (long *)*plVar11;" (assignment_expression "local_50 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (expression_statement "puVar14[4] = 0;" (assignment_expression "puVar14[4] = 0" (subscript_expression "puVar14[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar10 = (long)plVar12 - (long)local_50 >> 3;" (assignment_expression "uVar10 = (long)plVar12 - (long)local_50 >> 3" identifier = (binary_expression "(long)plVar12 - (long)local_50 >> 3" (binary_expression "(long)plVar12 - (long)local_50" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (expression_statement "uVar13 = (uint)uVar10;" (assignment_expression "uVar13 = (uint)uVar10" identifier = (cast_expression "(uint)uVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }" if (parenthesized_expression "(0xfffe < uVar10)" ( (binary_expression "0xfffe < uVar10" number_literal < identifier) )) (compound_statement "{\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }" { (expression_statement "uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;" (assignment_expression "uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18" identifier = (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8" (binary_expression "uVar13 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar13 & 0xff0000) >> 8" (parenthesized_expression "(uVar13 & 0xff0000)" ( (binary_expression "uVar13 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar13 & 0xff00) << 8" (parenthesized_expression "(uVar13 & 0xff00)" ( (binary_expression "uVar13 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar13 << 0x18" identifier << number_literal))) ;) })) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" identifier = (binary_expression "puVar14 + 5" identifier + number_literal)) ;) (expression_statement "*(uint *)((long)puVar14 + 0x1c) = uVar8;" (assignment_expression "*(uint *)((long)puVar14 + 0x1c) = uVar8" (pointer_expression "*(uint *)((long)puVar14 + 0x1c)" * (cast_expression "(uint *)((long)puVar14 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + 0x1c)" ( (binary_expression "(long)puVar14 + 0x1c" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" { (labeled_statement "LAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }" { (if_statement "if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" if (parenthesized_expression "(local_50 == plVar12)" ( (binary_expression "local_50 == plVar12" identifier == identifier) )) (compound_statement "{\n          iVar16 = 1;\n        }" { (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" else (compound_statement "{\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" { (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" identifier = number_literal) ;) (do_statement "do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);" do (compound_statement "{\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          }" { (expression_statement "lVar1 = *local_50;" (assignment_expression "lVar1 = *local_50" identifier = (pointer_expression "*local_50" * identifier)) ;) (if_statement "if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }" if (parenthesized_expression "(*(int *)(lVar1 + 0x2f0) == 1)" ( (binary_expression "*(int *)(lVar1 + 0x2f0) == 1" (pointer_expression "*(int *)(lVar1 + 0x2f0)" * (cast_expression "(int *)(lVar1 + 0x2f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2f0)" ( (binary_expression "lVar1 + 0x2f0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }" { (expression_statement "uVar4 = *(undefined8 *)(param_1 + 0x48);" (assignment_expression "uVar4 = *(undefined8 *)(param_1 + 0x48)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x48)" * (cast_expression "(undefined8 *)(param_1 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "plVar12 = (long *)(lVar1 + 8);" (assignment_expression "plVar12 = (long *)(lVar1 + 8)" identifier = (cast_expression "(long *)(lVar1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) ;) (expression_statement "uVar5 = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "uVar5 = *(undefined8 *)(param_1 + 0x28)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (do_statement "do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);" do (compound_statement "{\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              }" { (expression_statement "plVar11 = (long *)plVar12[-1];" (assignment_expression "plVar11 = (long *)plVar12[-1]" identifier = (cast_expression "(long *)plVar12[-1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[-1]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) (if_statement "if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }" if (parenthesized_expression "(plVar11 != (long *)*plVar12)" ( (binary_expression "plVar11 != (long *)*plVar12" identifier != (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) )) (compound_statement "{\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }" { (do_statement "do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);" do (compound_statement "{\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  }" { (expression_statement "cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();" (assignment_expression "cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))()" identifier = (call_expression "(**(code **)(*(long *)*plVar11 + 0x30))()" (parenthesized_expression "(**(code **)(*(long *)*plVar11 + 0x30))" ( (pointer_expression "**(code **)(*(long *)*plVar11 + 0x30)" * (pointer_expression "*(code **)(*(long *)*plVar11 + 0x30)" * (cast_expression "(code **)(*(long *)*plVar11 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)*plVar11 + 0x30)" ( (binary_expression "*(long *)*plVar11 + 0x30" (pointer_expression "*(long *)*plVar11" * (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" identifier = identifier) ;) (if_statement "if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }" { (expression_statement "plVar6 = (long *)*plVar11;" (assignment_expression "plVar6 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" if (parenthesized_expression "(*(code **)(*plVar6 + 0x58) == FUN_001869e0)" ( (binary_expression "*(code **)(*plVar6 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar6 + 0x58)" * (cast_expression "(code **)(*plVar6 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x58)" ( (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }" { (expression_statement "iVar9 = *(int *)((long)plVar6 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar6 + 0x7c)" identifier = (pointer_expression "*(int *)((long)plVar6 + 0x7c)" * (cast_expression "(int *)((long)plVar6 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar6 + 0x7c)" ( (binary_expression "(long)plVar6 + 0x7c" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" else (compound_statement "{\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" { (expression_statement "iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);" (assignment_expression "iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6)" identifier = (call_expression "(**(code **)(*plVar6 + 0x58))(plVar6)" (parenthesized_expression "(**(code **)(*plVar6 + 0x58))" ( (pointer_expression "**(code **)(*plVar6 + 0x58)" * (pointer_expression "*(code **)(*plVar6 + 0x58)" * (cast_expression "(code **)(*plVar6 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x58)" ( (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" * identifier) + number_literal) ))))) )) (argument_list "(plVar6)" ( identifier )))) ;) }))) (if_statement "if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }" if (parenthesized_expression "(iVar9 != iVar16)" ( (binary_expression "iVar9 != iVar16" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }" { comment (expression_statement "FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");" (call_expression "FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list")" identifier (argument_list "("../../gold/output.cc",0x1354,"write_section_headers_list")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""write_section_headers_list"" " string_content ") ))) ;) })) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" identifier = (binary_expression "puVar14 + 5" identifier + number_literal)) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_40[0] = puVar14;" (assignment_expression "local_40[0] = puVar14" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0020b160(plVar6,uVar5,uVar4,local_40);" (call_expression "FUN_0020b160(plVar6,uVar5,uVar4,local_40)" identifier (argument_list "(plVar6,uVar5,uVar4,local_40)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "((long *)*plVar12 != plVar11)" ( (binary_expression "(long *)*plVar12 != plVar11" (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier)) != identifier) )) ;) })) (expression_statement "plVar12 = plVar12 + 3;" (assignment_expression "plVar12 = plVar12 + 3" identifier = (binary_expression "plVar12 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "((long *)(lVar1 + 0x2c0) != plVar12)" ( (binary_expression "(long *)(lVar1 + 0x2c0) != plVar12" (cast_expression "(long *)(lVar1 + 0x2c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2c0)" ( (binary_expression "lVar1 + 0x2c0" identifier + number_literal) ))) != identifier) )) ;) (expression_statement "plVar11 = *(long **)(param_1 + 0x30);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x30)" identifier = (pointer_expression "*(long **)(param_1 + 0x30)" * (cast_expression "(long **)(param_1 + 0x30)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) })) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((long *)plVar11[1] != local_50)" ( (binary_expression "(long *)plVar11[1] != local_50" (cast_expression "(long *)plVar11[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[1]" identifier [ number_literal ])) != identifier) )) ;) }))) }) (else_clause "else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" else (compound_statement "{\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" { (expression_statement "plVar11 = *(long **)(param_1 + 0x38);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x38)" identifier = (pointer_expression "*(long **)(param_1 + 0x38)" * (cast_expression "(long **)(param_1 + 0x38)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" identifier = number_literal) ;) (expression_statement "plVar12 = (long *)*plVar11;" (assignment_expression "plVar12 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }" if (parenthesized_expression "(plVar12 != (long *)plVar11[1])" ( (binary_expression "plVar12 != (long *)plVar11[1]" identifier != (cast_expression "(long *)plVar11[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[1]" identifier [ number_literal ]))) )) (compound_statement "{\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }" { (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) (do_statement "do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);" do (compound_statement "{\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          }" { (expression_statement "plVar6 = (long *)*plVar12;" (assignment_expression "plVar6 = (long *)*plVar12" identifier = (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (if_statement "if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }" if (parenthesized_expression "(((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11))" ( (binary_expression "((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)" (parenthesized_expression "((*(byte *)(plVar6 + 0xe) & 2) != 0)" ( (binary_expression "(*(byte *)(plVar6 + 0xe) & 2) != 0" (parenthesized_expression "(*(byte *)(plVar6 + 0xe) & 2)" ( (binary_expression "*(byte *)(plVar6 + 0xe) & 2" (pointer_expression "*(byte *)(plVar6 + 0xe)" * (cast_expression "(byte *)(plVar6 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar6 + 0xe)" ( (binary_expression "plVar6 + 0xe" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)" ( (comma_expression "puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11" (assignment_expression "puVar15 = puVar14" identifier = identifier) , (binary_expression "*(int *)((long)plVar6 + 0x6c) == 0x11" (pointer_expression "*(int *)((long)plVar6 + 0x6c)" * (cast_expression "(int *)((long)plVar6 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar6 + 0x6c)" ( (binary_expression "(long)plVar6 + 0x6c" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }" { (if_statement "if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" if (parenthesized_expression "(*(code **)(*plVar6 + 0x58) == FUN_001869e0)" ( (binary_expression "*(code **)(*plVar6 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar6 + 0x58)" * (cast_expression "(code **)(*plVar6 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x58)" ( (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }" { (expression_statement "iVar9 = *(int *)((long)plVar6 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar6 + 0x7c)" identifier = (pointer_expression "*(int *)((long)plVar6 + 0x7c)" * (cast_expression "(int *)((long)plVar6 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar6 + 0x7c)" ( (binary_expression "(long)plVar6 + 0x7c" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" else (compound_statement "{\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" { (expression_statement "iVar9 = (**(code **)(*plVar6 + 0x58))();" (assignment_expression "iVar9 = (**(code **)(*plVar6 + 0x58))()" identifier = (call_expression "(**(code **)(*plVar6 + 0x58))()" (parenthesized_expression "(**(code **)(*plVar6 + 0x58))" ( (pointer_expression "**(code **)(*plVar6 + 0x58)" * (pointer_expression "*(code **)(*plVar6 + 0x58)" * (cast_expression "(code **)(*plVar6 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x58)" ( (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }))) (if_statement "if (iVar16 != iVar9) {\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }" if (parenthesized_expression "(iVar16 != iVar9)" ( (binary_expression "iVar16 != iVar9" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }" { comment (expression_statement "FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");" (call_expression "FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write")" identifier (argument_list "("../../gold/output.cc",0x155,"do_sized_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") ))) ;) })) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" identifier = (binary_expression "puVar14 + 5" identifier + number_literal)) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_40[0] = puVar14;" (assignment_expression "local_40[0] = puVar14" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);" (call_expression "FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40)" identifier (argument_list "(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40)" ( (pointer_expression "*plVar12" * identifier) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x48)" * (cast_expression "(undefined8 *)(param_1 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "plVar11 = *(long **)(param_1 + 0x38);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x38)" identifier = (pointer_expression "*(long **)(param_1 + 0x38)" * (cast_expression "(long **)(param_1 + 0x38)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) })) (expression_statement "plVar12 = plVar12 + 1;" (assignment_expression "plVar12 = plVar12 + 1" identifier = (binary_expression "plVar12 + 1" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "((long *)plVar11[1] != plVar12)" ( (binary_expression "(long *)plVar11[1] != plVar12" (cast_expression "(long *)plVar11[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[1]" identifier [ number_literal ])) != identifier) )) ;) })) }))) (expression_statement "plVar12 = *(long **)(param_1 + 0x40);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x40)" identifier = (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar14 = (undefined8 *)*plVar12;" (assignment_expression "puVar14 = (undefined8 *)*plVar12" identifier = (cast_expression "(undefined8 *)*plVar12" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (if_statement "if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }" if (parenthesized_expression "(puVar14 != (undefined8 *)plVar12[1])" ( (binary_expression "puVar14 != (undefined8 *)plVar12[1]" identifier != (cast_expression "(undefined8 *)plVar12[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[1]" identifier [ number_literal ]))) )) (compound_statement "{\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }" { (do_statement "do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);" do (compound_statement "{\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        }" { (expression_statement "plVar11 = (long *)*puVar14;" (assignment_expression "plVar11 = (long *)*puVar14" identifier = (cast_expression "(long *)*puVar14" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (if_statement "if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" if (parenthesized_expression "(*(int *)((long)plVar11 + 0x6c) == 0x11)" ( (binary_expression "*(int *)((long)plVar11 + 0x6c) == 0x11" (pointer_expression "*(int *)((long)plVar11 + 0x6c)" * (cast_expression "(int *)((long)plVar11 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0x6c)" ( (binary_expression "(long)plVar11 + 0x6c" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }" { (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0020b78c;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0020b690;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" else (compound_statement "{\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" { (labeled_statement "LAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" statement_identifier : (if_statement "if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" if (parenthesized_expression "(*(code **)(*plVar11 + 0x58) == FUN_001869e0)" ( (binary_expression "*(code **)(*plVar11 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar11 + 0x58)" * (cast_expression "(code **)(*plVar11 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x58)" ( (binary_expression "*plVar11 + 0x58" (pointer_expression "*plVar11" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }" { (expression_statement "iVar9 = *(int *)((long)plVar11 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar11 + 0x7c)" identifier = (pointer_expression "*(int *)((long)plVar11 + 0x7c)" * (cast_expression "(int *)((long)plVar11 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0x7c)" ( (binary_expression "(long)plVar11 + 0x7c" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" else (compound_statement "{\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" { (expression_statement "iVar9 = (**(code **)(*plVar11 + 0x58))();" (assignment_expression "iVar9 = (**(code **)(*plVar11 + 0x58))()" identifier = (call_expression "(**(code **)(*plVar11 + 0x58))()" (parenthesized_expression "(**(code **)(*plVar11 + 0x58))" ( (pointer_expression "**(code **)(*plVar11 + 0x58)" * (pointer_expression "*(code **)(*plVar11 + 0x58)" * (cast_expression "(code **)(*plVar11 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x58)" ( (binary_expression "*plVar11 + 0x58" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) })))) (if_statement "if (iVar9 != iVar16) {\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }" if (parenthesized_expression "(iVar9 != iVar16)" ( (binary_expression "iVar9 != iVar16" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }" { comment (expression_statement "FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");" (call_expression "FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write")" identifier (argument_list "("../../gold/output.cc",0x167,"do_sized_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") ))) ;) })) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_40[0] = puVar15;" (assignment_expression "local_40[0] = puVar15" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);" (call_expression "FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40)" identifier (argument_list "(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40)" ( (pointer_expression "*puVar14" * identifier) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x48)" * (cast_expression "(undefined8 *)(param_1 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "plVar12 = *(long **)(param_1 + 0x40);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x40)" identifier = (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = puVar15 + 5;" (assignment_expression "puVar15 = puVar15 + 5" identifier = (binary_expression "puVar15 + 5" identifier + number_literal)) ;) }))) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined8 *)plVar12[1] != puVar14)" ( (binary_expression "(undefined8 *)plVar12[1] != puVar14" (cast_expression "(undefined8 *)plVar12[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[1]" identifier [ number_literal ])) != identifier) )) ;) })) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) }))) })) comment (expression_statement "FUN_0017c650("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0017c650("../../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 ") ))) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original name: do_sized_write<32, true>\n   DWARF original prototype: void do_sized_write<32,_true>(Output_section_headers * this,\n   Output_file * of) */\n\nvoid __thiscall\ngold::Output_section_headers::do_sized_write<32,_true>(Output_section_headers *this,Output_file *of)\n\n{\n  byte bVar1;\n  Output_file *this_1;\n  long lVar2;\n  Output_section *pOVar3;\n  _func_int_varargs *p_Var4;\n  pointer ppOVar5;\n  Output_segment *pOVar6;\n  Stringpool *secnamepool;\n  Layout *layout;\n  uint uVar7;\n  int iVar8;\n  ulong uVar9;\n  Section_list *pSVar10;\n  uint uVar11;\n  size_t in_RDX;\n  Segment_list *pSVar12;\n  uchar *puVar13;\n  Shdr_data<32> *pSVar14;\n  Shdr_data<32> *pSVar15;\n  pointer *pppOVar16;\n  pointer ppOVar17;\n  pointer ppOVar18;\n  pointer local_50;\n  Shdr_write<32,_true> oshdr;\n  \n  bVar1 = (this->super_Output_data).field_0x20;\n  if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }\n  this_1 = (Output_file *)(this->super_Output_data).data_size_;\n  if ((bVar1 & 4) != 0) {\n    lVar2 = (this->super_Output_data).offset_;\n    if ((lVar2 < 0) || (of->file_size_ < (long)&this_1->name_ + lVar2)) {\n      Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1);\n    }\n    else {\n      puVar13 = of->base_ + lVar2;\n      pOVar3 = this->shstrtab_section_;\n      puVar13[0] = '\0';\n      puVar13[1] = '\0';\n      puVar13[2] = '\0';\n      puVar13[3] = '\0';\n      puVar13[4] = '\0';\n      puVar13[5] = '\0';\n      puVar13[6] = '\0';\n      puVar13[7] = '\0';\n      puVar13[8] = '\0';\n      puVar13[9] = '\0';\n      puVar13[10] = '\0';\n      puVar13[0xb] = '\0';\n      puVar13[0xc] = '\0';\n      puVar13[0xd] = '\0';\n      puVar13[0xe] = '\0';\n      puVar13[0xf] = '\0';\n      puVar13[0x10] = '\0';\n      puVar13[0x11] = '\0';\n      puVar13[0x12] = '\0';\n      puVar13[0x13] = '\0';\n      uVar7 = (uint)((long)this_1 / 0x28);\n      uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if ((ulong)((long)this_1 / 0x28) < 0xff00) {\n        uVar7 = 0;\n      }\n      *(uint *)(puVar13 + 0x14) = uVar7;\n      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n      if (p_Var4 == Output_section::do_out_shndx) {\n        uVar7 = pOVar3->out_shndx_;\n        if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar7 = (*p_Var4)();\n      }\n      uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if (uVar7 < 0xff00) {\n        uVar11 = 0;\n      }\n      *(uint *)(puVar13 + 0x18) = uVar11;\n      pSVar12 = this->segment_list_;\n      ppOVar5 = (pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish;\n      local_50 = (pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start;\n      puVar13[0x20] = '\0';\n      puVar13[0x21] = '\0';\n      puVar13[0x22] = '\0';\n      puVar13[0x23] = '\0';\n      puVar13[0x24] = '\0';\n      puVar13[0x25] = '\0';\n      puVar13[0x26] = '\0';\n      puVar13[0x27] = '\0';\n      uVar9 = (long)ppOVar5 - (long)local_50 >> 3;\n      uVar11 = (uint)uVar9;\n      uVar7 = 0;\n      if (0xfffe < uVar9) {\n        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;\n      }\n      pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28);\n      *(uint *)(puVar13 + 0x1c) = uVar7;\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->relocatable_).value == false) {\n        if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }\n      }\n      else {\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }\n      pSVar10 = this->unattached_section_list_;\n      ppOVar17 = (pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start;\n      if (ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish) {\n        do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);\n      }\n      if (((this->super_Output_data).field_0x20 & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n}\n\n" comment comment (declaration "void __thiscall\ngold::Output_section_headers::do_sized_write<32,_true>(Output_section_headers *this,Output_file *of)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section_headers::" identifier : : identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>(Output_section_headers" identifier > ( identifier) (pointer_declarator "*this" * identifier) , (ERROR "Output_file *of)\n\n{\n  byte" identifier (pointer_declarator "*of" * identifier) ) { identifier) identifier ;) (declaration "Output_file *this_1;" type_identifier (pointer_declarator "*this_1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "Output_section *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "_func_int_varargs *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "pointer ppOVar5;" type_identifier identifier ;) (declaration "Output_segment *pOVar6;" type_identifier (pointer_declarator "*pOVar6" * identifier) ;) (declaration "Stringpool *secnamepool;" type_identifier (pointer_declarator "*secnamepool" * identifier) ;) (declaration "Layout *layout;" type_identifier (pointer_declarator "*layout" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "Section_list *pSVar10;" type_identifier (pointer_declarator "*pSVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "size_t in_RDX;" primitive_type identifier ;) (declaration "Segment_list *pSVar12;" type_identifier (pointer_declarator "*pSVar12" * identifier) ;) (declaration "uchar *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (expression_statement "Shdr_data<32> *pSVar14;" (update_expression "Shdr_data<32> *pSVar14" (binary_expression "Shdr_data<32> *pSVar14" (binary_expression "Shdr_data<32" identifier < number_literal) > (pointer_expression "*pSVar14" * identifier)) --) ;) (expression_statement "Shdr_data<32> *pSVar15;" (update_expression "Shdr_data<32> *pSVar15" (binary_expression "Shdr_data<32> *pSVar15" (binary_expression "Shdr_data<32" identifier < number_literal) > (pointer_expression "*pSVar15" * identifier)) --) ;) (declaration "pointer *pppOVar16;" type_identifier (pointer_declarator "*pppOVar16" * identifier) ;) (declaration "pointer ppOVar17;" type_identifier identifier ;) (declaration "pointer ppOVar18;" type_identifier identifier ;) (declaration "pointer local_50;" type_identifier identifier ;) (expression_statement "Shdr_write<32,_true> oshdr;" (update_expression "Shdr_write<32,_true> oshdr" (binary_expression "Shdr_write<32,_true> oshdr" (binary_expression "Shdr_write<32" identifier < number_literal) (ERROR ",_true" , identifier) > identifier) --) ;) (expression_statement "bVar1 = (this->super_Output_data).field_0x20;" (assignment_expression "bVar1 = (this->super_Output_data).field_0x20" identifier = (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" { 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 ") ))) ;) })) (expression_statement "this_1 = (Output_file *)(this->super_Output_data).data_size_;" (assignment_expression "this_1 = (Output_file *)(this->super_Output_data).data_size_" identifier = (cast_expression "(Output_file *)(this->super_Output_data).data_size_" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->super_Output_data).data_size_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((bVar1 & 4) != 0) {\n    lVar2 = (this->super_Output_data).offset_;\n    if ((lVar2 < 0) || (of->file_size_ < (long)&this_1->name_ + lVar2)) {\n      Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1);\n    }\n    else {\n      puVar13 = of->base_ + lVar2;\n      pOVar3 = this->shstrtab_section_;\n      puVar13[0] = '\0';\n      puVar13[1] = '\0';\n      puVar13[2] = '\0';\n      puVar13[3] = '\0';\n      puVar13[4] = '\0';\n      puVar13[5] = '\0';\n      puVar13[6] = '\0';\n      puVar13[7] = '\0';\n      puVar13[8] = '\0';\n      puVar13[9] = '\0';\n      puVar13[10] = '\0';\n      puVar13[0xb] = '\0';\n      puVar13[0xc] = '\0';\n      puVar13[0xd] = '\0';\n      puVar13[0xe] = '\0';\n      puVar13[0xf] = '\0';\n      puVar13[0x10] = '\0';\n      puVar13[0x11] = '\0';\n      puVar13[0x12] = '\0';\n      puVar13[0x13] = '\0';\n      uVar7 = (uint)((long)this_1 / 0x28);\n      uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if ((ulong)((long)this_1 / 0x28) < 0xff00) {\n        uVar7 = 0;\n      }\n      *(uint *)(puVar13 + 0x14) = uVar7;\n      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n      if (p_Var4 == Output_section::do_out_shndx) {\n        uVar7 = pOVar3->out_shndx_;\n        if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar7 = (*p_Var4)();\n      }\n      uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if (uVar7 < 0xff00) {\n        uVar11 = 0;\n      }\n      *(uint *)(puVar13 + 0x18) = uVar11;\n      pSVar12 = this->segment_list_;\n      ppOVar5 = (pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish;\n      local_50 = (pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start;\n      puVar13[0x20] = '\0';\n      puVar13[0x21] = '\0';\n      puVar13[0x22] = '\0';\n      puVar13[0x23] = '\0';\n      puVar13[0x24] = '\0';\n      puVar13[0x25] = '\0';\n      puVar13[0x26] = '\0';\n      puVar13[0x27] = '\0';\n      uVar9 = (long)ppOVar5 - (long)local_50 >> 3;\n      uVar11 = (uint)uVar9;\n      uVar7 = 0;\n      if (0xfffe < uVar9) {\n        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;\n      }\n      pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28);\n      *(uint *)(puVar13 + 0x1c) = uVar7;\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->relocatable_).value == false) {\n        if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }\n      }\n      else {\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }\n      pSVar10 = this->unattached_section_list_;\n      ppOVar17 = (pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start;\n      if (ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish) {\n        do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);\n      }\n      if (((this->super_Output_data).field_0x20 & 4) != 0) {\n        return;\n      }\n    }\n  }" if (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar2 = (this->super_Output_data).offset_;\n    if ((lVar2 < 0) || (of->file_size_ < (long)&this_1->name_ + lVar2)) {\n      Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1);\n    }\n    else {\n      puVar13 = of->base_ + lVar2;\n      pOVar3 = this->shstrtab_section_;\n      puVar13[0] = '\0';\n      puVar13[1] = '\0';\n      puVar13[2] = '\0';\n      puVar13[3] = '\0';\n      puVar13[4] = '\0';\n      puVar13[5] = '\0';\n      puVar13[6] = '\0';\n      puVar13[7] = '\0';\n      puVar13[8] = '\0';\n      puVar13[9] = '\0';\n      puVar13[10] = '\0';\n      puVar13[0xb] = '\0';\n      puVar13[0xc] = '\0';\n      puVar13[0xd] = '\0';\n      puVar13[0xe] = '\0';\n      puVar13[0xf] = '\0';\n      puVar13[0x10] = '\0';\n      puVar13[0x11] = '\0';\n      puVar13[0x12] = '\0';\n      puVar13[0x13] = '\0';\n      uVar7 = (uint)((long)this_1 / 0x28);\n      uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if ((ulong)((long)this_1 / 0x28) < 0xff00) {\n        uVar7 = 0;\n      }\n      *(uint *)(puVar13 + 0x14) = uVar7;\n      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n      if (p_Var4 == Output_section::do_out_shndx) {\n        uVar7 = pOVar3->out_shndx_;\n        if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar7 = (*p_Var4)();\n      }\n      uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if (uVar7 < 0xff00) {\n        uVar11 = 0;\n      }\n      *(uint *)(puVar13 + 0x18) = uVar11;\n      pSVar12 = this->segment_list_;\n      ppOVar5 = (pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish;\n      local_50 = (pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start;\n      puVar13[0x20] = '\0';\n      puVar13[0x21] = '\0';\n      puVar13[0x22] = '\0';\n      puVar13[0x23] = '\0';\n      puVar13[0x24] = '\0';\n      puVar13[0x25] = '\0';\n      puVar13[0x26] = '\0';\n      puVar13[0x27] = '\0';\n      uVar9 = (long)ppOVar5 - (long)local_50 >> 3;\n      uVar11 = (uint)uVar9;\n      uVar7 = 0;\n      if (0xfffe < uVar9) {\n        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;\n      }\n      pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28);\n      *(uint *)(puVar13 + 0x1c) = uVar7;\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->relocatable_).value == false) {\n        if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }\n      }\n      else {\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }\n      pSVar10 = this->unattached_section_list_;\n      ppOVar17 = (pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start;\n      if (ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish) {\n        do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);\n      }\n      if (((this->super_Output_data).field_0x20 & 4) != 0) {\n        return;\n      }\n    }\n  }" { (expression_statement "lVar2 = (this->super_Output_data).offset_;" (assignment_expression "lVar2 = (this->super_Output_data).offset_" identifier = (field_expression "(this->super_Output_data).offset_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((lVar2 < 0) || (of->file_size_ < (long)&this_1->name_ + lVar2)) {\n      Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1);\n    }\n    else {\n      puVar13 = of->base_ + lVar2;\n      pOVar3 = this->shstrtab_section_;\n      puVar13[0] = '\0';\n      puVar13[1] = '\0';\n      puVar13[2] = '\0';\n      puVar13[3] = '\0';\n      puVar13[4] = '\0';\n      puVar13[5] = '\0';\n      puVar13[6] = '\0';\n      puVar13[7] = '\0';\n      puVar13[8] = '\0';\n      puVar13[9] = '\0';\n      puVar13[10] = '\0';\n      puVar13[0xb] = '\0';\n      puVar13[0xc] = '\0';\n      puVar13[0xd] = '\0';\n      puVar13[0xe] = '\0';\n      puVar13[0xf] = '\0';\n      puVar13[0x10] = '\0';\n      puVar13[0x11] = '\0';\n      puVar13[0x12] = '\0';\n      puVar13[0x13] = '\0';\n      uVar7 = (uint)((long)this_1 / 0x28);\n      uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if ((ulong)((long)this_1 / 0x28) < 0xff00) {\n        uVar7 = 0;\n      }\n      *(uint *)(puVar13 + 0x14) = uVar7;\n      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n      if (p_Var4 == Output_section::do_out_shndx) {\n        uVar7 = pOVar3->out_shndx_;\n        if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar7 = (*p_Var4)();\n      }\n      uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if (uVar7 < 0xff00) {\n        uVar11 = 0;\n      }\n      *(uint *)(puVar13 + 0x18) = uVar11;\n      pSVar12 = this->segment_list_;\n      ppOVar5 = (pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish;\n      local_50 = (pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start;\n      puVar13[0x20] = '\0';\n      puVar13[0x21] = '\0';\n      puVar13[0x22] = '\0';\n      puVar13[0x23] = '\0';\n      puVar13[0x24] = '\0';\n      puVar13[0x25] = '\0';\n      puVar13[0x26] = '\0';\n      puVar13[0x27] = '\0';\n      uVar9 = (long)ppOVar5 - (long)local_50 >> 3;\n      uVar11 = (uint)uVar9;\n      uVar7 = 0;\n      if (0xfffe < uVar9) {\n        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;\n      }\n      pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28);\n      *(uint *)(puVar13 + 0x1c) = uVar7;\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->relocatable_).value == false) {\n        if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }\n      }\n      else {\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }\n      pSVar10 = this->unattached_section_list_;\n      ppOVar17 = (pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start;\n      if (ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish) {\n        do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);\n      }\n      if (((this->super_Output_data).field_0x20 & 4) != 0) {\n        return;\n      }\n    }" if (parenthesized_expression "((lVar2 < 0) || (of->file_size_ < (long)&this_1->name_ + lVar2))" ( (binary_expression "(lVar2 < 0) || (of->file_size_ < (long)&this_1->name_ + lVar2)" (parenthesized_expression "(lVar2 < 0)" ( (binary_expression "lVar2 < 0" identifier < number_literal) )) || (parenthesized_expression "(of->file_size_ < (long)&this_1->name_ + lVar2)" ( (binary_expression "of->file_size_ < (long)&this_1->name_ + lVar2" (field_expression "of->file_size_" identifier -> field_identifier) < (binary_expression "(long)&this_1->name_ + lVar2" (cast_expression "(long)&this_1->name_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&this_1->name_" & (field_expression "this_1->name_" identifier -> field_identifier))) + identifier)) ))) )) (compound_statement "{\n      Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1);\n    }" { (labeled_statement "Output_file::get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1);" statement_identifier : (ERROR ":" :) (expression_statement "get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1);" (call_expression "get_output_view((Output_file *)this,(off_t)of,in_RDX,this_1)" identifier (argument_list "((Output_file *)this,(off_t)of,in_RDX,this_1)" ( (cast_expression "(Output_file *)this" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(off_t)of" ( (type_descriptor "off_t" type_identifier) ) identifier) , identifier , identifier ))) ;)) }) (else_clause "else {\n      puVar13 = of->base_ + lVar2;\n      pOVar3 = this->shstrtab_section_;\n      puVar13[0] = '\0';\n      puVar13[1] = '\0';\n      puVar13[2] = '\0';\n      puVar13[3] = '\0';\n      puVar13[4] = '\0';\n      puVar13[5] = '\0';\n      puVar13[6] = '\0';\n      puVar13[7] = '\0';\n      puVar13[8] = '\0';\n      puVar13[9] = '\0';\n      puVar13[10] = '\0';\n      puVar13[0xb] = '\0';\n      puVar13[0xc] = '\0';\n      puVar13[0xd] = '\0';\n      puVar13[0xe] = '\0';\n      puVar13[0xf] = '\0';\n      puVar13[0x10] = '\0';\n      puVar13[0x11] = '\0';\n      puVar13[0x12] = '\0';\n      puVar13[0x13] = '\0';\n      uVar7 = (uint)((long)this_1 / 0x28);\n      uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if ((ulong)((long)this_1 / 0x28) < 0xff00) {\n        uVar7 = 0;\n      }\n      *(uint *)(puVar13 + 0x14) = uVar7;\n      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n      if (p_Var4 == Output_section::do_out_shndx) {\n        uVar7 = pOVar3->out_shndx_;\n        if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar7 = (*p_Var4)();\n      }\n      uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if (uVar7 < 0xff00) {\n        uVar11 = 0;\n      }\n      *(uint *)(puVar13 + 0x18) = uVar11;\n      pSVar12 = this->segment_list_;\n      ppOVar5 = (pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish;\n      local_50 = (pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start;\n      puVar13[0x20] = '\0';\n      puVar13[0x21] = '\0';\n      puVar13[0x22] = '\0';\n      puVar13[0x23] = '\0';\n      puVar13[0x24] = '\0';\n      puVar13[0x25] = '\0';\n      puVar13[0x26] = '\0';\n      puVar13[0x27] = '\0';\n      uVar9 = (long)ppOVar5 - (long)local_50 >> 3;\n      uVar11 = (uint)uVar9;\n      uVar7 = 0;\n      if (0xfffe < uVar9) {\n        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;\n      }\n      pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28);\n      *(uint *)(puVar13 + 0x1c) = uVar7;\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->relocatable_).value == false) {\n        if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }\n      }\n      else {\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }\n      pSVar10 = this->unattached_section_list_;\n      ppOVar17 = (pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start;\n      if (ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish) {\n        do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);\n      }\n      if (((this->super_Output_data).field_0x20 & 4) != 0) {\n        return;\n      }\n    }" else (compound_statement "{\n      puVar13 = of->base_ + lVar2;\n      pOVar3 = this->shstrtab_section_;\n      puVar13[0] = '\0';\n      puVar13[1] = '\0';\n      puVar13[2] = '\0';\n      puVar13[3] = '\0';\n      puVar13[4] = '\0';\n      puVar13[5] = '\0';\n      puVar13[6] = '\0';\n      puVar13[7] = '\0';\n      puVar13[8] = '\0';\n      puVar13[9] = '\0';\n      puVar13[10] = '\0';\n      puVar13[0xb] = '\0';\n      puVar13[0xc] = '\0';\n      puVar13[0xd] = '\0';\n      puVar13[0xe] = '\0';\n      puVar13[0xf] = '\0';\n      puVar13[0x10] = '\0';\n      puVar13[0x11] = '\0';\n      puVar13[0x12] = '\0';\n      puVar13[0x13] = '\0';\n      uVar7 = (uint)((long)this_1 / 0x28);\n      uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if ((ulong)((long)this_1 / 0x28) < 0xff00) {\n        uVar7 = 0;\n      }\n      *(uint *)(puVar13 + 0x14) = uVar7;\n      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n      if (p_Var4 == Output_section::do_out_shndx) {\n        uVar7 = pOVar3->out_shndx_;\n        if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar7 = (*p_Var4)();\n      }\n      uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n      if (uVar7 < 0xff00) {\n        uVar11 = 0;\n      }\n      *(uint *)(puVar13 + 0x18) = uVar11;\n      pSVar12 = this->segment_list_;\n      ppOVar5 = (pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish;\n      local_50 = (pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start;\n      puVar13[0x20] = '\0';\n      puVar13[0x21] = '\0';\n      puVar13[0x22] = '\0';\n      puVar13[0x23] = '\0';\n      puVar13[0x24] = '\0';\n      puVar13[0x25] = '\0';\n      puVar13[0x26] = '\0';\n      puVar13[0x27] = '\0';\n      uVar9 = (long)ppOVar5 - (long)local_50 >> 3;\n      uVar11 = (uint)uVar9;\n      uVar7 = 0;\n      if (0xfffe < uVar9) {\n        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;\n      }\n      pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28);\n      *(uint *)(puVar13 + 0x1c) = uVar7;\n      if (parameters->options_ == (General_options *)0x0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\n      if ((parameters->options_->relocatable_).value == false) {\n        if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }\n      }\n      else {\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }\n      pSVar10 = this->unattached_section_list_;\n      ppOVar17 = (pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start;\n      if (ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish) {\n        do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);\n      }\n      if (((this->super_Output_data).field_0x20 & 4) != 0) {\n        return;\n      }\n    }" { (expression_statement "puVar13 = of->base_ + lVar2;" (assignment_expression "puVar13 = of->base_ + lVar2" identifier = (binary_expression "of->base_ + lVar2" (field_expression "of->base_" identifier -> field_identifier) + identifier)) ;) (expression_statement "pOVar3 = this->shstrtab_section_;" (assignment_expression "pOVar3 = this->shstrtab_section_" identifier = (field_expression "this->shstrtab_section_" identifier -> field_identifier)) ;) (expression_statement "puVar13[0] = '\0';" (assignment_expression "puVar13[0] = '\0'" (subscript_expression "puVar13[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[1] = '\0';" (assignment_expression "puVar13[1] = '\0'" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[2] = '\0';" (assignment_expression "puVar13[2] = '\0'" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[3] = '\0';" (assignment_expression "puVar13[3] = '\0'" (subscript_expression "puVar13[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[4] = '\0';" (assignment_expression "puVar13[4] = '\0'" (subscript_expression "puVar13[4]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[5] = '\0';" (assignment_expression "puVar13[5] = '\0'" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[6] = '\0';" (assignment_expression "puVar13[6] = '\0'" (subscript_expression "puVar13[6]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[7] = '\0';" (assignment_expression "puVar13[7] = '\0'" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[8] = '\0';" (assignment_expression "puVar13[8] = '\0'" (subscript_expression "puVar13[8]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[9] = '\0';" (assignment_expression "puVar13[9] = '\0'" (subscript_expression "puVar13[9]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[10] = '\0';" (assignment_expression "puVar13[10] = '\0'" (subscript_expression "puVar13[10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0xb] = '\0';" (assignment_expression "puVar13[0xb] = '\0'" (subscript_expression "puVar13[0xb]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0xc] = '\0';" (assignment_expression "puVar13[0xc] = '\0'" (subscript_expression "puVar13[0xc]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0xd] = '\0';" (assignment_expression "puVar13[0xd] = '\0'" (subscript_expression "puVar13[0xd]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0xe] = '\0';" (assignment_expression "puVar13[0xe] = '\0'" (subscript_expression "puVar13[0xe]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0xf] = '\0';" (assignment_expression "puVar13[0xf] = '\0'" (subscript_expression "puVar13[0xf]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x10] = '\0';" (assignment_expression "puVar13[0x10] = '\0'" (subscript_expression "puVar13[0x10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x11] = '\0';" (assignment_expression "puVar13[0x11] = '\0'" (subscript_expression "puVar13[0x11]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x12] = '\0';" (assignment_expression "puVar13[0x12] = '\0'" (subscript_expression "puVar13[0x12]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x13] = '\0';" (assignment_expression "puVar13[0x13] = '\0'" (subscript_expression "puVar13[0x13]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar7 = (uint)((long)this_1 / 0x28);" (assignment_expression "uVar7 = (uint)((long)this_1 / 0x28)" identifier = (call_expression "(uint)((long)this_1 / 0x28)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((long)this_1 / 0x28)" ( (binary_expression "(long)this_1 / 0x28" (cast_expression "(long)this_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) / number_literal) )))) ;) (expression_statement "uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" identifier = (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal))) ;) (if_statement "if ((ulong)((long)this_1 / 0x28) < 0xff00) {\n        uVar7 = 0;\n      }" if (parenthesized_expression "((ulong)((long)this_1 / 0x28) < 0xff00)" ( (binary_expression "(ulong)((long)this_1 / 0x28) < 0xff00" (call_expression "(ulong)((long)this_1 / 0x28)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)this_1 / 0x28)" ( (binary_expression "(long)this_1 / 0x28" (cast_expression "(long)this_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) / number_literal) ))) < number_literal) )) (compound_statement "{\n        uVar7 = 0;\n      }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) })) (expression_statement "*(uint *)(puVar13 + 0x14) = uVar7;" (assignment_expression "*(uint *)(puVar13 + 0x14) = uVar7" (pointer_expression "*(uint *)(puVar13 + 0x14)" * (cast_expression "(uint *)(puVar13 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x14)" ( (binary_expression "puVar13 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];" (assignment_expression "p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb]" identifier = (subscript_expression "(pOVar3->super_Output_data)._vptr_Output_data[0xb]" (field_expression "(pOVar3->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var4 == Output_section::do_out_shndx) {\n        uVar7 = pOVar3->out_shndx_;\n        if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar7 = (*p_Var4)();\n      }" if (parenthesized_expression "(p_Var4 == Output_section::do_out_shndx)" ( (binary_expression "p_Var4 == Output_section" identifier == identifier) (ERROR "::do_out_shndx" : : identifier) )) (compound_statement "{\n        uVar7 = pOVar3->out_shndx_;\n        if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }" { (expression_statement "uVar7 = pOVar3->out_shndx_;" (assignment_expression "uVar7 = pOVar3->out_shndx_" identifier = (field_expression "pOVar3->out_shndx_" identifier -> field_identifier)) ;) (if_statement "if (uVar7 == 0xffffffff) {\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }" if (parenthesized_expression "(uVar7 == 0xffffffff)" ( (binary_expression "uVar7 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");\n        }" { (labeled_statement "LAB_0020b739:\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx");" (call_expression "do_gold_unreachable("../../gold/output.h",0x1043,"do_out_shndx")" identifier (argument_list "("../../gold/output.h",0x1043,"do_out_shndx")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_out_shndx"" " string_content ") ))) ;)) })) }) (else_clause "else {\n        uVar7 = (*p_Var4)();\n      }" else (compound_statement "{\n        uVar7 = (*p_Var4)();\n      }" { (expression_statement "uVar7 = (*p_Var4)();" (assignment_expression "uVar7 = (*p_Var4)()" identifier = (call_expression "(*p_Var4)()" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "uVar11 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" identifier = (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar7 < 0xff00) {\n        uVar11 = 0;\n      }" if (parenthesized_expression "(uVar7 < 0xff00)" ( (binary_expression "uVar7 < 0xff00" identifier < number_literal) )) (compound_statement "{\n        uVar11 = 0;\n      }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "*(uint *)(puVar13 + 0x18) = uVar11;" (assignment_expression "*(uint *)(puVar13 + 0x18) = uVar11" (pointer_expression "*(uint *)(puVar13 + 0x18)" * (cast_expression "(uint *)(puVar13 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x18)" ( (binary_expression "puVar13 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "pSVar12 = this->segment_list_;" (assignment_expression "pSVar12 = this->segment_list_" identifier = (field_expression "this->segment_list_" identifier -> field_identifier)) ;) (expression_statement "ppOVar5 = (pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish;" (assignment_expression "ppOVar5 = (pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish" identifier = (field_expression "(pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl._M_finish" (field_expression "(pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                _M_impl" (parenthesized_expression "(pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>)" ( (ERROR "pSVar12->\n                super__Vector_base<gold::Output_segment*,_std::allocator<gold::" (comma_expression "pSVar12->\n                super__Vector_base<gold::Output_segment*,_std" (binary_expression "pSVar12->\n                super__Vector_base<gold::Output_segment*" (binary_expression "pSVar12->\n                super__Vector_base<gold" (field_expression "pSVar12->\n                super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_segment" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_segment*>_>" (binary_expression "Output_segment*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "local_50 = (pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start;" (assignment_expression "local_50 = (pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start" identifier = (field_expression "(pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl._M_start" (field_expression "(pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n                 _M_impl" (parenthesized_expression "(pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>)" ( (ERROR "pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std::allocator<gold::" (comma_expression "pSVar12->\n                 super__Vector_base<gold::Output_segment*,_std" (binary_expression "pSVar12->\n                 super__Vector_base<gold::Output_segment*" (binary_expression "pSVar12->\n                 super__Vector_base<gold" (field_expression "pSVar12->\n                 super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_segment" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_segment*>_>" (binary_expression "Output_segment*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "puVar13[0x20] = '\0';" (assignment_expression "puVar13[0x20] = '\0'" (subscript_expression "puVar13[0x20]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x21] = '\0';" (assignment_expression "puVar13[0x21] = '\0'" (subscript_expression "puVar13[0x21]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x22] = '\0';" (assignment_expression "puVar13[0x22] = '\0'" (subscript_expression "puVar13[0x22]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x23] = '\0';" (assignment_expression "puVar13[0x23] = '\0'" (subscript_expression "puVar13[0x23]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x24] = '\0';" (assignment_expression "puVar13[0x24] = '\0'" (subscript_expression "puVar13[0x24]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x25] = '\0';" (assignment_expression "puVar13[0x25] = '\0'" (subscript_expression "puVar13[0x25]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x26] = '\0';" (assignment_expression "puVar13[0x26] = '\0'" (subscript_expression "puVar13[0x26]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar13[0x27] = '\0';" (assignment_expression "puVar13[0x27] = '\0'" (subscript_expression "puVar13[0x27]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar9 = (long)ppOVar5 - (long)local_50 >> 3;" (assignment_expression "uVar9 = (long)ppOVar5 - (long)local_50 >> 3" identifier = (binary_expression "(long)ppOVar5 - (long)local_50 >> 3" (binary_expression "(long)ppOVar5 - (long)local_50" (cast_expression "(long)ppOVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (expression_statement "uVar11 = (uint)uVar9;" (assignment_expression "uVar11 = (uint)uVar9" identifier = (cast_expression "(uint)uVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if (0xfffe < uVar9) {\n        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;\n      }" if (parenthesized_expression "(0xfffe < uVar9)" ( (binary_expression "0xfffe < uVar9" number_literal < identifier) )) (compound_statement "{\n        uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;\n      }" { (expression_statement "uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18;" (assignment_expression "uVar7 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 | uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) })) (expression_statement "pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28);" (assignment_expression "pSVar14 = (Shdr_data<32> *)(puVar13 + 0x28)" identifier = (call_expression "(Shdr_data<32> *)(puVar13 + 0x28)" (parenthesized_expression "(Shdr_data<32> *)" ( (binary_expression "Shdr_data<32> *" (binary_expression "Shdr_data<32" identifier < number_literal) > (pointer_expression "*" * identifier)) )) (argument_list "(puVar13 + 0x28)" ( (binary_expression "puVar13 + 0x28" identifier + number_literal) )))) ;) (expression_statement "*(uint *)(puVar13 + 0x1c) = uVar7;" (assignment_expression "*(uint *)(puVar13 + 0x1c) = uVar7" (pointer_expression "*(uint *)(puVar13 + 0x1c)" * (cast_expression "(uint *)(puVar13 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x1c)" ( (binary_expression "puVar13 + 0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (parameters->options_ == (General_options *)0x0) {\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\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 "{\nLAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }" { (labeled_statement "LAB_0020b78c:\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (if_statement "if ((parameters->options_->relocatable_).value == false) {\n        if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }\n      }\n      else {\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }" if (parenthesized_expression "((parameters->options_->relocatable_).value == false)" ( (binary_expression "(parameters->options_->relocatable_).value == false" (field_expression "(parameters->options_->relocatable_).value" (parenthesized_expression "(parameters->options_->relocatable_)" ( (field_expression "parameters->options_->relocatable_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n        if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }\n      }" { (if_statement "if (local_50 == ppOVar5) {\n          uVar7 = 1;\n        }\n        else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }" if (parenthesized_expression "(local_50 == ppOVar5)" ( (binary_expression "local_50 == ppOVar5" identifier == identifier) )) (compound_statement "{\n          uVar7 = 1;\n        }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }" else (compound_statement "{\n          uVar7 = 1;\n          do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);\n        }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (do_statement "do {\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          } while ((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50);" do (compound_statement "{\n            pOVar6 = *local_50;\n            if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }\n            local_50 = local_50 + 1;\n          }" { (expression_statement "pOVar6 = *local_50;" (assignment_expression "pOVar6 = *local_50" identifier = (pointer_expression "*local_50" * identifier)) ;) (if_statement "if (pOVar6->type_ == 1) {\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }" if (parenthesized_expression "(pOVar6->type_ == 1)" ( (binary_expression "pOVar6->type_ == 1" (field_expression "pOVar6->type_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n              secnamepool = this->secnamepool_;\n              pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;\n              layout = this->layout_;\n              do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);\n              pSVar12 = this->segment_list_;\n            }" { (expression_statement "secnamepool = this->secnamepool_;" (assignment_expression "secnamepool = this->secnamepool_" identifier = (field_expression "this->secnamepool_" identifier -> field_identifier)) ;) (expression_statement "pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish;" (field_expression "pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl._M_finish" (field_expression "pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>\n                           ._M_impl" (binary_expression "pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold::Output_data*,_std" (assignment_expression "pppOVar16 = &pOVar6->output_lists_[0].\n                           super__Vector_base<gold" identifier = (binary_expression "&pOVar6->output_lists_[0].\n                           super__Vector_base<gold" (pointer_expression "&pOVar6->output_lists_[0].\n                           super__Vector_base" & (field_expression "pOVar6->output_lists_[0].\n                           super__Vector_base" (subscript_expression "pOVar6->output_lists_[0]" (field_expression "pOVar6->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "layout = this->layout_;" (assignment_expression "layout = this->layout_" identifier = (field_expression "this->layout_" identifier -> field_identifier)) ;) (do_statement "do {\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              } while ((pointer *)&pOVar6->paddr_ != pppOVar16);" do (compound_statement "{\n                ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;\n                pSVar15 = pSVar14;\n                if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }\n                pppOVar16 = pppOVar16 + 3;\n              }" { (expression_statement "ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start;" (assignment_expression "ppOVar18 = ((_Vector_impl *)(pppOVar16 + -1))->_M_start" identifier = (field_expression "((_Vector_impl *)(pppOVar16 + -1))->_M_start" (parenthesized_expression "((_Vector_impl *)(pppOVar16 + -1))" ( (cast_expression "(_Vector_impl *)(pppOVar16 + -1)" ( (type_descriptor "_Vector_impl *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppOVar16 + -1)" ( (binary_expression "pppOVar16 + -1" identifier + number_literal) ))) )) -> field_identifier)) ;) (expression_statement "pSVar15 = pSVar14;" (assignment_expression "pSVar15 = pSVar14" identifier = identifier) ;) (if_statement "if (ppOVar18 != *pppOVar16) {\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }" if (parenthesized_expression "(ppOVar18 != *pppOVar16)" ( (binary_expression "ppOVar18 != *pppOVar16" identifier != (pointer_expression "*pppOVar16" * identifier)) )) (compound_statement "{\n                  do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);\n                }" { (do_statement "do {\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  } while (*pppOVar16 != ppOVar18);" do (compound_statement "{\n                    iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();\n                    pSVar14 = pSVar15;\n                    if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }\n                    ppOVar18 = ppOVar18 + 1;\n                    pSVar15 = pSVar14;\n                  }" { (expression_statement "iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])();" (assignment_expression "iVar8 = (*(*ppOVar18)->_vptr_Output_data[6])()" identifier = (call_expression "(*(*ppOVar18)->_vptr_Output_data[6])()" (parenthesized_expression "(*(*ppOVar18)->_vptr_Output_data[6])" ( (pointer_expression "*(*ppOVar18)->_vptr_Output_data[6]" * (subscript_expression "(*ppOVar18)->_vptr_Output_data[6]" (field_expression "(*ppOVar18)->_vptr_Output_data" (parenthesized_expression "(*ppOVar18)" ( (pointer_expression "*ppOVar18" * identifier) )) -> field_identifier) [ number_literal ])) )) (argument_list "()" ( )))) ;) (expression_statement "pSVar14 = pSVar15;" (assignment_expression "pSVar14 = pSVar15" identifier = identifier) ;) (if_statement "if ((char)iVar8 != '\0') {\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }" if (parenthesized_expression "((char)iVar8 != '\0')" ( (binary_expression "(char)iVar8 != '\0'" (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      pOVar3 = (Output_section *)*ppOVar18;\n                      p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n                      if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }\n                      if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }\n                      pSVar14 = pSVar15 + 1;\n                      uVar7 = uVar7 + 1;\n                      oshdr.p_ = pSVar15;\n                      Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);\n                    }" { (expression_statement "pOVar3 = (Output_section *)*ppOVar18;" (assignment_expression "pOVar3 = (Output_section *)*ppOVar18" identifier = (cast_expression "(Output_section *)*ppOVar18" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppOVar18" * identifier))) ;) (expression_statement "p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];" (assignment_expression "p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb]" identifier = (subscript_expression "(pOVar3->super_Output_data)._vptr_Output_data[0xb]" (field_expression "(pOVar3->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var4 == Output_section::do_out_shndx) {\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }\n                      else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }" if (parenthesized_expression "(p_Var4 == Output_section::do_out_shndx)" ( (binary_expression "p_Var4 == Output_section" identifier == identifier) (ERROR "::do_out_shndx" : : identifier) )) (compound_statement "{\n                        uVar11 = pOVar3->out_shndx_;\n                        if (uVar11 == 0xffffffff) goto LAB_0020b739;\n                      }" { (expression_statement "uVar11 = pOVar3->out_shndx_;" (assignment_expression "uVar11 = pOVar3->out_shndx_" identifier = (field_expression "pOVar3->out_shndx_" identifier -> field_identifier)) ;) (if_statement "if (uVar11 == 0xffffffff) goto LAB_0020b739;" if (parenthesized_expression "(uVar11 == 0xffffffff)" ( (binary_expression "uVar11 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }" else (compound_statement "{\n                        uVar11 = (*p_Var4)(pOVar3);\n                      }" { (expression_statement "uVar11 = (*p_Var4)(pOVar3);" (assignment_expression "uVar11 = (*p_Var4)(pOVar3)" identifier = (call_expression "(*p_Var4)(pOVar3)" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "(pOVar3)" ( identifier )))) ;) }))) (if_statement "if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }" if (parenthesized_expression "(uVar11 != uVar7)" ( (binary_expression "uVar11 != uVar7" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                        do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");\n                      }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list")" identifier (argument_list "("../../gold/output.cc",0x1354,\n                                            "write_section_headers_list")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""write_section_headers_list"" " string_content ") ))) ;) })) (expression_statement "pSVar14 = pSVar15 + 1;" (assignment_expression "pSVar14 = pSVar15 + 1" identifier = (binary_expression "pSVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "oshdr.p_ = pSVar15;" (assignment_expression "oshdr.p_ = pSVar15" (field_expression "oshdr.p_" identifier . field_identifier) = identifier) ;) (labeled_statement "Output_section::write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);" statement_identifier : (ERROR ":" :) (expression_statement "write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr);" (comma_expression "write_header<32,_true>(pOVar3,layout,secnamepool,&oshdr)" (binary_expression "write_header<32" identifier < number_literal) , (binary_expression "_true>(pOVar3,layout,secnamepool,&oshdr)" identifier > (parenthesized_expression "(pOVar3,layout,secnamepool,&oshdr)" ( (comma_expression "pOVar3,layout,secnamepool,&oshdr" identifier , (comma_expression "layout,secnamepool,&oshdr" identifier , (comma_expression "secnamepool,&oshdr" identifier , (pointer_expression "&oshdr" & identifier)))) )))) ;)) })) (expression_statement "ppOVar18 = ppOVar18 + 1;" (assignment_expression "ppOVar18 = ppOVar18 + 1" identifier = (binary_expression "ppOVar18 + 1" identifier + number_literal)) ;) (expression_statement "pSVar15 = pSVar14;" (assignment_expression "pSVar15 = pSVar14" identifier = identifier) ;) }) while (parenthesized_expression "(*pppOVar16 != ppOVar18)" ( (binary_expression "*pppOVar16 != ppOVar18" (pointer_expression "*pppOVar16" * identifier) != identifier) )) ;) })) (expression_statement "pppOVar16 = pppOVar16 + 3;" (assignment_expression "pppOVar16 = pppOVar16 + 3" identifier = (binary_expression "pppOVar16 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "((pointer *)&pOVar6->paddr_ != pppOVar16)" ( (binary_expression "(pointer *)&pOVar6->paddr_ != pppOVar16" (cast_expression "(pointer *)&pOVar6->paddr_" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar6->paddr_" & (field_expression "pOVar6->paddr_" identifier -> field_identifier))) != identifier) )) ;) (expression_statement "pSVar12 = this->segment_list_;" (assignment_expression "pSVar12 = this->segment_list_" identifier = (field_expression "this->segment_list_" identifier -> field_identifier)) ;) })) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50)" ( (binary_expression "(pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish != local_50" (field_expression "(pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl._M_finish" (field_expression "(pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )._M_impl" (parenthesized_expression "(pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>\n                   )" ( (binary_expression "pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>" (binary_expression "pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std::allocator<gold" (binary_expression "pSVar12->\n                   super__Vector_base<gold::Output_segment*,_std" (binary_expression "pSVar12->\n                   super__Vector_base<gold" (field_expression "pSVar12->\n                   super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) != identifier) )) ;) }))) }) (else_clause "else {\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }" else (compound_statement "{\n        pSVar10 = this->section_list_;\n        uVar7 = 1;\n        ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;\n        if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }\n      }" { (expression_statement "pSVar10 = this->section_list_;" (assignment_expression "pSVar10 = this->section_list_" identifier = (field_expression "this->section_list_" identifier -> field_identifier)) ;) (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start;" (assignment_expression "ppOVar17 = (pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start" identifier = (field_expression "(pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_start" (field_expression "(pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl" (parenthesized_expression "(pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )" ( (ERROR "pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::" (comma_expression "pSVar10->\n                   super__Vector_base<gold::Output_section*,_std" (binary_expression "pSVar10->\n                   super__Vector_base<gold::Output_section*" (binary_expression "pSVar10->\n                   super__Vector_base<gold" (field_expression "pSVar10->\n                   super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_section*>_>" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish) {\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }" if (parenthesized_expression "(ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish)" ( (binary_expression "ppOVar17 !=\n            (pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish" identifier != (field_expression "(pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl._M_finish" (field_expression "(pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n            _M_impl" (parenthesized_expression "(pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "pSVar10->\n            super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "pSVar10->\n            super__Vector_base<gold::Output_section*,_std" (binary_expression "pSVar10->\n            super__Vector_base<gold" (field_expression "pSVar10->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n          pSVar15 = pSVar14;\n          do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);\n        }" { (expression_statement "pSVar15 = pSVar14;" (assignment_expression "pSVar15 = pSVar14" identifier = identifier) ;) (do_statement "do {\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          } while ((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17);" do (compound_statement "{\n            pOVar3 = *ppOVar17;\n            if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }\n            ppOVar17 = ppOVar17 + 1;\n            pSVar15 = pSVar14;\n          }" { (expression_statement "pOVar3 = *ppOVar17;" (assignment_expression "pOVar3 = *ppOVar17" identifier = (pointer_expression "*ppOVar17" * identifier)) ;) (if_statement "if (((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)) {\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }" if (parenthesized_expression "(((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11))" ( (binary_expression "((pOVar3->flags_ & 2) != 0) || (pSVar14 = pSVar15, pOVar3->type_ == 0x11)" (parenthesized_expression "((pOVar3->flags_ & 2) != 0)" ( (binary_expression "(pOVar3->flags_ & 2) != 0" (parenthesized_expression "(pOVar3->flags_ & 2)" ( (binary_expression "pOVar3->flags_ & 2" (field_expression "pOVar3->flags_" identifier -> field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(pSVar14 = pSVar15, pOVar3->type_ == 0x11)" ( (comma_expression "pSVar14 = pSVar15, pOVar3->type_ == 0x11" (assignment_expression "pSVar14 = pSVar15" identifier = identifier) , (binary_expression "pOVar3->type_ == 0x11" (field_expression "pOVar3->type_" identifier -> field_identifier) == number_literal)) ))) )) (compound_statement "{\n              p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n              if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }\n              if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              pSVar14 = pSVar15 + 1;\n              uVar7 = uVar7 + 1;\n              oshdr.p_ = pSVar15;\n              Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n              pSVar10 = this->section_list_;\n            }" { (expression_statement "p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];" (assignment_expression "p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb]" identifier = (subscript_expression "(pOVar3->super_Output_data)._vptr_Output_data[0xb]" (field_expression "(pOVar3->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var4 == Output_section::do_out_shndx) {\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }\n              else {\n                uVar11 = (*p_Var4)();\n              }" if (parenthesized_expression "(p_Var4 == Output_section::do_out_shndx)" ( (binary_expression "p_Var4 == Output_section" identifier == identifier) (ERROR "::do_out_shndx" : : identifier) )) (compound_statement "{\n                uVar11 = pOVar3->out_shndx_;\n                if (uVar11 == 0xffffffff) goto LAB_0020b739;\n              }" { (expression_statement "uVar11 = pOVar3->out_shndx_;" (assignment_expression "uVar11 = pOVar3->out_shndx_" identifier = (field_expression "pOVar3->out_shndx_" identifier -> field_identifier)) ;) (if_statement "if (uVar11 == 0xffffffff) goto LAB_0020b739;" if (parenthesized_expression "(uVar11 == 0xffffffff)" ( (binary_expression "uVar11 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n                uVar11 = (*p_Var4)();\n              }" else (compound_statement "{\n                uVar11 = (*p_Var4)();\n              }" { (expression_statement "uVar11 = (*p_Var4)();" (assignment_expression "uVar11 = (*p_Var4)()" identifier = (call_expression "(*p_Var4)()" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "()" ( )))) ;) }))) (if_statement "if (uVar7 != uVar11) {\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }" if (parenthesized_expression "(uVar7 != uVar11)" ( (binary_expression "uVar7 != uVar11" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");\n              }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x155,"do_sized_write")" identifier (argument_list "("../../gold/output.cc",0x155,"do_sized_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") ))) ;) })) (expression_statement "pSVar14 = pSVar15 + 1;" (assignment_expression "pSVar14 = pSVar15 + 1" identifier = (binary_expression "pSVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "oshdr.p_ = pSVar15;" (assignment_expression "oshdr.p_ = pSVar15" (field_expression "oshdr.p_" identifier . field_identifier) = identifier) ;) (labeled_statement "Output_section::write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);" statement_identifier : (ERROR ":" :) (expression_statement "write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);" (comma_expression "write_header<32,_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr)" (binary_expression "write_header<32" identifier < number_literal) , (binary_expression "_true>\n                        (*ppOVar17,this->layout_,this->secnamepool_,&oshdr)" identifier > (parenthesized_expression "(*ppOVar17,this->layout_,this->secnamepool_,&oshdr)" ( (comma_expression "*ppOVar17,this->layout_,this->secnamepool_,&oshdr" (pointer_expression "*ppOVar17" * identifier) , (comma_expression "this->layout_,this->secnamepool_,&oshdr" (field_expression "this->layout_" identifier -> field_identifier) , (comma_expression "this->secnamepool_,&oshdr" (field_expression "this->secnamepool_" identifier -> field_identifier) , (pointer_expression "&oshdr" & identifier)))) )))) ;)) (expression_statement "pSVar10 = this->section_list_;" (assignment_expression "pSVar10 = this->section_list_" identifier = (field_expression "this->section_list_" identifier -> field_identifier)) ;) })) (expression_statement "ppOVar17 = ppOVar17 + 1;" (assignment_expression "ppOVar17 = ppOVar17 + 1" identifier = (binary_expression "ppOVar17 + 1" identifier + number_literal)) ;) (expression_statement "pSVar15 = pSVar14;" (assignment_expression "pSVar15 = pSVar14" identifier = identifier) ;) }) while (parenthesized_expression "((pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17)" ( (binary_expression "(pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish != ppOVar17" (field_expression "(pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl._M_finish" (field_expression "(pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )._M_impl" (parenthesized_expression "(pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                   )" ( (binary_expression "pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "pSVar10->\n                   super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "pSVar10->\n                   super__Vector_base<gold::Output_section*,_std" (binary_expression "pSVar10->\n                   super__Vector_base<gold" (field_expression "pSVar10->\n                   super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) != identifier) )) ;) })) }))) (expression_statement "pSVar10 = this->unattached_section_list_;" (assignment_expression "pSVar10 = this->unattached_section_list_" identifier = (field_expression "this->unattached_section_list_" identifier -> field_identifier)) ;) (expression_statement "ppOVar17 = (pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start;" (assignment_expression "ppOVar17 = (pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start" identifier = (field_expression "(pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_start" (field_expression "(pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl" (parenthesized_expression "(pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (ERROR "pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::" (comma_expression "pSVar10->\n                 super__Vector_base<gold::Output_section*,_std" (binary_expression "pSVar10->\n                 super__Vector_base<gold::Output_section*" (binary_expression "pSVar10->\n                 super__Vector_base<gold" (field_expression "pSVar10->\n                 super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_section*>_>" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish) {\n        do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);\n      }" if (parenthesized_expression "(ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish)" ( (binary_expression "ppOVar17 !=\n          (pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish" identifier != (field_expression "(pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl\n          ._M_finish" (field_expression "(pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl" (parenthesized_expression "(pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "pSVar10->\n          super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "pSVar10->\n          super__Vector_base<gold::Output_section*,_std" (binary_expression "pSVar10->\n          super__Vector_base<gold" (field_expression "pSVar10->\n          super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n        do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);\n      }" { (do_statement "do {\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        } while ((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17);" do (compound_statement "{\n          pOVar3 = *ppOVar17;\n          if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }\n          ppOVar17 = ppOVar17 + 1;\n        }" { (expression_statement "pOVar3 = *ppOVar17;" (assignment_expression "pOVar3 = *ppOVar17" identifier = (pointer_expression "*ppOVar17" * identifier)) ;) (if_statement "if (pOVar3->type_ == 0x11) {\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }" if (parenthesized_expression "(pOVar3->type_ == 0x11)" ( (binary_expression "pOVar3->type_ == 0x11" (field_expression "pOVar3->type_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n            if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;\n            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;\n          }" { (if_statement "if (parameters->options_ == (General_options *)0x0) goto LAB_0020b78c;" 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)) )) (goto_statement "goto LAB_0020b78c;" goto statement_identifier ;)) (if_statement "if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;" if (parenthesized_expression "((parameters->options_->relocatable_).value == false)" ( (binary_expression "(parameters->options_->relocatable_).value == false" (field_expression "(parameters->options_->relocatable_).value" (parenthesized_expression "(parameters->options_->relocatable_)" ( (field_expression "parameters->options_->relocatable_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) (goto_statement "goto LAB_0020b690;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }" else (compound_statement "{\nLAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];\n            if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }\n            if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            uVar7 = uVar7 + 1;\n            oshdr.p_ = pSVar14;\n            Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);\n            pSVar10 = this->unattached_section_list_;\n            pSVar14 = pSVar14 + 1;\n          }" { (labeled_statement "LAB_0020b690:\n            p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];" statement_identifier : (expression_statement "p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];" (assignment_expression "p_Var4 = (pOVar3->super_Output_data)._vptr_Output_data[0xb]" identifier = (subscript_expression "(pOVar3->super_Output_data)._vptr_Output_data[0xb]" (field_expression "(pOVar3->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;)) (if_statement "if (p_Var4 == Output_section::do_out_shndx) {\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }\n            else {\n              uVar11 = (*p_Var4)();\n            }" if (parenthesized_expression "(p_Var4 == Output_section::do_out_shndx)" ( (binary_expression "p_Var4 == Output_section" identifier == identifier) (ERROR "::do_out_shndx" : : identifier) )) (compound_statement "{\n              uVar11 = pOVar3->out_shndx_;\n              if (uVar11 == 0xffffffff) goto LAB_0020b739;\n            }" { (expression_statement "uVar11 = pOVar3->out_shndx_;" (assignment_expression "uVar11 = pOVar3->out_shndx_" identifier = (field_expression "pOVar3->out_shndx_" identifier -> field_identifier)) ;) (if_statement "if (uVar11 == 0xffffffff) goto LAB_0020b739;" if (parenthesized_expression "(uVar11 == 0xffffffff)" ( (binary_expression "uVar11 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n              uVar11 = (*p_Var4)();\n            }" else (compound_statement "{\n              uVar11 = (*p_Var4)();\n            }" { (expression_statement "uVar11 = (*p_Var4)();" (assignment_expression "uVar11 = (*p_Var4)()" identifier = (call_expression "(*p_Var4)()" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "()" ( )))) ;) }))) (if_statement "if (uVar11 != uVar7) {\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }" if (parenthesized_expression "(uVar11 != uVar7)" ( (binary_expression "uVar11 != uVar7" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");\n            }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x167,"do_sized_write")" identifier (argument_list "("../../gold/output.cc",0x167,"do_sized_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") ))) ;) })) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "oshdr.p_ = pSVar14;" (assignment_expression "oshdr.p_ = pSVar14" (field_expression "oshdr.p_" identifier . field_identifier) = identifier) ;) (labeled_statement "Output_section::write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);" statement_identifier : (ERROR ":" :) (expression_statement "write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr);" (comma_expression "write_header<32,_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr)" (binary_expression "write_header<32" identifier < number_literal) , (binary_expression "_true>\n                      (*ppOVar17,this->layout_,this->secnamepool_,&oshdr)" identifier > (parenthesized_expression "(*ppOVar17,this->layout_,this->secnamepool_,&oshdr)" ( (comma_expression "*ppOVar17,this->layout_,this->secnamepool_,&oshdr" (pointer_expression "*ppOVar17" * identifier) , (comma_expression "this->layout_,this->secnamepool_,&oshdr" (field_expression "this->layout_" identifier -> field_identifier) , (comma_expression "this->secnamepool_,&oshdr" (field_expression "this->secnamepool_" identifier -> field_identifier) , (pointer_expression "&oshdr" & identifier)))) )))) ;)) (expression_statement "pSVar10 = this->unattached_section_list_;" (assignment_expression "pSVar10 = this->unattached_section_list_" identifier = (field_expression "this->unattached_section_list_" identifier -> field_identifier)) ;) (expression_statement "pSVar14 = pSVar14 + 1;" (assignment_expression "pSVar14 = pSVar14 + 1" identifier = (binary_expression "pSVar14 + 1" identifier + number_literal)) ;) }))) (expression_statement "ppOVar17 = ppOVar17 + 1;" (assignment_expression "ppOVar17 = ppOVar17 + 1" identifier = (binary_expression "ppOVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17)" ( (binary_expression "(pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish != ppOVar17" (field_expression "(pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl._M_finish" (field_expression "(pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>).\n                 _M_impl" (parenthesized_expression "(pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "pSVar10->\n                 super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "pSVar10->\n                 super__Vector_base<gold::Output_section*,_std" (binary_expression "pSVar10->\n                 super__Vector_base<gold" (field_expression "pSVar10->\n                 super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) != identifier) )) ;) })) (if_statement "if (((this->super_Output_data).field_0x20 & 4) != 0) {\n        return;\n      }" if (parenthesized_expression "(((this->super_Output_data).field_0x20 & 4) != 0)" ( (binary_expression "((this->super_Output_data).field_0x20 & 4) != 0" (parenthesized_expression "((this->super_Output_data).field_0x20 & 4)" ( (binary_expression "(this->super_Output_data).field_0x20 & 4" (field_expression "(this->super_Output_data).field_0x20" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) }))) })) 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 ") ))) ;) (ERROR "}" }))
(translation_unit "void FUN_0020b390(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  code *pcVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  char cVar7;\n  uint uVar8;\n  int iVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  int iVar16;\n  long *local_50;\n  undefined8 *local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar1 = *(long *)(param_1 + 0x10);\n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xe3,"offset");\n}\n\n" (function_definition "void FUN_0020b390(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  code *pcVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  char cVar7;\n  uint uVar8;\n  int iVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  int iVar16;\n  long *local_50;\n  undefined8 *local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar1 = *(long *)(param_1 + 0x10);\n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xe3,"offset");\n}" primitive_type (function_declarator "FUN_0020b390(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  code *pcVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  char cVar7;\n  uint uVar8;\n  int iVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  int iVar16;\n  long *local_50;\n  undefined8 *local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar1 = *(long *)(param_1 + 0x10);\n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xe3,"offset");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "long *local_50;" (sized_type_specifier "long" long) (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }" { (expression_statement "FUN_0017c650("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0017c650("../../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 ") ))) ;) })) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }" { (expression_statement "lVar2 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" if (parenthesized_expression "((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1))" ( (binary_expression "(lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)" (parenthesized_expression "(lVar2 < 0)" ( (binary_expression "lVar2 < 0" identifier < number_literal) )) || (parenthesized_expression "(*(long *)(param_2 + 0x10) < lVar2 + lVar1)" ( (binary_expression "*(long *)(param_2 + 0x10) < lVar2 + lVar1" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) < (binary_expression "lVar2 + lVar1" identifier + identifier)) ))) )) (compound_statement "{\n      FUN_001f4570();\n    }" { (expression_statement "FUN_001f4570();" (call_expression "FUN_001f4570()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" else (compound_statement "{\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" { (expression_statement "puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));" (assignment_expression "puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18))" identifier = (cast_expression "(undefined8 *)(lVar2 + *(long *)(param_2 + 0x18))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + *(long *)(param_2 + 0x18))" ( (binary_expression "lVar2 + *(long *)(param_2 + 0x18)" identifier + (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) )))) ;) (expression_statement "plVar12 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x50)" identifier = (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*puVar14 = 0;" (assignment_expression "*puVar14 = 0" (pointer_expression "*puVar14" * identifier) = number_literal) ;) (expression_statement "puVar14[1] = 0;" (assignment_expression "puVar14[1] = 0" (subscript_expression "puVar14[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar14 + 2) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + 2) = 0" (pointer_expression "*(undefined4 *)(puVar14 + 2)" * (cast_expression "(undefined4 *)(puVar14 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 2)" ( (binary_expression "puVar14 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar10 = lVar1 / 0x28;" (assignment_expression "uVar10 = lVar1 / 0x28" identifier = (binary_expression "lVar1 / 0x28" identifier / number_literal)) ;) (expression_statement "uVar8 = (uint)uVar10;" (assignment_expression "uVar8 = (uint)uVar10" identifier = (cast_expression "(uint)uVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }" if (parenthesized_expression "(uVar10 < 0xff00)" ( (binary_expression "uVar10 < 0xff00" identifier < number_literal) )) (compound_statement "{\n        uVar8 = 0;\n      }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) })) (expression_statement "*(uint *)((long)puVar14 + 0x14) = uVar8;" (assignment_expression "*(uint *)((long)puVar14 + 0x14) = uVar8" (pointer_expression "*(uint *)((long)puVar14 + 0x14)" * (cast_expression "(uint *)((long)puVar14 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + 0x14)" ( (binary_expression "(long)puVar14 + 0x14" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar3 = *(code **)(*plVar12 + 0x58);" (assignment_expression "pcVar3 = *(code **)(*plVar12 + 0x58)" identifier = (pointer_expression "*(code **)(*plVar12 + 0x58)" * (cast_expression "(code **)(*plVar12 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar12 + 0x58)" ( (binary_expression "*plVar12 + 0x58" (pointer_expression "*plVar12" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }" if (parenthesized_expression "(pcVar3 == FUN_001869e0)" ( (binary_expression "pcVar3 == FUN_001869e0" identifier == identifier) )) (compound_statement "{\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }" { (expression_statement "uVar8 = *(uint *)((long)plVar12 + 0x7c);" (assignment_expression "uVar8 = *(uint *)((long)plVar12 + 0x7c)" identifier = (pointer_expression "*(uint *)((long)plVar12 + 0x7c)" * (cast_expression "(uint *)((long)plVar12 + 0x7c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar12 + 0x7c)" ( (binary_expression "(long)plVar12 + 0x7c" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }" { (labeled_statement "LAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");" statement_identifier : (expression_statement "FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");" (call_expression "FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx")" identifier (argument_list "("../../gold/output.h",0x1043,"do_out_shndx")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_out_shndx"" " string_content ") ))) ;)) })) }) (else_clause "else {\n        uVar8 = (*pcVar3)();\n      }" else (compound_statement "{\n        uVar8 = (*pcVar3)();\n      }" { (expression_statement "uVar8 = (*pcVar3)();" (assignment_expression "uVar8 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" identifier = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }" if (parenthesized_expression "(uVar8 < 0xff00)" ( (binary_expression "uVar8 < 0xff00" identifier < number_literal) )) (compound_statement "{\n        uVar13 = 0;\n      }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) })) (expression_statement "*(uint *)(puVar14 + 3) = uVar13;" (assignment_expression "*(uint *)(puVar14 + 3) = uVar13" (pointer_expression "*(uint *)(puVar14 + 3)" * (cast_expression "(uint *)(puVar14 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 3)" ( (binary_expression "puVar14 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "plVar11 = *(long **)(param_1 + 0x30);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x30)" identifier = (pointer_expression "*(long **)(param_1 + 0x30)" * (cast_expression "(long **)(param_1 + 0x30)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "plVar12 = (long *)plVar11[1];" (assignment_expression "plVar12 = (long *)plVar11[1]" identifier = (cast_expression "(long *)plVar11[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "local_50 = (long *)*plVar11;" (assignment_expression "local_50 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (expression_statement "puVar14[4] = 0;" (assignment_expression "puVar14[4] = 0" (subscript_expression "puVar14[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar10 = (long)plVar12 - (long)local_50 >> 3;" (assignment_expression "uVar10 = (long)plVar12 - (long)local_50 >> 3" identifier = (binary_expression "(long)plVar12 - (long)local_50 >> 3" (binary_expression "(long)plVar12 - (long)local_50" (cast_expression "(long)plVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (expression_statement "uVar13 = (uint)uVar10;" (assignment_expression "uVar13 = (uint)uVar10" identifier = (cast_expression "(uint)uVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }" if (parenthesized_expression "(0xfffe < uVar10)" ( (binary_expression "0xfffe < uVar10" number_literal < identifier) )) (compound_statement "{\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }" { (expression_statement "uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;" (assignment_expression "uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18" identifier = (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8" (binary_expression "uVar13 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar13 & 0xff0000) >> 8" (parenthesized_expression "(uVar13 & 0xff0000)" ( (binary_expression "uVar13 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar13 & 0xff00) << 8" (parenthesized_expression "(uVar13 & 0xff00)" ( (binary_expression "uVar13 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar13 << 0x18" identifier << number_literal))) ;) })) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" identifier = (binary_expression "puVar14 + 5" identifier + number_literal)) ;) (expression_statement "*(uint *)((long)puVar14 + 0x1c) = uVar8;" (assignment_expression "*(uint *)((long)puVar14 + 0x1c) = uVar8" (pointer_expression "*(uint *)((long)puVar14 + 0x1c)" * (cast_expression "(uint *)((long)puVar14 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + 0x1c)" ( (binary_expression "(long)puVar14 + 0x1c" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" { (labeled_statement "LAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");" statement_identifier : (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }" { (if_statement "if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" if (parenthesized_expression "(local_50 == plVar12)" ( (binary_expression "local_50 == plVar12" identifier == identifier) )) (compound_statement "{\n          iVar16 = 1;\n        }" { (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" else (compound_statement "{\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" { (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" identifier = number_literal) ;) (do_statement "do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);" do (compound_statement "{\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          }" { (expression_statement "lVar1 = *local_50;" (assignment_expression "lVar1 = *local_50" identifier = (pointer_expression "*local_50" * identifier)) ;) (if_statement "if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }" if (parenthesized_expression "(*(int *)(lVar1 + 0x2f0) == 1)" ( (binary_expression "*(int *)(lVar1 + 0x2f0) == 1" (pointer_expression "*(int *)(lVar1 + 0x2f0)" * (cast_expression "(int *)(lVar1 + 0x2f0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2f0)" ( (binary_expression "lVar1 + 0x2f0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }" { (expression_statement "uVar4 = *(undefined8 *)(param_1 + 0x48);" (assignment_expression "uVar4 = *(undefined8 *)(param_1 + 0x48)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x48)" * (cast_expression "(undefined8 *)(param_1 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "plVar12 = (long *)(lVar1 + 8);" (assignment_expression "plVar12 = (long *)(lVar1 + 8)" identifier = (cast_expression "(long *)(lVar1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) ;) (expression_statement "uVar5 = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "uVar5 = *(undefined8 *)(param_1 + 0x28)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (do_statement "do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);" do (compound_statement "{\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              }" { (expression_statement "plVar11 = (long *)plVar12[-1];" (assignment_expression "plVar11 = (long *)plVar12[-1]" identifier = (cast_expression "(long *)plVar12[-1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[-1]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) (if_statement "if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }" if (parenthesized_expression "(plVar11 != (long *)*plVar12)" ( (binary_expression "plVar11 != (long *)*plVar12" identifier != (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) )) (compound_statement "{\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }" { (do_statement "do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);" do (compound_statement "{\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  }" { (expression_statement "cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();" (assignment_expression "cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))()" identifier = (call_expression "(**(code **)(*(long *)*plVar11 + 0x30))()" (parenthesized_expression "(**(code **)(*(long *)*plVar11 + 0x30))" ( (pointer_expression "**(code **)(*(long *)*plVar11 + 0x30)" * (pointer_expression "*(code **)(*(long *)*plVar11 + 0x30)" * (cast_expression "(code **)(*(long *)*plVar11 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)*plVar11 + 0x30)" ( (binary_expression "*(long *)*plVar11 + 0x30" (pointer_expression "*(long *)*plVar11" * (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" identifier = identifier) ;) (if_statement "if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }" { (expression_statement "plVar6 = (long *)*plVar11;" (assignment_expression "plVar6 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" if (parenthesized_expression "(*(code **)(*plVar6 + 0x58) == FUN_001869e0)" ( (binary_expression "*(code **)(*plVar6 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar6 + 0x58)" * (cast_expression "(code **)(*plVar6 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x58)" ( (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }" { (expression_statement "iVar9 = *(int *)((long)plVar6 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar6 + 0x7c)" identifier = (pointer_expression "*(int *)((long)plVar6 + 0x7c)" * (cast_expression "(int *)((long)plVar6 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar6 + 0x7c)" ( (binary_expression "(long)plVar6 + 0x7c" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" else (compound_statement "{\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" { (expression_statement "iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);" (assignment_expression "iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6)" identifier = (call_expression "(**(code **)(*plVar6 + 0x58))(plVar6)" (parenthesized_expression "(**(code **)(*plVar6 + 0x58))" ( (pointer_expression "**(code **)(*plVar6 + 0x58)" * (pointer_expression "*(code **)(*plVar6 + 0x58)" * (cast_expression "(code **)(*plVar6 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x58)" ( (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" * identifier) + number_literal) ))))) )) (argument_list "(plVar6)" ( identifier )))) ;) }))) (if_statement "if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }" if (parenthesized_expression "(iVar9 != iVar16)" ( (binary_expression "iVar9 != iVar16" identifier != identifier) )) (compound_statement "{\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }" { (expression_statement "FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");" (call_expression "FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list")" identifier (argument_list "("../../gold/output.cc",0x1354,"write_section_headers_list")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""write_section_headers_list"" " string_content ") ))) ;) })) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" identifier = (binary_expression "puVar14 + 5" identifier + number_literal)) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_40[0] = puVar14;" (assignment_expression "local_40[0] = puVar14" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0020b160(plVar6,uVar5,uVar4,local_40);" (call_expression "FUN_0020b160(plVar6,uVar5,uVar4,local_40)" identifier (argument_list "(plVar6,uVar5,uVar4,local_40)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "((long *)*plVar12 != plVar11)" ( (binary_expression "(long *)*plVar12 != plVar11" (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier)) != identifier) )) ;) })) (expression_statement "plVar12 = plVar12 + 3;" (assignment_expression "plVar12 = plVar12 + 3" identifier = (binary_expression "plVar12 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "((long *)(lVar1 + 0x2c0) != plVar12)" ( (binary_expression "(long *)(lVar1 + 0x2c0) != plVar12" (cast_expression "(long *)(lVar1 + 0x2c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x2c0)" ( (binary_expression "lVar1 + 0x2c0" identifier + number_literal) ))) != identifier) )) ;) (expression_statement "plVar11 = *(long **)(param_1 + 0x30);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x30)" identifier = (pointer_expression "*(long **)(param_1 + 0x30)" * (cast_expression "(long **)(param_1 + 0x30)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) })) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((long *)plVar11[1] != local_50)" ( (binary_expression "(long *)plVar11[1] != local_50" (cast_expression "(long *)plVar11[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[1]" identifier [ number_literal ])) != identifier) )) ;) }))) }) (else_clause "else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" else (compound_statement "{\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" { (expression_statement "plVar11 = *(long **)(param_1 + 0x38);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x38)" identifier = (pointer_expression "*(long **)(param_1 + 0x38)" * (cast_expression "(long **)(param_1 + 0x38)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" identifier = number_literal) ;) (expression_statement "plVar12 = (long *)*plVar11;" (assignment_expression "plVar12 = (long *)*plVar11" identifier = (cast_expression "(long *)*plVar11" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }" if (parenthesized_expression "(plVar12 != (long *)plVar11[1])" ( (binary_expression "plVar12 != (long *)plVar11[1]" identifier != (cast_expression "(long *)plVar11[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[1]" identifier [ number_literal ]))) )) (compound_statement "{\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }" { (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) (do_statement "do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);" do (compound_statement "{\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          }" { (expression_statement "plVar6 = (long *)*plVar12;" (assignment_expression "plVar6 = (long *)*plVar12" identifier = (cast_expression "(long *)*plVar12" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (if_statement "if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }" if (parenthesized_expression "(((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11))" ( (binary_expression "((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)" (parenthesized_expression "((*(byte *)(plVar6 + 0xe) & 2) != 0)" ( (binary_expression "(*(byte *)(plVar6 + 0xe) & 2) != 0" (parenthesized_expression "(*(byte *)(plVar6 + 0xe) & 2)" ( (binary_expression "*(byte *)(plVar6 + 0xe) & 2" (pointer_expression "*(byte *)(plVar6 + 0xe)" * (cast_expression "(byte *)(plVar6 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar6 + 0xe)" ( (binary_expression "plVar6 + 0xe" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)" ( (comma_expression "puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11" (assignment_expression "puVar15 = puVar14" identifier = identifier) , (binary_expression "*(int *)((long)plVar6 + 0x6c) == 0x11" (pointer_expression "*(int *)((long)plVar6 + 0x6c)" * (cast_expression "(int *)((long)plVar6 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar6 + 0x6c)" ( (binary_expression "(long)plVar6 + 0x6c" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }" { (if_statement "if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" if (parenthesized_expression "(*(code **)(*plVar6 + 0x58) == FUN_001869e0)" ( (binary_expression "*(code **)(*plVar6 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar6 + 0x58)" * (cast_expression "(code **)(*plVar6 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x58)" ( (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }" { (expression_statement "iVar9 = *(int *)((long)plVar6 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar6 + 0x7c)" identifier = (pointer_expression "*(int *)((long)plVar6 + 0x7c)" * (cast_expression "(int *)((long)plVar6 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar6 + 0x7c)" ( (binary_expression "(long)plVar6 + 0x7c" (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" else (compound_statement "{\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" { (expression_statement "iVar9 = (**(code **)(*plVar6 + 0x58))();" (assignment_expression "iVar9 = (**(code **)(*plVar6 + 0x58))()" identifier = (call_expression "(**(code **)(*plVar6 + 0x58))()" (parenthesized_expression "(**(code **)(*plVar6 + 0x58))" ( (pointer_expression "**(code **)(*plVar6 + 0x58)" * (pointer_expression "*(code **)(*plVar6 + 0x58)" * (cast_expression "(code **)(*plVar6 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar6 + 0x58)" ( (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }))) (if_statement "if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }" if (parenthesized_expression "(iVar16 != iVar9)" ( (binary_expression "iVar16 != iVar9" identifier != identifier) )) (compound_statement "{\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }" { (expression_statement "FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");" (call_expression "FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write")" identifier (argument_list "("../../gold/output.cc",0x155,"do_sized_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") ))) ;) })) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" identifier = (binary_expression "puVar14 + 5" identifier + number_literal)) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_40[0] = puVar14;" (assignment_expression "local_40[0] = puVar14" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);" (call_expression "FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40)" identifier (argument_list "(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40)" ( (pointer_expression "*plVar12" * identifier) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x48)" * (cast_expression "(undefined8 *)(param_1 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "plVar11 = *(long **)(param_1 + 0x38);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x38)" identifier = (pointer_expression "*(long **)(param_1 + 0x38)" * (cast_expression "(long **)(param_1 + 0x38)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) })) (expression_statement "plVar12 = plVar12 + 1;" (assignment_expression "plVar12 = plVar12 + 1" identifier = (binary_expression "plVar12 + 1" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "((long *)plVar11[1] != plVar12)" ( (binary_expression "(long *)plVar11[1] != plVar12" (cast_expression "(long *)plVar11[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[1]" identifier [ number_literal ])) != identifier) )) ;) })) }))) (expression_statement "plVar12 = *(long **)(param_1 + 0x40);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x40)" identifier = (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar14 = (undefined8 *)*plVar12;" (assignment_expression "puVar14 = (undefined8 *)*plVar12" identifier = (cast_expression "(undefined8 *)*plVar12" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar12" * identifier))) ;) (if_statement "if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }" if (parenthesized_expression "(puVar14 != (undefined8 *)plVar12[1])" ( (binary_expression "puVar14 != (undefined8 *)plVar12[1]" identifier != (cast_expression "(undefined8 *)plVar12[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[1]" identifier [ number_literal ]))) )) (compound_statement "{\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }" { (do_statement "do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);" do (compound_statement "{\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        }" { (expression_statement "plVar11 = (long *)*puVar14;" (assignment_expression "plVar11 = (long *)*puVar14" identifier = (cast_expression "(long *)*puVar14" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (if_statement "if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" if (parenthesized_expression "(*(int *)((long)plVar11 + 0x6c) == 0x11)" ( (binary_expression "*(int *)((long)plVar11 + 0x6c) == 0x11" (pointer_expression "*(int *)((long)plVar11 + 0x6c)" * (cast_expression "(int *)((long)plVar11 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0x6c)" ( (binary_expression "(long)plVar11 + 0x6c" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }" { (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0020b78c;" goto statement_identifier ;)) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0020b690;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" else (compound_statement "{\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" { (labeled_statement "LAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" statement_identifier : (if_statement "if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" if (parenthesized_expression "(*(code **)(*plVar11 + 0x58) == FUN_001869e0)" ( (binary_expression "*(code **)(*plVar11 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar11 + 0x58)" * (cast_expression "(code **)(*plVar11 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x58)" ( (binary_expression "*plVar11 + 0x58" (pointer_expression "*plVar11" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }" { (expression_statement "iVar9 = *(int *)((long)plVar11 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar11 + 0x7c)" identifier = (pointer_expression "*(int *)((long)plVar11 + 0x7c)" * (cast_expression "(int *)((long)plVar11 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0x7c)" ( (binary_expression "(long)plVar11 + 0x7c" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0020b739;" goto statement_identifier ;)) }) (else_clause "else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" else (compound_statement "{\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" { (expression_statement "iVar9 = (**(code **)(*plVar11 + 0x58))();" (assignment_expression "iVar9 = (**(code **)(*plVar11 + 0x58))()" identifier = (call_expression "(**(code **)(*plVar11 + 0x58))()" (parenthesized_expression "(**(code **)(*plVar11 + 0x58))" ( (pointer_expression "**(code **)(*plVar11 + 0x58)" * (pointer_expression "*(code **)(*plVar11 + 0x58)" * (cast_expression "(code **)(*plVar11 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 0x58)" ( (binary_expression "*plVar11 + 0x58" (pointer_expression "*plVar11" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) })))) (if_statement "if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }" if (parenthesized_expression "(iVar9 != iVar16)" ( (binary_expression "iVar9 != iVar16" identifier != identifier) )) (compound_statement "{\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }" { (expression_statement "FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");" (call_expression "FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write")" identifier (argument_list "("../../gold/output.cc",0x167,"do_sized_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") ))) ;) })) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_40[0] = puVar15;" (assignment_expression "local_40[0] = puVar15" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);" (call_expression "FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40)" identifier (argument_list "(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40)" ( (pointer_expression "*puVar14" * identifier) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x48)" * (cast_expression "(undefined8 *)(param_1 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "plVar12 = *(long **)(param_1 + 0x40);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x40)" identifier = (pointer_expression "*(long **)(param_1 + 0x40)" * (cast_expression "(long **)(param_1 + 0x40)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = puVar15 + 5;" (assignment_expression "puVar15 = puVar15 + 5" identifier = (binary_expression "puVar15 + 5" identifier + number_literal)) ;) }))) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined8 *)plVar12[1] != puVar14)" ( (binary_expression "(undefined8 *)plVar12[1] != puVar14" (cast_expression "(undefined8 *)plVar12[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar12[1]" identifier [ number_literal ])) != identifier) )) ;) })) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) }))) })) (expression_statement "FUN_0017c650("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0017c650("../../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 ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator 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) )) (compound_statement { (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 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) )) (compound_statement { (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 IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression IDENT + IDENT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = 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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == 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 { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) (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 { (labeled_statement statement_identifier : (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 TYPE (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) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (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 *)) ) (pointer_expression * IDENT))) )) (compound_statement { (do_statement do (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 * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (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 (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 != 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 IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (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) )) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (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 (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 ( )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression 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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (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) )))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (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) )) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (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 { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (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 (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 ( )))) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression 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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (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) )))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (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) )) (compound_statement { (return_statement return ;) })) }))) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_0020b390(long param_1,long param_2)\n\n{\n  long lVar1;\n  long lVar2;\n  code *pcVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  char cVar7;\n  uint uVar8;\n  int iVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  int iVar16;\n  long *local_50;\n  undefined8 *local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar1 = *(long *)(param_1 + 0x10);\n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xe3,"offset");\n}" (primitive_type "void") (function_declarator "FUN_0020b390(long param_1,long param_2)" (identifier "FUN_0020b390") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  code *pcVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  long *plVar6;\n  char cVar7;\n  uint uVar8;\n  int iVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  int iVar16;\n  long *local_50;\n  undefined8 *local_40 [2];\n  \n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }\n  lVar1 = *(long *)(param_1 + 0x10);\n  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/output.h",0xe3,"offset");\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "long *plVar6;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar6" (* "*") (identifier "plVar6")) (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "long *plVar11;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar11" (* "*") (identifier "plVar11")) (; ";")) (declaration "long *plVar12;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar12" (* "*") (identifier "plVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "undefined8 *puVar14;" (type_identifier "undefined8") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined8 *puVar15;" (type_identifier "undefined8") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "long *local_50;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined8 *local_40 [2];" (type_identifier "undefined8") (pointer_declarator "*local_40 [2]" (* "*") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x20) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 2" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/output.h",0xcf,"data_size");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0017c650("../../gold/output.h",0xcf,"data_size")" (identifier "FUN_0017c650") (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") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar2 = *(long *)(param_1 + 0x18);\n    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }\n  }" ({ "{") (expression_statement "lVar2 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar2 = *(long *)(param_1 + 0x18)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {\n      FUN_001f4570();\n    }\n    else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" (if "if") (parenthesized_expression "((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1))" (( "(") (binary_expression "(lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)" (parenthesized_expression "(lVar2 < 0)" (( "(") (binary_expression "lVar2 < 0" (identifier "lVar2") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(long *)(param_2 + 0x10) < lVar2 + lVar1)" (( "(") (binary_expression "*(long *)(param_2 + 0x10) < lVar2 + lVar1" (pointer_expression "*(long *)(param_2 + 0x10)" (* "*") (cast_expression "(long *)(param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (< "<") (binary_expression "lVar2 + lVar1" (identifier "lVar2") (+ "+") (identifier "lVar1"))) () ")"))) () ")")) (compound_statement "{\n      FUN_001f4570();\n    }" ({ "{") (expression_statement "FUN_001f4570();" (call_expression "FUN_001f4570()" (identifier "FUN_001f4570") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" (else "else") (compound_statement "{\n      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));\n      plVar12 = *(long **)(param_1 + 0x50);\n      *puVar14 = 0;\n      puVar14[1] = 0;\n      *(undefined4 *)(puVar14 + 2) = 0;\n      uVar10 = lVar1 / 0x28;\n      uVar8 = (uint)uVar10;\n      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }\n      *(uint *)((long)puVar14 + 0x14) = uVar8;\n      pcVar3 = *(code **)(*plVar12 + 0x58);\n      if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }\n      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n      if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }\n      *(uint *)(puVar14 + 3) = uVar13;\n      plVar11 = *(long **)(param_1 + 0x30);\n      plVar12 = (long *)plVar11[1];\n      local_50 = (long *)*plVar11;\n      puVar14[4] = 0;\n      uVar10 = (long)plVar12 - (long)local_50 >> 3;\n      uVar13 = (uint)uVar10;\n      uVar8 = 0;\n      if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }\n      puVar15 = puVar14 + 5;\n      *(uint *)((long)puVar14 + 0x1c) = uVar8;\n      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\n      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }\n      plVar12 = *(long **)(param_1 + 0x40);\n      puVar14 = (undefined8 *)*plVar12;\n      if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }\n      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }\n    }" ({ "{") (expression_statement "puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));" (assignment_expression "puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18))" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)(lVar2 + *(long *)(param_2 + 0x18))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + *(long *)(param_2 + 0x18))" (( "(") (binary_expression "lVar2 + *(long *)(param_2 + 0x18)" (identifier "lVar2") (+ "+") (pointer_expression "*(long *)(param_2 + 0x18)" (* "*") (cast_expression "(long *)(param_2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) () ")")))) (; ";")) (expression_statement "plVar12 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x50)" (identifier "plVar12") (= "=") (pointer_expression "*(long **)(param_1 + 0x50)" (* "*") (cast_expression "(long **)(param_1 + 0x50)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*puVar14 = 0;" (assignment_expression "*puVar14 = 0" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar14[1] = 0;" (assignment_expression "puVar14[1] = 0" (subscript_expression "puVar14[1]" (identifier "puVar14") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar14 + 2) = 0;" (assignment_expression "*(undefined4 *)(puVar14 + 2) = 0" (pointer_expression "*(undefined4 *)(puVar14 + 2)" (* "*") (cast_expression "(undefined4 *)(puVar14 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 2)" (( "(") (binary_expression "puVar14 + 2" (identifier "puVar14") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = lVar1 / 0x28;" (assignment_expression "uVar10 = lVar1 / 0x28" (identifier "uVar10") (= "=") (binary_expression "lVar1 / 0x28" (identifier "lVar1") (/ "/") (number_literal "0x28"))) (; ";")) (expression_statement "uVar8 = (uint)uVar10;" (assignment_expression "uVar8 = (uint)uVar10" (identifier "uVar8") (= "=") (cast_expression "(uint)uVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar10"))) (; ";")) (expression_statement "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (identifier "uVar8") (= "=") (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" (( "(") (binary_expression "uVar8 & 0xff0000" (identifier "uVar8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" (( "(") (binary_expression "uVar8 & 0xff00" (identifier "uVar8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar8 << 0x18" (identifier "uVar8") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (uVar10 < 0xff00) {\n        uVar8 = 0;\n      }" (if "if") (parenthesized_expression "(uVar10 < 0xff00)" (( "(") (binary_expression "uVar10 < 0xff00" (identifier "uVar10") (< "<") (number_literal "0xff00")) () ")")) (compound_statement "{\n        uVar8 = 0;\n      }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(uint *)((long)puVar14 + 0x14) = uVar8;" (assignment_expression "*(uint *)((long)puVar14 + 0x14) = uVar8" (pointer_expression "*(uint *)((long)puVar14 + 0x14)" (* "*") (cast_expression "(uint *)((long)puVar14 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar14 + 0x14)" (( "(") (binary_expression "(long)puVar14 + 0x14" (cast_expression "(long)puVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar14")) (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "pcVar3 = *(code **)(*plVar12 + 0x58);" (assignment_expression "pcVar3 = *(code **)(*plVar12 + 0x58)" (identifier "pcVar3") (= "=") (pointer_expression "*(code **)(*plVar12 + 0x58)" (* "*") (cast_expression "(code **)(*plVar12 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar12 + 0x58)" (( "(") (binary_expression "*plVar12 + 0x58" (pointer_expression "*plVar12" (* "*") (identifier "plVar12")) (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (if_statement "if (pcVar3 == FUN_001869e0) {\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }\n      else {\n        uVar8 = (*pcVar3)();\n      }" (if "if") (parenthesized_expression "(pcVar3 == FUN_001869e0)" (( "(") (binary_expression "pcVar3 == FUN_001869e0" (identifier "pcVar3") (== "==") (identifier "FUN_001869e0")) () ")")) (compound_statement "{\n        uVar8 = *(uint *)((long)plVar12 + 0x7c);\n        if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }\n      }" ({ "{") (expression_statement "uVar8 = *(uint *)((long)plVar12 + 0x7c);" (assignment_expression "uVar8 = *(uint *)((long)plVar12 + 0x7c)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)((long)plVar12 + 0x7c)" (* "*") (cast_expression "(uint *)((long)plVar12 + 0x7c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar12 + 0x7c)" (( "(") (binary_expression "(long)plVar12 + 0x7c" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (if_statement "if (uVar8 == 0xffffffff) {\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }" (if "if") (parenthesized_expression "(uVar8 == 0xffffffff)" (( "(") (binary_expression "uVar8 == 0xffffffff" (identifier "uVar8") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\nLAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");\n        }" ({ "{") (labeled_statement "LAB_0020b739:\n                    \n          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");" (statement_identifier "LAB_0020b739") (: ":") (expression_statement "FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");" (call_expression "FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.h",0x1043,"do_out_shndx")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x1043") (, ",") (string_literal ""do_out_shndx"" (" """) (string_content "do_out_shndx") (" """)) () ")"))) (; ";"))) (} "}"))) (} "}")) (else_clause "else {\n        uVar8 = (*pcVar3)();\n      }" (else "else") (compound_statement "{\n        uVar8 = (*pcVar3)();\n      }" ({ "{") (expression_statement "uVar8 = (*pcVar3)();" (assignment_expression "uVar8 = (*pcVar3)()" (identifier "uVar8") (= "=") (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (identifier "uVar13") (= "=") (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" (( "(") (binary_expression "uVar8 & 0xff0000" (identifier "uVar8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" (( "(") (binary_expression "uVar8 & 0xff00" (identifier "uVar8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar8 << 0x18" (identifier "uVar8") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (uVar8 < 0xff00) {\n        uVar13 = 0;\n      }" (if "if") (parenthesized_expression "(uVar8 < 0xff00)" (( "(") (binary_expression "uVar8 < 0xff00" (identifier "uVar8") (< "<") (number_literal "0xff00")) () ")")) (compound_statement "{\n        uVar13 = 0;\n      }" ({ "{") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(uint *)(puVar14 + 3) = uVar13;" (assignment_expression "*(uint *)(puVar14 + 3) = uVar13" (pointer_expression "*(uint *)(puVar14 + 3)" (* "*") (cast_expression "(uint *)(puVar14 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 3)" (( "(") (binary_expression "puVar14 + 3" (identifier "puVar14") (+ "+") (number_literal "3")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "plVar11 = *(long **)(param_1 + 0x30);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x30)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_1 + 0x30)" (* "*") (cast_expression "(long **)(param_1 + 0x30)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "plVar12 = (long *)plVar11[1];" (assignment_expression "plVar12 = (long *)plVar11[1]" (identifier "plVar12") (= "=") (cast_expression "(long *)plVar11[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_50 = (long *)*plVar11;" (assignment_expression "local_50 = (long *)*plVar11" (identifier "local_50") (= "=") (cast_expression "(long *)*plVar11" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")))) (; ";")) (expression_statement "puVar14[4] = 0;" (assignment_expression "puVar14[4] = 0" (subscript_expression "puVar14[4]" (identifier "puVar14") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = (long)plVar12 - (long)local_50 >> 3;" (assignment_expression "uVar10 = (long)plVar12 - (long)local_50 >> 3" (identifier "uVar10") (= "=") (binary_expression "(long)plVar12 - (long)local_50 >> 3" (binary_expression "(long)plVar12 - (long)local_50" (cast_expression "(long)plVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar12")) (- "-") (cast_expression "(long)local_50" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_50"))) (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "uVar13 = (uint)uVar10;" (assignment_expression "uVar13 = (uint)uVar10" (identifier "uVar13") (= "=") (cast_expression "(uint)uVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar10"))) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0xfffe < uVar10) {\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }" (if "if") (parenthesized_expression "(0xfffe < uVar10)" (( "(") (binary_expression "0xfffe < uVar10" (number_literal "0xfffe") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;\n      }" ({ "{") (expression_statement "uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;" (assignment_expression "uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18" (identifier "uVar8") (= "=") (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8" (binary_expression "uVar13 >> 0x18" (identifier "uVar13") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar13 & 0xff0000) >> 8" (parenthesized_expression "(uVar13 & 0xff0000)" (( "(") (binary_expression "uVar13 & 0xff0000" (identifier "uVar13") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar13 & 0xff00) << 8" (parenthesized_expression "(uVar13 & 0xff00)" (( "(") (binary_expression "uVar13 & 0xff00" (identifier "uVar13") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar13 << 0x18" (identifier "uVar13") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" (identifier "puVar15") (= "=") (binary_expression "puVar14 + 5" (identifier "puVar14") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "*(uint *)((long)puVar14 + 0x1c) = uVar8;" (assignment_expression "*(uint *)((long)puVar14 + 0x1c) = uVar8" (pointer_expression "*(uint *)((long)puVar14 + 0x1c)" (* "*") (cast_expression "(uint *)((long)puVar14 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar14 + 0x1c)" (( "(") (binary_expression "(long)puVar14 + 0x1c" (cast_expression "(long)puVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar14")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" ({ "{") (labeled_statement "LAB_0020b78c:\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (statement_identifier "LAB_0020b78c") (: ":") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";"))) (} "}"))) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }\n      else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x5051")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }\n      }" ({ "{") (if_statement "if (local_50 == plVar12) {\n          iVar16 = 1;\n        }\n        else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" (if "if") (parenthesized_expression "(local_50 == plVar12)" (( "(") (binary_expression "local_50 == plVar12" (identifier "local_50") (== "==") (identifier "plVar12")) () ")")) (compound_statement "{\n          iVar16 = 1;\n        }" ({ "{") (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" (identifier "iVar16") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" (else "else") (compound_statement "{\n          iVar16 = 1;\n          do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);\n        }" ({ "{") (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" (identifier "iVar16") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          } while ((long *)plVar11[1] != local_50);" (do "do") (compound_statement "{\n            lVar1 = *local_50;\n            if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }\n            local_50 = local_50 + 1;\n          }" ({ "{") (expression_statement "lVar1 = *local_50;" (assignment_expression "lVar1 = *local_50" (identifier "lVar1") (= "=") (pointer_expression "*local_50" (* "*") (identifier "local_50"))) (; ";")) (if_statement "if (*(int *)(lVar1 + 0x2f0) == 1) {\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }" (if "if") (parenthesized_expression "(*(int *)(lVar1 + 0x2f0) == 1)" (( "(") (binary_expression "*(int *)(lVar1 + 0x2f0) == 1" (pointer_expression "*(int *)(lVar1 + 0x2f0)" (* "*") (cast_expression "(int *)(lVar1 + 0x2f0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x2f0)" (( "(") (binary_expression "lVar1 + 0x2f0" (identifier "lVar1") (+ "+") (number_literal "0x2f0")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              uVar4 = *(undefined8 *)(param_1 + 0x48);\n              plVar12 = (long *)(lVar1 + 8);\n              uVar5 = *(undefined8 *)(param_1 + 0x28);\n              do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);\n              plVar11 = *(long **)(param_1 + 0x30);\n            }" ({ "{") (expression_statement "uVar4 = *(undefined8 *)(param_1 + 0x48);" (assignment_expression "uVar4 = *(undefined8 *)(param_1 + 0x48)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "plVar12 = (long *)(lVar1 + 8);" (assignment_expression "plVar12 = (long *)(lVar1 + 8)" (identifier "plVar12") (= "=") (cast_expression "(long *)(lVar1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 8)" (( "(") (binary_expression "lVar1 + 8" (identifier "lVar1") (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar5 = *(undefined8 *)(param_1 + 0x28);" (assignment_expression "uVar5 = *(undefined8 *)(param_1 + 0x28)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (do_statement "do {\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              } while ((long *)(lVar1 + 0x2c0) != plVar12);" (do "do") (compound_statement "{\n                plVar11 = (long *)plVar12[-1];\n                puVar14 = puVar15;\n                if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }\n                plVar12 = plVar12 + 3;\n              }" ({ "{") (expression_statement "plVar11 = (long *)plVar12[-1];" (assignment_expression "plVar11 = (long *)plVar12[-1]" (identifier "plVar11") (= "=") (cast_expression "(long *)plVar12[-1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar12[-1]" (identifier "plVar12") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" (identifier "puVar14") (= "=") (identifier "puVar15")) (; ";")) (if_statement "if (plVar11 != (long *)*plVar12) {\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }" (if "if") (parenthesized_expression "(plVar11 != (long *)*plVar12)" (( "(") (binary_expression "plVar11 != (long *)*plVar12" (identifier "plVar11") (!= "!=") (cast_expression "(long *)*plVar12" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar12" (* "*") (identifier "plVar12")))) () ")")) (compound_statement "{\n                  do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);\n                }" ({ "{") (do_statement "do {\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  } while ((long *)*plVar12 != plVar11);" (do "do") (compound_statement "{\n                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();\n                    puVar15 = puVar14;\n                    if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }\n                    plVar11 = plVar11 + 1;\n                    puVar14 = puVar15;\n                  }" ({ "{") (expression_statement "cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();" (assignment_expression "cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))()" (identifier "cVar7") (= "=") (call_expression "(**(code **)(*(long *)*plVar11 + 0x30))()" (parenthesized_expression "(**(code **)(*(long *)*plVar11 + 0x30))" (( "(") (pointer_expression "**(code **)(*(long *)*plVar11 + 0x30)" (* "*") (pointer_expression "*(code **)(*(long *)*plVar11 + 0x30)" (* "*") (cast_expression "(code **)(*(long *)*plVar11 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)*plVar11 + 0x30)" (( "(") (binary_expression "*(long *)*plVar11 + 0x30" (pointer_expression "*(long *)*plVar11" (* "*") (cast_expression "(long *)*plVar11" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")))) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" (identifier "puVar15") (= "=") (identifier "puVar14")) (; ";")) (if_statement "if (cVar7 != '\0') {\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                      plVar6 = (long *)*plVar11;\n                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }\n                      if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }\n                      puVar15 = puVar14 + 5;\n                      iVar16 = iVar16 + 1;\n                      local_40[0] = puVar14;\n                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);\n                    }" ({ "{") (expression_statement "plVar6 = (long *)*plVar11;" (assignment_expression "plVar6 = (long *)*plVar11" (identifier "plVar6") (= "=") (cast_expression "(long *)*plVar11" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")))) (; ";")) (if_statement "if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }\n                      else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" (if "if") (parenthesized_expression "(*(code **)(*plVar6 + 0x58) == FUN_001869e0)" (( "(") (binary_expression "*(code **)(*plVar6 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar6 + 0x58)" (* "*") (cast_expression "(code **)(*plVar6 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar6 + 0x58)" (( "(") (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (+ "+") (number_literal "0x58")) () ")")))) (== "==") (identifier "FUN_001869e0")) () ")")) (compound_statement "{\n                        iVar9 = *(int *)((long)plVar6 + 0x7c);\n                        if (iVar9 == -1) goto LAB_0020b739;\n                      }" ({ "{") (expression_statement "iVar9 = *(int *)((long)plVar6 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar6 + 0x7c)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)((long)plVar6 + 0x7c)" (* "*") (cast_expression "(int *)((long)plVar6 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar6 + 0x7c)" (( "(") (binary_expression "(long)plVar6 + 0x7c" (cast_expression "(long)plVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar6")) (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0020b739;" (goto "goto") (statement_identifier "LAB_0020b739") (; ";"))) (} "}")) (else_clause "else {\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" (else "else") (compound_statement "{\n                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);\n                      }" ({ "{") (expression_statement "iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);" (assignment_expression "iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(*plVar6 + 0x58))(plVar6)" (parenthesized_expression "(**(code **)(*plVar6 + 0x58))" (( "(") (pointer_expression "**(code **)(*plVar6 + 0x58)" (* "*") (pointer_expression "*(code **)(*plVar6 + 0x58)" (* "*") (cast_expression "(code **)(*plVar6 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar6 + 0x58)" (( "(") (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (argument_list "(plVar6)" (( "(") (identifier "plVar6") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar9 != iVar16) {\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }" (if "if") (parenthesized_expression "(iVar9 != iVar16)" (( "(") (binary_expression "iVar9 != iVar16" (identifier "iVar9") (!= "!=") (identifier "iVar16")) () ")")) (compound_statement "{\n                    \n                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");\n                      }" ({ "{") (expression_statement "FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");" (call_expression "FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.cc",0x1354,"write_section_headers_list")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x1354") (, ",") (string_literal ""write_section_headers_list"" (" """) (string_content "write_section_headers_list") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" (identifier "puVar15") (= "=") (binary_expression "puVar14 + 5" (identifier "puVar14") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40[0] = puVar14;" (assignment_expression "local_40[0] = puVar14" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar14")) (; ";")) (expression_statement "FUN_0020b160(plVar6,uVar5,uVar4,local_40);" (call_expression "FUN_0020b160(plVar6,uVar5,uVar4,local_40)" (identifier "FUN_0020b160") (argument_list "(plVar6,uVar5,uVar4,local_40)" (( "(") (identifier "plVar6") (, ",") (identifier "uVar5") (, ",") (identifier "uVar4") (, ",") (identifier "local_40") () ")"))) (; ";")) (} "}"))) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" (identifier "plVar11") (= "=") (binary_expression "plVar11 + 1" (identifier "plVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" (identifier "puVar14") (= "=") (identifier "puVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((long *)*plVar12 != plVar11)" (( "(") (binary_expression "(long *)*plVar12 != plVar11" (cast_expression "(long *)*plVar12" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar12" (* "*") (identifier "plVar12"))) (!= "!=") (identifier "plVar11")) () ")")) (; ";")) (} "}"))) (expression_statement "plVar12 = plVar12 + 3;" (assignment_expression "plVar12 = plVar12 + 3" (identifier "plVar12") (= "=") (binary_expression "plVar12 + 3" (identifier "plVar12") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((long *)(lVar1 + 0x2c0) != plVar12)" (( "(") (binary_expression "(long *)(lVar1 + 0x2c0) != plVar12" (cast_expression "(long *)(lVar1 + 0x2c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x2c0)" (( "(") (binary_expression "lVar1 + 0x2c0" (identifier "lVar1") (+ "+") (number_literal "0x2c0")) () ")"))) (!= "!=") (identifier "plVar12")) () ")")) (; ";")) (expression_statement "plVar11 = *(long **)(param_1 + 0x30);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x30)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_1 + 0x30)" (* "*") (cast_expression "(long **)(param_1 + 0x30)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" (identifier "local_50") (= "=") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((long *)plVar11[1] != local_50)" (( "(") (binary_expression "(long *)plVar11[1] != local_50" (cast_expression "(long *)plVar11[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "local_50")) () ")")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" (else "else") (compound_statement "{\n        plVar11 = *(long **)(param_1 + 0x38);\n        iVar16 = 1;\n        plVar12 = (long *)*plVar11;\n        if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }\n      }" ({ "{") (expression_statement "plVar11 = *(long **)(param_1 + 0x38);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x38)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_1 + 0x38)" (* "*") (cast_expression "(long **)(param_1 + 0x38)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "iVar16 = 1;" (assignment_expression "iVar16 = 1" (identifier "iVar16") (= "=") (number_literal "1")) (; ";")) (expression_statement "plVar12 = (long *)*plVar11;" (assignment_expression "plVar12 = (long *)*plVar11" (identifier "plVar12") (= "=") (cast_expression "(long *)*plVar11" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")))) (; ";")) (if_statement "if (plVar12 != (long *)plVar11[1]) {\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }" (if "if") (parenthesized_expression "(plVar12 != (long *)plVar11[1])" (( "(") (binary_expression "plVar12 != (long *)plVar11[1]" (identifier "plVar12") (!= "!=") (cast_expression "(long *)plVar11[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n          puVar14 = puVar15;\n          do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);\n        }" ({ "{") (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" (identifier "puVar14") (= "=") (identifier "puVar15")) (; ";")) (do_statement "do {\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          } while ((long *)plVar11[1] != plVar12);" (do "do") (compound_statement "{\n            plVar6 = (long *)*plVar12;\n            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }\n            plVar12 = plVar12 + 1;\n            puVar14 = puVar15;\n          }" ({ "{") (expression_statement "plVar6 = (long *)*plVar12;" (assignment_expression "plVar6 = (long *)*plVar12" (identifier "plVar6") (= "=") (cast_expression "(long *)*plVar12" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar12" (* "*") (identifier "plVar12")))) (; ";")) (if_statement "if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }" (if "if") (parenthesized_expression "(((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11))" (( "(") (binary_expression "((*(byte *)(plVar6 + 0xe) & 2) != 0) ||\n               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)" (parenthesized_expression "((*(byte *)(plVar6 + 0xe) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(plVar6 + 0xe) & 2) != 0" (parenthesized_expression "(*(byte *)(plVar6 + 0xe) & 2)" (( "(") (binary_expression "*(byte *)(plVar6 + 0xe) & 2" (pointer_expression "*(byte *)(plVar6 + 0xe)" (* "*") (cast_expression "(byte *)(plVar6 + 0xe)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar6 + 0xe)" (( "(") (binary_expression "plVar6 + 0xe" (identifier "plVar6") (+ "+") (number_literal "0xe")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)" (( "(") (comma_expression "puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11" (assignment_expression "puVar15 = puVar14" (identifier "puVar15") (= "=") (identifier "puVar14")) (, ",") (binary_expression "*(int *)((long)plVar6 + 0x6c) == 0x11" (pointer_expression "*(int *)((long)plVar6 + 0x6c)" (* "*") (cast_expression "(int *)((long)plVar6 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar6 + 0x6c)" (( "(") (binary_expression "(long)plVar6 + 0x6c" (cast_expression "(long)plVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar6")) (+ "+") (number_literal "0x6c")) () ")")))) (== "==") (number_literal "0x11"))) () ")"))) () ")")) (compound_statement "{\n              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }\n              if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }\n              puVar15 = puVar14 + 5;\n              iVar16 = iVar16 + 1;\n              local_40[0] = puVar14;\n              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);\n              plVar11 = *(long **)(param_1 + 0x38);\n            }" ({ "{") (if_statement "if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }\n              else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" (if "if") (parenthesized_expression "(*(code **)(*plVar6 + 0x58) == FUN_001869e0)" (( "(") (binary_expression "*(code **)(*plVar6 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar6 + 0x58)" (* "*") (cast_expression "(code **)(*plVar6 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar6 + 0x58)" (( "(") (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (+ "+") (number_literal "0x58")) () ")")))) (== "==") (identifier "FUN_001869e0")) () ")")) (compound_statement "{\n                iVar9 = *(int *)((long)plVar6 + 0x7c);\n                if (iVar9 == -1) goto LAB_0020b739;\n              }" ({ "{") (expression_statement "iVar9 = *(int *)((long)plVar6 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar6 + 0x7c)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)((long)plVar6 + 0x7c)" (* "*") (cast_expression "(int *)((long)plVar6 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar6 + 0x7c)" (( "(") (binary_expression "(long)plVar6 + 0x7c" (cast_expression "(long)plVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar6")) (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0020b739;" (goto "goto") (statement_identifier "LAB_0020b739") (; ";"))) (} "}")) (else_clause "else {\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" (else "else") (compound_statement "{\n                iVar9 = (**(code **)(*plVar6 + 0x58))();\n              }" ({ "{") (expression_statement "iVar9 = (**(code **)(*plVar6 + 0x58))();" (assignment_expression "iVar9 = (**(code **)(*plVar6 + 0x58))()" (identifier "iVar9") (= "=") (call_expression "(**(code **)(*plVar6 + 0x58))()" (parenthesized_expression "(**(code **)(*plVar6 + 0x58))" (( "(") (pointer_expression "**(code **)(*plVar6 + 0x58)" (* "*") (pointer_expression "*(code **)(*plVar6 + 0x58)" (* "*") (cast_expression "(code **)(*plVar6 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar6 + 0x58)" (( "(") (binary_expression "*plVar6 + 0x58" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar16 != iVar9) {\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }" (if "if") (parenthesized_expression "(iVar16 != iVar9)" (( "(") (binary_expression "iVar16 != iVar9" (identifier "iVar16") (!= "!=") (identifier "iVar9")) () ")")) (compound_statement "{\n                    \n                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");\n              }" ({ "{") (expression_statement "FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");" (call_expression "FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.cc",0x155,"do_sized_write")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x155") (, ",") (string_literal ""do_sized_write"" (" """) (string_content "do_sized_write") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar15 = puVar14 + 5;" (assignment_expression "puVar15 = puVar14 + 5" (identifier "puVar15") (= "=") (binary_expression "puVar14 + 5" (identifier "puVar14") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40[0] = puVar14;" (assignment_expression "local_40[0] = puVar14" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar14")) (; ";")) (expression_statement "FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40);" (call_expression "FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40)" (identifier "FUN_0020b160") (argument_list "(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                           local_40)" (( "(") (pointer_expression "*plVar12" (* "*") (identifier "plVar12")) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (, ",") (identifier "local_40") () ")"))) (; ";")) (expression_statement "plVar11 = *(long **)(param_1 + 0x38);" (assignment_expression "plVar11 = *(long **)(param_1 + 0x38)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_1 + 0x38)" (* "*") (cast_expression "(long **)(param_1 + 0x38)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}"))) (expression_statement "plVar12 = plVar12 + 1;" (assignment_expression "plVar12 = plVar12 + 1" (identifier "plVar12") (= "=") (binary_expression "plVar12 + 1" (identifier "plVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" (identifier "puVar14") (= "=") (identifier "puVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((long *)plVar11[1] != plVar12)" (( "(") (binary_expression "(long *)plVar11[1] != plVar12" (cast_expression "(long *)plVar11[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "plVar12")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "plVar12 = *(long **)(param_1 + 0x40);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x40)" (identifier "plVar12") (= "=") (pointer_expression "*(long **)(param_1 + 0x40)" (* "*") (cast_expression "(long **)(param_1 + 0x40)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "puVar14 = (undefined8 *)*plVar12;" (assignment_expression "puVar14 = (undefined8 *)*plVar12" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)*plVar12" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar12" (* "*") (identifier "plVar12")))) (; ";")) (if_statement "if (puVar14 != (undefined8 *)plVar12[1]) {\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }" (if "if") (parenthesized_expression "(puVar14 != (undefined8 *)plVar12[1])" (( "(") (binary_expression "puVar14 != (undefined8 *)plVar12[1]" (identifier "puVar14") (!= "!=") (cast_expression "(undefined8 *)plVar12[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n        do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);\n      }" ({ "{") (do_statement "do {\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        } while ((undefined8 *)plVar12[1] != puVar14);" (do "do") (compound_statement "{\n          plVar11 = (long *)*puVar14;\n          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }\n          puVar14 = puVar14 + 1;\n        }" ({ "{") (expression_statement "plVar11 = (long *)*puVar14;" (assignment_expression "plVar11 = (long *)*puVar14" (identifier "plVar11") (= "=") (cast_expression "(long *)*puVar14" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (; ";")) (if_statement "if (*(int *)((long)plVar11 + 0x6c) == 0x11) {\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }\n          else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" (if "if") (parenthesized_expression "(*(int *)((long)plVar11 + 0x6c) == 0x11)" (( "(") (binary_expression "*(int *)((long)plVar11 + 0x6c) == 0x11" (pointer_expression "*(int *)((long)plVar11 + 0x6c)" (* "*") (cast_expression "(int *)((long)plVar11 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + 0x6c)" (( "(") (binary_expression "(long)plVar11 + 0x6c" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (number_literal "0x6c")) () ")")))) (== "==") (number_literal "0x11")) () ")")) (compound_statement "{\n            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;\n            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;\n          }" ({ "{") (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0020b78c;" (goto "goto") (statement_identifier "LAB_0020b78c") (; ";"))) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;" (if "if") (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x5051")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0020b690;" (goto "goto") (statement_identifier "LAB_0020b690") (; ";"))) (} "}")) (else_clause "else {\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" (else "else") (compound_statement "{\nLAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }\n            if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }\n            iVar16 = iVar16 + 1;\n            local_40[0] = puVar15;\n            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);\n            plVar12 = *(long **)(param_1 + 0x40);\n            puVar15 = puVar15 + 5;\n          }" ({ "{") (labeled_statement "LAB_0020b690:\n            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" (statement_identifier "LAB_0020b690") (: ":") (if_statement "if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }\n            else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" (if "if") (parenthesized_expression "(*(code **)(*plVar11 + 0x58) == FUN_001869e0)" (( "(") (binary_expression "*(code **)(*plVar11 + 0x58) == FUN_001869e0" (pointer_expression "*(code **)(*plVar11 + 0x58)" (* "*") (cast_expression "(code **)(*plVar11 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x58)" (( "(") (binary_expression "*plVar11 + 0x58" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x58")) () ")")))) (== "==") (identifier "FUN_001869e0")) () ")")) (compound_statement "{\n              iVar9 = *(int *)((long)plVar11 + 0x7c);\n              if (iVar9 == -1) goto LAB_0020b739;\n            }" ({ "{") (expression_statement "iVar9 = *(int *)((long)plVar11 + 0x7c);" (assignment_expression "iVar9 = *(int *)((long)plVar11 + 0x7c)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)((long)plVar11 + 0x7c)" (* "*") (cast_expression "(int *)((long)plVar11 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + 0x7c)" (( "(") (binary_expression "(long)plVar11 + 0x7c" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -1) goto LAB_0020b739;" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0020b739;" (goto "goto") (statement_identifier "LAB_0020b739") (; ";"))) (} "}")) (else_clause "else {\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" (else "else") (compound_statement "{\n              iVar9 = (**(code **)(*plVar11 + 0x58))();\n            }" ({ "{") (expression_statement "iVar9 = (**(code **)(*plVar11 + 0x58))();" (assignment_expression "iVar9 = (**(code **)(*plVar11 + 0x58))()" (identifier "iVar9") (= "=") (call_expression "(**(code **)(*plVar11 + 0x58))()" (parenthesized_expression "(**(code **)(*plVar11 + 0x58))" (( "(") (pointer_expression "**(code **)(*plVar11 + 0x58)" (* "*") (pointer_expression "*(code **)(*plVar11 + 0x58)" (* "*") (cast_expression "(code **)(*plVar11 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 0x58)" (( "(") (binary_expression "*plVar11 + 0x58" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))))) (if_statement "if (iVar9 != iVar16) {\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }" (if "if") (parenthesized_expression "(iVar9 != iVar16)" (( "(") (binary_expression "iVar9 != iVar16" (identifier "iVar9") (!= "!=") (identifier "iVar16")) () ")")) (compound_statement "{\n                    \n              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");\n            }" ({ "{") (expression_statement "FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");" (call_expression "FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.cc",0x167,"do_sized_write")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x167") (, ",") (string_literal ""do_sized_write"" (" """) (string_content "do_sized_write") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40[0] = puVar15;" (assignment_expression "local_40[0] = puVar15" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar15")) (; ";")) (expression_statement "FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40);" (call_expression "FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40)" (identifier "FUN_0020b160") (argument_list "(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),\n                         local_40)" (( "(") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (, ",") (identifier "local_40") () ")"))) (; ";")) (expression_statement "plVar12 = *(long **)(param_1 + 0x40);" (assignment_expression "plVar12 = *(long **)(param_1 + 0x40)" (identifier "plVar12") (= "=") (pointer_expression "*(long **)(param_1 + 0x40)" (* "*") (cast_expression "(long **)(param_1 + 0x40)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "puVar15 = puVar15 + 5;" (assignment_expression "puVar15 = puVar15 + 5" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 5" (identifier "puVar15") (+ "+") (number_literal "5"))) (; ";")) (} "}")))) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined8 *)plVar12[1] != puVar14)" (( "(") (binary_expression "(undefined8 *)plVar12[1] != puVar14" (cast_expression "(undefined8 *)plVar12[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar12[1]" (identifier "plVar12") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "puVar14")) () ")")) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) != 0) {\n        return;\n      }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 4" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "FUN_0017c650("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0017c650("../../gold/output.h",0xe3,"offset")" (identifier "FUN_0017c650") (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") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: do_sized_write<32, true>
   DWARF original prototype: void do_sized_write<32,_true>(Output_section_headers * this,
   Output_file * of) */

void __thiscall
var_17::Output_section_headers::do_sized_write<32,var_23>(Output_section_headers *this,type_1 *of)

{
  byte var_4;
  type_1 *this_1;
  long var_6;
  type_2 *pOVar3;
  type_3 *var_10;
  type_4 var_16;
  type_5 *pOVar6;
  type_6 *secnamepool;
  type_7 *layout;
  type_8 var_8;
  int iVar8;
  type_9 var_13;
  type_10 *pSVar10;
  type_8 var_14;
  size_t in_RDX;
  type_11 *pSVar12;
  type_12 *var_9;
  var_1<32> *var_25;
  var_1<32> *var_21;
  type_4 *var_19;
  type_4 var_24;
  type_4 var_20;
  type_4 var_15;
  var_2<32,var_23> var_3;
  
  var_4 = (this->super_Output_data).field_0x20;
  if ((var_4 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    var_5("../../gold/output.h",0xcf,"data_size");
  }
  this_1 = (type_1 *)(this->super_Output_data).data_size_;
  if ((var_4 & 4) != 0) {
    var_6 = (this->super_Output_data).offset_;
    if ((var_6 < 0) || (of->file_size_ < (long)&this_1->name_ + var_6)) {
      Output_file::var_7((type_1 *)this,(type_13)of,in_RDX,this_1);
    }
    else {
      var_9 = of->base_ + var_6;
      pOVar3 = this->shstrtab_section_;
      var_9[0] = '\0';
      var_9[1] = '\0';
      var_9[2] = '\0';
      var_9[3] = '\0';
      var_9[4] = '\0';
      var_9[5] = '\0';
      var_9[6] = '\0';
      var_9[7] = '\0';
      var_9[8] = '\0';
      var_9[9] = '\0';
      var_9[10] = '\0';
      var_9[0xb] = '\0';
      var_9[0xc] = '\0';
      var_9[0xd] = '\0';
      var_9[0xe] = '\0';
      var_9[0xf] = '\0';
      var_9[0x10] = '\0';
      var_9[0x11] = '\0';
      var_9[0x12] = '\0';
      var_9[0x13] = '\0';
      var_8 = (type_8)((long)this_1 / 0x28);
      var_8 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
      if ((type_9)((long)this_1 / 0x28) < 0xff00) {
        var_8 = 0;
      }
      *(type_8 *)(var_9 + 0x14) = var_8;
      var_10 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];
      if (var_10 == type_2::do_out_shndx) {
        var_8 = pOVar3->out_shndx_;
        if (var_8 == 0xffffffff) {
LAB_0020b739:
                    /* WARNING: Subroutine does not return */
          var_5("../../gold/output.h",0x1043,"do_out_shndx");
        }
      }
      else {
        var_8 = (*var_10)();
      }
      var_14 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
      if (var_8 < 0xff00) {
        var_14 = 0;
      }
      *(type_8 *)(var_9 + 0x18) = var_14;
      pSVar12 = this->segment_list_;
      var_16 = (pSVar12->
                super__Vector_base<var_17::type_5*var_12,var_18::allocator<var_17::type_5*>var_11>var_12).
                _M_impl._M_finish;
      var_15 = (pSVar12->
                 super__Vector_base<var_17::type_5*var_12,var_18::allocator<var_17::type_5*>var_11>var_12).
                 _M_impl._M_start;
      var_9[0x20] = '\0';
      var_9[0x21] = '\0';
      var_9[0x22] = '\0';
      var_9[0x23] = '\0';
      var_9[0x24] = '\0';
      var_9[0x25] = '\0';
      var_9[0x26] = '\0';
      var_9[0x27] = '\0';
      var_13 = (long)var_16 - (long)var_15 >> 3;
      var_14 = (type_8)var_13;
      var_8 = 0;
      if (0xfffe < var_13) {
        var_8 = var_14 >> 0x18 | (var_14 & 0xff0000) >> 8 | (var_14 & 0xff00) << 8 | var_14 << 0x18;
      }
      var_25 = (var_1<32> *var_12)(var_9 + 0x28);
      *(type_8 *)(var_9 + 0x1c) = var_8;
      if (parameters->options_ == (type_14 *)0x0) {
LAB_0020b78c:
                    /* WARNING: Subroutine does not return */
        var_5("../../gold/parameters.h",0x5c,"options");
      }
      if ((parameters->options_->relocatable_).value == false) {
        if (var_15 == var_16) {
          var_8 = 1;
        }
        else {
          var_8 = 1;
          do {
            pOVar6 = *var_15;
            if (pOVar6->type_ == 1) {
              secnamepool = this->secnamepool_;
              var_19 = &pOVar6->output_lists_[0].
                           super__Vector_base<var_17::Output_data*,var_18::allocator<var_17::Output_data*>var_11>
                           ._M_impl._M_finish;
              layout = this->layout_;
              do {
                var_20 = ((type_15 *)(var_19 + -1))->_M_start;
                var_21 = var_25;
                if (var_20 != *var_19) {
                  do {
                    iVar8 = (*(*var_20)->_vptr_Output_data[6])();
                    var_25 = var_21;
                    if ((char)iVar8 != '\0') {
                      pOVar3 = (type_2 *)*var_20;
                      var_10 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];
                      if (var_10 == type_2::do_out_shndx) {
                        var_14 = pOVar3->out_shndx_;
                        if (var_14 == 0xffffffff) goto LAB_0020b739;
                      }
                      else {
                        var_14 = (*var_10)(pOVar3);
                      }
                      if (var_14 != var_8) {
                    /* WARNING: Subroutine does not return */
                        var_5("../../gold/output.cc",0x1354,
                                            "write_section_headers_list");
                      }
                      var_25 = var_21 + 1;
                      var_8 = var_8 + 1;
                      var_3.p_ = var_21;
                      Output_section::var_22<32,var_23>(pOVar3,layout,secnamepool,&var_3);
                    }
                    var_20 = var_20 + 1;
                    var_21 = var_25;
                  } while (*var_19 != var_20);
                }
                var_19 = var_19 + 3;
              } while ((type_4 *)&pOVar6->paddr_ != var_19);
              pSVar12 = this->segment_list_;
            }
            var_15 = var_15 + 1;
          } while ((pSVar12->
                   super__Vector_base<var_17::type_5*,var_18::allocator<var_17::type_5*>var_11>var_12
                   )._M_impl._M_finish != var_15);
        }
      }
      else {
        pSVar10 = this->section_list_;
        var_8 = 1;
        var_24 = (pSVar10->
                   super__Vector_base<var_17::type_2*var_12,var_18::allocator<var_17::type_2*>var_11>var_12
                   )._M_impl._M_start;
        if (var_24 !=
            (pSVar10->
            super__Vector_base<var_17::type_2*,var_18::allocator<var_17::type_2*>var_11>var_12).
            _M_impl._M_finish) {
          var_21 = var_25;
          do {
            pOVar3 = *var_24;
            if (((pOVar3->flags_ & 2) != 0) || (var_25 = var_21, pOVar3->type_ == 0x11)) {
              var_10 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];
              if (var_10 == type_2::do_out_shndx) {
                var_14 = pOVar3->out_shndx_;
                if (var_14 == 0xffffffff) goto LAB_0020b739;
              }
              else {
                var_14 = (*var_10)();
              }
              if (var_8 != var_14) {
                    /* WARNING: Subroutine does not return */
                var_5("../../gold/output.cc",0x155,"do_sized_write");
              }
              var_25 = var_21 + 1;
              var_8 = var_8 + 1;
              var_3.p_ = var_21;
              Output_section::var_22<32,var_23>
                        (*var_24,this->layout_,this->secnamepool_,&var_3);
              pSVar10 = this->section_list_;
            }
            var_24 = var_24 + 1;
            var_21 = var_25;
          } while ((pSVar10->
                   super__Vector_base<var_17::type_2*,var_18::allocator<var_17::type_2*>var_11>var_12
                   )._M_impl._M_finish != var_24);
        }
      }
      pSVar10 = this->unattached_section_list_;
      var_24 = (pSVar10->
                 super__Vector_base<var_17::type_2*var_12,var_18::allocator<var_17::type_2*>var_11>var_12).
                 _M_impl._M_start;
      if (var_24 !=
          (pSVar10->
          super__Vector_base<var_17::type_2*,var_18::allocator<var_17::type_2*>var_11>var_12)._M_impl
          ._M_finish) {
        do {
          pOVar3 = *var_24;
          if (pOVar3->type_ == 0x11) {
            if (parameters->options_ == (type_14 *)0x0) goto LAB_0020b78c;
            if ((parameters->options_->relocatable_).value == false) goto LAB_0020b690;
          }
          else {
LAB_0020b690:
            var_10 = (pOVar3->super_Output_data)._vptr_Output_data[0xb];
            if (var_10 == type_2::do_out_shndx) {
              var_14 = pOVar3->out_shndx_;
              if (var_14 == 0xffffffff) goto LAB_0020b739;
            }
            else {
              var_14 = (*var_10)();
            }
            if (var_14 != var_8) {
                    /* WARNING: Subroutine does not return */
              var_5("../../gold/output.cc",0x167,"do_sized_write");
            }
            var_8 = var_8 + 1;
            var_3.p_ = var_25;
            Output_section::var_22<32,var_23>
                      (*var_24,this->layout_,this->secnamepool_,&var_3);
            pSVar10 = this->unattached_section_list_;
            var_25 = var_25 + 1;
          }
          var_24 = var_24 + 1;
        } while ((pSVar10->
                 super__Vector_base<var_17::type_2*,var_18::allocator<var_17::type_2*>var_11>var_12).
                 _M_impl._M_finish != var_24);
      }
      if (((this->super_Output_data).field_0x20 & 4) != 0) {
        return;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  var_5("../../gold/output.h",0xe3,"offset");
}


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

void MASKED(long param_1,long param_2)

{
  long lVar1;
  long lVar2;
  code *pcVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  long *plVar6;
  char cVar7;
  uint uVar8;
  int iVar9;
  ulong uVar10;
  long *plVar11;
  long *plVar12;
  uint uVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  int iVar16;
  long *local_50;
  undefined8 *local_40 [2];
  
  if ((*(byte *)(param_1 + 0x20) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/output.h",0xcf,"data_size");
  }
  lVar1 = *(long *)(param_1 + 0x10);
  if ((*(byte *)(param_1 + 0x20) & 4) != 0) {
    lVar2 = *(long *)(param_1 + 0x18);
    if ((lVar2 < 0) || (*(long *)(param_2 + 0x10) < lVar2 + lVar1)) {
      FUN_001f4570();
    }
    else {
      puVar14 = (undefined8 *)(lVar2 + *(long *)(param_2 + 0x18));
      plVar12 = *(long **)(param_1 + 0x50);
      *puVar14 = 0;
      puVar14[1] = 0;
      *(undefined4 *)(puVar14 + 2) = 0;
      uVar10 = lVar1 / 0x28;
      uVar8 = (uint)uVar10;
      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      if (uVar10 < 0xff00) {
        uVar8 = 0;
      }
      *(uint *)((long)puVar14 + 0x14) = uVar8;
      pcVar3 = *(code **)(*plVar12 + 0x58);
      if (pcVar3 == FUN_001869e0) {
        uVar8 = *(uint *)((long)plVar12 + 0x7c);
        if (uVar8 == 0xffffffff) {
LAB_0020b739:
                    /* WARNING: Subroutine does not return */
          FUN_0017c650("../../gold/output.h",0x1043,"do_out_shndx");
        }
      }
      else {
        uVar8 = (*pcVar3)();
      }
      uVar13 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      if (uVar8 < 0xff00) {
        uVar13 = 0;
      }
      *(uint *)(puVar14 + 3) = uVar13;
      plVar11 = *(long **)(param_1 + 0x30);
      plVar12 = (long *)plVar11[1];
      local_50 = (long *)*plVar11;
      puVar14[4] = 0;
      uVar10 = (long)plVar12 - (long)local_50 >> 3;
      uVar13 = (uint)uVar10;
      uVar8 = 0;
      if (0xfffe < uVar10) {
        uVar8 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18;
      }
      puVar15 = puVar14 + 5;
      *(uint *)((long)puVar14 + 0x1c) = uVar8;
      if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
LAB_0020b78c:
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/parameters.h",0x5c,"options");
      }
      if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') {
        if (local_50 == plVar12) {
          iVar16 = 1;
        }
        else {
          iVar16 = 1;
          do {
            lVar1 = *local_50;
            if (*(int *)(lVar1 + 0x2f0) == 1) {
              uVar4 = *(undefined8 *)(param_1 + 0x48);
              plVar12 = (long *)(lVar1 + 8);
              uVar5 = *(undefined8 *)(param_1 + 0x28);
              do {
                plVar11 = (long *)plVar12[-1];
                puVar14 = puVar15;
                if (plVar11 != (long *)*plVar12) {
                  do {
                    cVar7 = (**(code **)(*(long *)*plVar11 + 0x30))();
                    puVar15 = puVar14;
                    if (cVar7 != '\0') {
                      plVar6 = (long *)*plVar11;
                      if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {
                        iVar9 = *(int *)((long)plVar6 + 0x7c);
                        if (iVar9 == -1) goto LAB_0020b739;
                      }
                      else {
                        iVar9 = (**(code **)(*plVar6 + 0x58))(plVar6);
                      }
                      if (iVar9 != iVar16) {
                    /* WARNING: Subroutine does not return */
                        FUN_0017c650("../../gold/output.cc",0x1354,"write_section_headers_list");
                      }
                      puVar15 = puVar14 + 5;
                      iVar16 = iVar16 + 1;
                      local_40[0] = puVar14;
                      FUN_0020b160(plVar6,uVar5,uVar4,local_40);
                    }
                    plVar11 = plVar11 + 1;
                    puVar14 = puVar15;
                  } while ((long *)*plVar12 != plVar11);
                }
                plVar12 = plVar12 + 3;
              } while ((long *)(lVar1 + 0x2c0) != plVar12);
              plVar11 = *(long **)(param_1 + 0x30);
            }
            local_50 = local_50 + 1;
          } while ((long *)plVar11[1] != local_50);
        }
      }
      else {
        plVar11 = *(long **)(param_1 + 0x38);
        iVar16 = 1;
        plVar12 = (long *)*plVar11;
        if (plVar12 != (long *)plVar11[1]) {
          puVar14 = puVar15;
          do {
            plVar6 = (long *)*plVar12;
            if (((*(byte *)(plVar6 + 0xe) & 2) != 0) ||
               (puVar15 = puVar14, *(int *)((long)plVar6 + 0x6c) == 0x11)) {
              if (*(code **)(*plVar6 + 0x58) == FUN_001869e0) {
                iVar9 = *(int *)((long)plVar6 + 0x7c);
                if (iVar9 == -1) goto LAB_0020b739;
              }
              else {
                iVar9 = (**(code **)(*plVar6 + 0x58))();
              }
              if (iVar16 != iVar9) {
                    /* WARNING: Subroutine does not return */
                FUN_0017c650("../../gold/output.cc",0x155,"do_sized_write");
              }
              puVar15 = puVar14 + 5;
              iVar16 = iVar16 + 1;
              local_40[0] = puVar14;
              FUN_0020b160(*plVar12,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),
                           local_40);
              plVar11 = *(long **)(param_1 + 0x38);
            }
            plVar12 = plVar12 + 1;
            puVar14 = puVar15;
          } while ((long *)plVar11[1] != plVar12);
        }
      }
      plVar12 = *(long **)(param_1 + 0x40);
      puVar14 = (undefined8 *)*plVar12;
      if (puVar14 != (undefined8 *)plVar12[1]) {
        do {
          plVar11 = (long *)*puVar14;
          if (*(int *)((long)plVar11 + 0x6c) == 0x11) {
            if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) goto LAB_0020b78c;
            if (*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x5051) == '\0') goto LAB_0020b690;
          }
          else {
LAB_0020b690:
            if (*(code **)(*plVar11 + 0x58) == FUN_001869e0) {
              iVar9 = *(int *)((long)plVar11 + 0x7c);
              if (iVar9 == -1) goto LAB_0020b739;
            }
            else {
              iVar9 = (**(code **)(*plVar11 + 0x58))();
            }
            if (iVar9 != iVar16) {
                    /* WARNING: Subroutine does not return */
              FUN_0017c650("../../gold/output.cc",0x167,"do_sized_write");
            }
            iVar16 = iVar16 + 1;
            local_40[0] = puVar15;
            FUN_0020b160(*puVar14,*(undefined8 *)(param_1 + 0x28),*(undefined8 *)(param_1 + 0x48),
                         local_40);
            plVar12 = *(long **)(param_1 + 0x40);
            puVar15 = puVar15 + 5;
          }
          puVar14 = puVar14 + 1;
        } while ((undefined8 *)plVar12[1] != puVar14);
      }
      if ((*(byte *)(param_1 + 0x20) & 4) != 0) {
        return;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/output.h",0xe3,"offset");
}

