
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void do_write(Output_data_plt_x86_64_ibt<64> * this, Output_file * of)
    */

void __thiscall
anon_unknown.dwarf_353119::Output_data_plt_x86_64_ibt<64>::do_write
          (Output_data_plt_x86_64_ibt<64> *this,Output_file *of)

{
  byte bVar1;
  byte bVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  uchar *puVar6;
  Elf_Addr plt_address;
  Elf_Addr got_base;
  bool bVar7;
  long lVar8;
  long lVar9;
  char *format;
  uint uVar10;
  Output_file *in_RCX;
  int iVar11;
  size_t in_RDX;
  uchar *puVar12;
  long lVar13;
  uint uVar14;
  uchar *puVar15;
  Output_file *start;
  Output_data_plt_x86_64_ibt<64> *pOVar16;
  long *plVar17;
  Elf_Addr got_address;
  uint uVar18;
  uchar *puVar19;
  uchar *pov;
  undefined8 uVar20;
  undefined8 uVar21;
  long *local_60;
  
  if ((this->field_0x20 & 4) == 0) {
LAB_0016e316:
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");
  }
  lVar13 = *(long *)&this->field_0x18;
  if ((this->field_0x20 & 2) == 0) goto LAB_0016e2e1;
  lVar3 = *(long *)&this->field_0x10;
  start = of;
  pOVar16 = this;
  if ((-1 < lVar13) && (lVar3 + lVar13 <= of->file_size_)) {
    lVar9 = *(long *)&this->field_0x58;
    pov = of->base_ + lVar13;
    lVar13 = *(long *)&this->field_0x60;
    lVar4 = *(long *)&this->field_0x50;
    if ((*(byte *)(lVar9 + 0x20) & 4) == 0) goto LAB_0016e316;
    lVar5 = *(long *)(lVar9 + 0x18);
    pOVar16 = (Output_data_plt_x86_64_ibt<64> *)gold::parameters;
    bVar7 = gold::Parameters::incremental_update(gold::parameters);
    bVar1 = *(byte *)(lVar9 + 0x20);
    in_RDX = (size_t)bVar1;
    if (bVar7) {
      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;
      lVar8 = *(long *)(lVar9 + 0x10);
      bVar2 = *(byte *)(lVar13 + 0x20);
    }
    else {
      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;
      lVar8 = *(long *)(lVar9 + 0x10);
      bVar2 = *(byte *)(lVar13 + 0x20);
      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);
      if ((bVar2 & 4) == 0) goto LAB_0016e316;
      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {
                    /* WARNING: Subroutine does not return */
        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");
      }
    }
    start = (Output_file *)(ulong)(bVar2 & 2);
    if ((bVar2 & 2) == 0) {
LAB_0016e2e1:
                    /* WARNING: Subroutine does not return */
      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
    }
    lVar8 = lVar8 + *(long *)(lVar13 + 0x10);
    if ((-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_)) {
      puVar6 = of->base_;
      if ((((this->field_0x20 & 1) != 0) &&
          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&
         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {
        got_address = *(Elf_Addr *)(lVar9 + 8);
        pOVar16 = this;
        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry
                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);
        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;
        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;
        puVar15 = pov + 0x10;
        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;
        local_60 = (long *)(puVar6 + lVar5 + 0x18);
        if (uVar14 == 0) {
          if (*(uint *)&this->field_0x70 == 0xffffffff) {
            lVar13 = 0x10;
          }
          else {
            lVar13 = 0x20;
            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry
                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,
                       got_base,*(uint *)&this->field_0x70,0x10);
          }
        }
        else {
          puVar12 = puVar15;
          plVar17 = local_60;
          uVar18 = 0;
          do {
            *(undefined8 *)puVar12 = uVar20;
            *(undefined8 *)(puVar12 + 8) = uVar21;
            puVar12[6] = (uchar)(uVar18 >> 8);
            puVar12[8] = (uchar)(uVar18 >> 0x18);
            puVar12[5] = (uchar)uVar18;
            uVar10 = uVar18 + 1;
            puVar12[7] = (uchar)(uVar18 >> 0x10);
            iVar11 = (int)puVar12;
            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;
            puVar12 = puVar12 + 0x10;
            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;
            plVar17 = plVar17 + 1;
            uVar18 = uVar10;
          } while (uVar10 != uVar14);
          lVar13 = (ulong)(uVar14 - 1) + 1;
          uVar18 = (uVar14 + 1) * 0x10;
          puVar15 = puVar15 + lVar13 * 0x10;
          local_60 = local_60 + lVar13;
          puVar12 = puVar15;
          if (*(uint *)&this->field_0x70 != 0xffffffff) {
            puVar12 = puVar15 + 0x10;
            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry
                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,
                       *(uint *)&this->field_0x70,uVar18);
          }
          uVar10 = 0;
          puVar15 = puVar12;
          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;
          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;
          do {
            iVar11 = uVar10 * 8;
            uVar10 = uVar10 + 1;
            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -
                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);
            lVar13 = lVar9 + -0xb;
            if (0xffffffff < lVar9 + 0x7ffffff5U) {
              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");
              gold::gold_error(format,(ulong)uVar10);
              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;
              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;
            }
            *(undefined8 *)puVar15 = uVar20;
            *(undefined8 *)(puVar15 + 8) = uVar21;
            puVar19 = puVar15 + 0x10;
            puVar15[7] = (uchar)lVar13;
            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);
            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);
            puVar15[8] = (uchar)((ulong)lVar13 >> 8);
            puVar15 = puVar19;
          } while (uVar10 < uVar14);
          lVar13 = (long)puVar19 - (long)pov;
        }
        if (lVar3 == lVar13) {
          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {
            return;
          }
                    /* WARNING: Subroutine does not return */
          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");
        }
                    /* WARNING: Subroutine does not return */
        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");
      }
      goto LAB_0016e2fe;
    }
  }
  gold::Output_file::get_output_view((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX);
LAB_0016e2fe:
                    /* WARNING: Subroutine does not return */
  gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulong FUN_0016df70(long param_1,long param_2)

{
  byte bVar1;
  byte bVar2;
  long lVar3;
  long lVar4;
  int iVar5;
  undefined8 uVar6;
  char cVar7;
  long lVar8;
  undefined8 uVar9;
  uint uVar10;
  undefined8 *puVar11;
  long lVar12;
  uint uVar13;
  long *plVar14;
  long lVar15;
  int iVar16;
  undefined8 *puVar17;
  undefined8 *puVar18;
  long lVar19;
  long lVar20;
  uint uVar21;
  undefined8 uVar22;
  ulong uVar23;
  long *local_60;
  
  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {
LAB_0016e316:
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/output.h",0xe3,"offset");
  }
  lVar19 = *(long *)(param_1 + 0x18);
  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;
  lVar3 = *(long *)(param_1 + 0x10);
  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {
    lVar15 = *(long *)(param_1 + 0x58);
    lVar19 = lVar19 + *(long *)(param_2 + 0x18);
    lVar12 = *(long *)(param_1 + 0x60);
    lVar4 = *(long *)(param_1 + 0x50);
    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;
    lVar20 = *(long *)(lVar15 + 0x18);
    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);
    bVar1 = *(byte *)(lVar15 + 0x20);
    if (cVar7 == '\0') {
      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;
      lVar8 = *(long *)(lVar15 + 0x10);
      bVar2 = *(byte *)(lVar12 + 0x20);
      if ((bVar2 & 4) == 0) goto LAB_0016e316;
      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {
                    /* WARNING: Subroutine does not return */
        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");
      }
    }
    else {
      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;
      lVar8 = *(long *)(lVar15 + 0x10);
      bVar2 = *(byte *)(lVar12 + 0x20);
    }
    if ((bVar2 & 2) == 0) {
LAB_0016e2e1:
                    /* WARNING: Subroutine does not return */
      FUN_00199900("../../gold/output.h",0xcf,"data_size");
    }
    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);
    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {
      lVar20 = lVar20 + *(long *)(param_2 + 0x18);
      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&
          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&
         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {
        lVar15 = *(long *)(lVar15 + 8);
        FUN_0016bb10(param_1,lVar19,lVar15);
        uVar6 = _UNK_0033ed28;
        uVar22 = _DAT_0033ed20;
        puVar18 = (undefined8 *)(lVar19 + 0x10);
        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);
        local_60 = (long *)(lVar20 + 0x18);
        if (uVar13 == 0) {
          if (*(int *)(param_1 + 0x70) == -1) {
            lVar19 = 0x10;
          }
          else {
            uVar23 = 0x10;
            lVar19 = 0x20;
            FUN_0016bb50();
          }
        }
        else {
          puVar11 = puVar18;
          plVar14 = local_60;
          uVar21 = 0;
          do {
            *puVar11 = uVar22;
            puVar11[1] = uVar6;
            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);
            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);
            *(char *)((long)puVar11 + 5) = (char)uVar21;
            uVar10 = uVar21 + 1;
            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);
            iVar16 = (int)puVar11;
            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;
            puVar11 = puVar11 + 2;
            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;
            plVar14 = plVar14 + 1;
            uVar21 = uVar10;
          } while (uVar10 != uVar13);
          lVar12 = (ulong)(uVar13 - 1) + 1;
          iVar16 = (uVar13 + 1) * 0x10;
          puVar18 = puVar18 + lVar12 * 2;
          local_60 = local_60 + lVar12;
          puVar11 = puVar18;
          if (*(int *)(param_1 + 0x70) != -1) {
            puVar11 = puVar18 + 2;
            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);
          }
          lVar15 = lVar15 - uVar23;
          uVar21 = 0;
          puVar18 = puVar11;
          uVar9 = _DAT_0033ed00;
          uVar22 = _UNK_0033ed08;
          do {
            iVar5 = uVar21 * 8;
            uVar21 = uVar21 + 1;
            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -
                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);
            uVar23 = lVar12 - 0xb;
            if (0xffffffff < lVar12 + 0x7ffffff5U) {
              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");
              FUN_00191870(uVar9,uVar21);
              uVar9 = _DAT_0033ed00;
              uVar22 = _UNK_0033ed08;
            }
            *puVar18 = uVar9;
            puVar18[1] = uVar22;
            puVar17 = puVar18 + 2;
            *(char *)((long)puVar18 + 7) = (char)uVar23;
            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);
            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);
            uVar23 = uVar23 >> 8 & 0xffffff;
            *(char *)(puVar18 + 1) = (char)uVar23;
            puVar18 = puVar17;
          } while (uVar21 < uVar13);
          lVar19 = (long)puVar17 - lVar19;
        }
        if (lVar3 == lVar19) {
          if (lVar8 == (long)local_60 - lVar20) {
            return uVar23;
          }
                    /* WARNING: Subroutine does not return */
          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");
        }
                    /* WARNING: Subroutine does not return */
        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");
      }
      goto LAB_0016e2fe;
    }
  }
  FUN_0016cec0();
LAB_0016e2fe:
                    /* WARNING: Subroutine does not return */
  FUN_00199900("../../gold/output.h",0xc5,"address");
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
MOVZX EAX,byte ptr [RDI + 0x20]
TEST AL,0x4
JZ 0x0016e316
MOV R12,RDI
MOV R13,qword ptr [RDI + 0x18]
TEST AL,0x2
JZ 0x0016e2e1
MOV RAX,qword ptr [RDI + 0x10]
MOV qword ptr [RSP + 0x20],RAX
TEST R13,R13
JS 0x0016e2f9
MOV RAX,qword ptr [RSP + 0x20]
MOV RBP,RSI
ADD RAX,R13
CMP qword ptr [RSI + 0x10],RAX
JL 0x0016e2f9
MOV RBX,qword ptr [RDI + 0x58]
ADD R13,qword ptr [RSI + 0x18]
MOV qword ptr [RSP + 0x30],R13
MOV R15,qword ptr [RDI + 0x60]
MOV R13,qword ptr [RDI + 0x50]
TEST byte ptr [RBX + 0x20],0x4
JZ 0x0016e316
MOV RDI,qword ptr [0x003f85c0]
MOV R14,qword ptr [RBX + 0x18]
CALL 0x0021a540
MOVZX EDX,byte ptr [RBX + 0x20]
TEST AL,AL
JZ 0x0016e230
TEST DL,0x2
JZ 0x0016e2e1
MOV RAX,qword ptr [RBX + 0x10]
MOVZX ESI,byte ptr [R15 + 0x20]
AND ESI,0x2
JZ 0x0016e2e1
ADD RAX,qword ptr [R15 + 0x10]
MOV qword ptr [RSP + 0x38],RAX
TEST R14,R14
JS 0x0016e2f9
ADD RAX,R14
CMP RAX,qword ptr [RBP + 0x10]
JG 0x0016e2f9
ADD R14,qword ptr [RBP + 0x18]
MOV qword ptr [RSP + 0x28],R14
TEST byte ptr [R12 + 0x20],0x1
JZ 0x0016e2fe
MOV RAX,qword ptr [R12 + 0x8]
TEST byte ptr [R13 + 0x20],0x1
JZ 0x0016e2fe
MOV RSI,qword ptr [R13 + 0x8]
AND EDX,0x1
MOV R15,RSI
JZ 0x0016e2fe
MOV R10,qword ptr [RBX + 0x8]
MOV RBX,qword ptr [RSP + 0x30]
MOV RCX,RAX
MOV RDI,R12
MOV qword ptr [RSP + 0x8],RAX
MOV RSI,RBX
MOV RDX,R10
CALL 0x0016bb10
MOV RAX,qword ptr [RSP + 0x28]
LEA RSI,[RBX + 0x10]
MOV EBX,dword ptr [R12 + 0x6c]
ADD EBX,dword ptr [R12 + 0x68]
LEA R8,[RAX + 0x18]
MOV RAX,qword ptr [RSP + 0x8]
MOV qword ptr [RSP + 0x18],R8
JZ 0x0016e2b0
MOV R9D,0x10
MOV RDX,RSI
XOR ECX,ECX
MOV R14,RAX
MOVDQA XMM0,xmmword ptr [0x0033ed20]
LEA R11D,[RSI + -0x1f]
SUB R9D,ESI
NOP dword ptr [RAX]
MOV EDI,ECX
MOVUPS xmmword ptr [RDX],XMM0
ADD R8,0x8
SHR EDI,0x18
MOV byte ptr [RDX + 0x6],CH
MOV byte ptr [RDX + 0x8],DIL
MOV EDI,ECX
SHR EDI,0x10
MOV byte ptr [RDX + 0x5],CL
ADD ECX,0x1
MOV byte ptr [RDX + 0x7],DIL
MOV EDI,R11D
SUB EDI,EDX
MOV dword ptr [RDX + 0xb],EDI
LEA EDI,[R9 + RDX*0x1]
ADD RDX,0x10
ADD RDI,R14
MOV qword ptr [R8 + -0x8],RDI
CMP ECX,EBX
JNZ 0x0016e0d0
LEA EDX,[RBX + -0x1]
LEA R11D,[RBX + 0x1]
MOV R9D,dword ptr [R12 + 0x70]
MOV RAX,R14
ADD RDX,0x1
SHL R11D,0x4
MOV RBP,RDX
MOV R14D,R11D
SHL RBP,0x4
ADD RBP,RSI
MOV RSI,qword ptr [RSP + 0x18]
LEA RSI,[RSI + RDX*0x8]
MOV qword ptr [RSP + 0x18],RSI
CMP R9D,-0x1
JZ 0x0016e16f
SUB RSP,0x8
MOV RCX,RAX
MOV RSI,RBP
MOV R8,R15
PUSH R11
MOV RDX,R10
MOV RDI,R12
ADD RBP,0x10
MOV qword ptr [RSP + 0x18],RAX
CALL 0x0016bb50
POP RCX
POP RSI
MOV RAX,qword ptr [RSP + 0x8]
SUB R10,RAX
MOV R12,RBP
XOR R15D,R15D
MOV R13D,0xffffffff
MOVDQA XMM0,xmmword ptr [0x0033ed00]
JMP 0x0016e1c5
MOV EAX,EDX
MOVUPS xmmword ptr [R12],XMM0
ADD R12,0x10
SHR EAX,0x18
MOV byte ptr [R12 + -0x9],DL
MOV byte ptr [R12 + -0x6],AL
MOV EAX,EDX
SHR EAX,0x10
MOV byte ptr [R12 + -0x7],AL
MOV EAX,EDX
SHR EAX,0x8
MOV byte ptr [R12 + -0x8],AL
CMP EBX,R15D
JBE 0x0016e278
MOV EDX,R14D
LEA EAX,[0x18 + R15*0x8]
ADD R15D,0x1
SUB EDX,EBP
ADD RAX,R10
ADD EDX,R12D
SUB RAX,RDX
LEA RDX,[RAX + -0xb]
ADD RAX,0x7ffffff5
CMP RAX,R13
JBE 0x0016e190
LEA RDI,[0x33b3e8]
MOV qword ptr [RSP + 0x10],R10
MOV qword ptr [RSP + 0x8],RDX
CALL 0x00144320
MOV ESI,R15D
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00191870
MOV R10,qword ptr [RSP + 0x10]
MOV RDX,qword ptr [RSP + 0x8]
MOVDQA XMM0,xmmword ptr [0x0033ed00]
JMP 0x0016e190
TEST DL,0x2
JZ 0x0016e2e1
MOV RAX,qword ptr [RBX + 0x10]
MOVZX ESI,byte ptr [R15 + 0x20]
LEA RDI,[R14 + RAX*0x1]
TEST SIL,0x4
JZ 0x0016e316
CMP RDI,qword ptr [R15 + 0x18]
JZ 0x0016e00d
LEA RDX,[0x33d558]
MOV ESI,0xac2
LEA RDI,[0x33b18e]
CALL 0x00199900
SUB R12,qword ptr [RSP + 0x30]
CMP qword ptr [RSP + 0x20],R12
JNZ 0x0016e346
MOV R15,qword ptr [RSP + 0x18]
SUB R15,qword ptr [RSP + 0x28]
CMP qword ptr [RSP + 0x38],R15
JNZ 0x0016e32e
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R9D,dword ptr [R12 + 0x70]
CMP R9D,-0x1
JNZ 0x0016e2c3
MOV R12D,0x10
JMP 0x0016e27d
SUB RSP,0x8
MOV RCX,RAX
MOV RDX,R10
MOV R8,R15
PUSH 0x10
MOV R12D,0x20
CALL 0x0016bb50
POP RAX
POP RDX
JMP 0x0016e27d
LEA RDX,[0x33e3a0]
MOV ESI,0xcf
LEA RDI,[0x338384]
CALL 0x00199900
CALL 0x0016cec0
LEA RDX,[0x33e4c8]
MOV ESI,0xc5
LEA RDI,[0x338384]
CALL 0x00199900
LEA RDX,[0x33e3aa]
MOV ESI,0xe3
LEA RDI,[0x338384]
CALL 0x00199900
LEA RDX,[0x33d558]
MOV ESI,0xb09
LEA RDI,[0x33b18e]
CALL 0x00199900
LEA RDX,[0x33d558]
MOV ESI,0xb08
LEA RDI,[0x33b18e]
CALL 0x00199900
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nulong FUN_0016df70(long param_1,long param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  undefined8 uVar6;\n  char cVar7;\n  long lVar8;\n  undefined8 uVar9;\n  uint uVar10;\n  undefined8 *puVar11;\n  long lVar12;\n  uint uVar13;\n  long *plVar14;\n  long lVar15;\n  int iVar16;\n  undefined8 *puVar17;\n  undefined8 *puVar18;\n  long lVar19;\n  long lVar20;\n  uint uVar21;\n  undefined8 uVar22;\n  ulong uVar23;\n  long *local_60;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }\n  lVar19 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)(param_1 + 0x10);\n  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  FUN_0016cec0();\nLAB_0016e2fe:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/output.h",0xc5,"address");\n}\n\n" comment (function_definition "ulong FUN_0016df70(long param_1,long param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  undefined8 uVar6;\n  char cVar7;\n  long lVar8;\n  undefined8 uVar9;\n  uint uVar10;\n  undefined8 *puVar11;\n  long lVar12;\n  uint uVar13;\n  long *plVar14;\n  long lVar15;\n  int iVar16;\n  undefined8 *puVar17;\n  undefined8 *puVar18;\n  long lVar19;\n  long lVar20;\n  uint uVar21;\n  undefined8 uVar22;\n  ulong uVar23;\n  long *local_60;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }\n  lVar19 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)(param_1 + 0x10);\n  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  FUN_0016cec0();\nLAB_0016e2fe:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/output.h",0xc5,"address");\n}" type_identifier (function_declarator "FUN_0016df70(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  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  undefined8 uVar6;\n  char cVar7;\n  long lVar8;\n  undefined8 uVar9;\n  uint uVar10;\n  undefined8 *puVar11;\n  long lVar12;\n  uint uVar13;\n  long *plVar14;\n  long lVar15;\n  int iVar16;\n  undefined8 *puVar17;\n  undefined8 *puVar18;\n  long lVar19;\n  long lVar20;\n  uint uVar21;\n  undefined8 uVar22;\n  ulong uVar23;\n  long *local_60;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }\n  lVar19 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)(param_1 + 0x10);\n  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  FUN_0016cec0();\nLAB_0016e2fe:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/output.h",0xc5,"address");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined8 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "long *plVar14;" (sized_type_specifier "long" long) (pointer_declarator "*plVar14" * identifier) ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined8 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined8 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "long lVar19;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "undefined8 uVar22;" type_identifier identifier ;) (declaration "ulong uVar23;" type_identifier identifier ;) (declaration "long *local_60;" (sized_type_specifier "long" long) (pointer_declarator "*local_60" * identifier) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xe3,"offset");\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 "{\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }" { (labeled_statement "LAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/output.h",0xe3,"offset");" statement_identifier : comment (expression_statement "FUN_00199900("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_00199900("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (expression_statement "lVar19 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar19 = *(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 ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;" 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) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar3 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar3 = *(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 ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }" if (parenthesized_expression "((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10)))" ( (binary_expression "(-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar19)" ( (binary_expression "-1 < lVar19" number_literal < identifier) )) && (parenthesized_expression "(lVar3 + lVar19 <= *(long *)(param_2 + 0x10))" ( (binary_expression "lVar3 + lVar19 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar3 + lVar19" identifier + identifier) <= (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) ))))) ))) )) (compound_statement "{\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }" { (expression_statement "lVar15 = *(long *)(param_1 + 0x58);" (assignment_expression "lVar15 = *(long *)(param_1 + 0x58)" identifier = (pointer_expression "*(long *)(param_1 + 0x58)" * (cast_expression "(long *)(param_1 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "lVar19 = lVar19 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar19 = lVar19 + *(long *)(param_2 + 0x18)" identifier = (binary_expression "lVar19 + *(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 "lVar12 = *(long *)(param_1 + 0x60);" (assignment_expression "lVar12 = *(long *)(param_1 + 0x60)" identifier = (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x50);" (assignment_expression "lVar4 = *(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 "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;" if (parenthesized_expression "((*(byte *)(lVar15 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(lVar15 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(lVar15 + 0x20) & 4)" ( (binary_expression "*(byte *)(lVar15 + 0x20) & 4" (pointer_expression "*(byte *)(lVar15 + 0x20)" * (cast_expression "(byte *)(lVar15 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x20)" ( (binary_expression "lVar15 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e316;" goto statement_identifier ;)) (expression_statement "lVar20 = *(long *)(lVar15 + 0x18);" (assignment_expression "lVar20 = *(long *)(lVar15 + 0x18)" identifier = (pointer_expression "*(long *)(lVar15 + 0x18)" * (cast_expression "(long *)(lVar15 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x18)" ( (binary_expression "lVar15 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "cVar7 = FUN_0021a540(PTR_DAT_003f85c0);" (assignment_expression "cVar7 = FUN_0021a540(PTR_DAT_003f85c0)" identifier = (call_expression "FUN_0021a540(PTR_DAT_003f85c0)" identifier (argument_list "(PTR_DAT_003f85c0)" ( identifier )))) ;) (expression_statement "bVar1 = *(byte *)(lVar15 + 0x20);" (assignment_expression "bVar1 = *(byte *)(lVar15 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar15 + 0x20)" * (cast_expression "(byte *)(lVar15 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x20)" ( (binary_expression "lVar15 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }" { (if_statement "if ((bVar1 & 2) == 0) goto LAB_0016e2e1;" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar8 = *(long *)(lVar15 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar15 + 0x10)" identifier = (pointer_expression "*(long *)(lVar15 + 0x10)" * (cast_expression "(long *)(lVar15 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x10)" ( (binary_expression "lVar15 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *(byte *)(lVar12 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar12 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar12 + 0x20)" * (cast_expression "(byte *)(lVar12 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x20)" ( (binary_expression "lVar12 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((bVar2 & 4) == 0) goto LAB_0016e316;" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e316;" goto statement_identifier ;)) (if_statement "if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }" if (parenthesized_expression "(lVar20 + lVar8 != *(long *)(lVar12 + 0x18))" ( (binary_expression "lVar20 + lVar8 != *(long *)(lVar12 + 0x18)" (binary_expression "lVar20 + lVar8" identifier + identifier) != (pointer_expression "*(long *)(lVar12 + 0x18)" * (cast_expression "(long *)(lVar12 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x18)" ( (binary_expression "lVar12 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }" { comment (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xac2,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) }) (else_clause "else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" else (compound_statement "{\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" { (if_statement "if ((bVar1 & 2) == 0) goto LAB_0016e2e1;" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar8 = *(long *)(lVar15 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar15 + 0x10)" identifier = (pointer_expression "*(long *)(lVar15 + 0x10)" * (cast_expression "(long *)(lVar15 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x10)" ( (binary_expression "lVar15 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *(byte *)(lVar12 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar12 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar12 + 0x20)" * (cast_expression "(byte *)(lVar12 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x20)" ( (binary_expression "lVar12 + 0x20" identifier + number_literal) ))))) ;) }))) (if_statement "if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((bVar2 & 2) == 0)" ( (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }" { (labeled_statement "LAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      FUN_00199900("../../gold/output.h",0xcf,"data_size");" statement_identifier : comment (expression_statement "FUN_00199900("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_00199900("../../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 "lVar8 = lVar8 + *(long *)(lVar12 + 0x10);" (assignment_expression "lVar8 = lVar8 + *(long *)(lVar12 + 0x10)" identifier = (binary_expression "lVar8 + *(long *)(lVar12 + 0x10)" identifier + (pointer_expression "*(long *)(lVar12 + 0x10)" * (cast_expression "(long *)(lVar12 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x10)" ( (binary_expression "lVar12 + 0x10" identifier + number_literal) )))))) ;) (if_statement "if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }" if (parenthesized_expression "((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10)))" ( (binary_expression "(-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar20)" ( (binary_expression "-1 < lVar20" number_literal < identifier) )) && (parenthesized_expression "(lVar8 + lVar20 <= *(long *)(param_2 + 0x10))" ( (binary_expression "lVar8 + lVar20 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar8 + lVar20" identifier + identifier) <= (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) ))))) ))) )) (compound_statement "{\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }" { (expression_statement "lVar20 = lVar20 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar20 = lVar20 + *(long *)(param_2 + 0x18)" identifier = (binary_expression "lVar20 + *(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) )))))) ;) (if_statement "if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }" if (parenthesized_expression "((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0))" ( (binary_expression "(((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)" (parenthesized_expression "(((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0))" ( (binary_expression "((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 1" (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) )) && (parenthesized_expression "(uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)" ( (comma_expression "uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0" (assignment_expression "uVar23 = *(ulong *)(param_1 + 8)" identifier = (pointer_expression "*(ulong *)(param_1 + 8)" * (cast_expression "(ulong *)(param_1 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) , (binary_expression "(*(byte *)(lVar4 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar4 + 0x20) & 1" (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)" ( (comma_expression "uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0" (assignment_expression "uVar9 = *(undefined8 *)(lVar4 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar4 + 8)" * (cast_expression "(undefined8 *)(lVar4 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) , (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }" { (expression_statement "lVar15 = *(long *)(lVar15 + 8);" (assignment_expression "lVar15 = *(long *)(lVar15 + 8)" identifier = (pointer_expression "*(long *)(lVar15 + 8)" * (cast_expression "(long *)(lVar15 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 8)" ( (binary_expression "lVar15 + 8" identifier + number_literal) ))))) ;) (expression_statement "FUN_0016bb10(param_1,lVar19,lVar15);" (call_expression "FUN_0016bb10(param_1,lVar19,lVar15)" identifier (argument_list "(param_1,lVar19,lVar15)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar6 = _UNK_0033ed28;" (assignment_expression "uVar6 = _UNK_0033ed28" identifier = identifier) ;) (expression_statement "uVar22 = _DAT_0033ed20;" (assignment_expression "uVar22 = _DAT_0033ed20" identifier = identifier) ;) (expression_statement "puVar18 = (undefined8 *)(lVar19 + 0x10);" (assignment_expression "puVar18 = (undefined8 *)(lVar19 + 0x10)" identifier = (cast_expression "(undefined8 *)(lVar19 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar19 + 0x10)" ( (binary_expression "lVar19 + 0x10" identifier + number_literal) )))) ;) (expression_statement "uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);" (assignment_expression "uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68)" identifier = (binary_expression "*(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68)" (pointer_expression "*(int *)(param_1 + 0x6c)" * (cast_expression "(int *)(param_1 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))))) ;) (expression_statement "local_60 = (long *)(lVar20 + 0x18);" (assignment_expression "local_60 = (long *)(lVar20 + 0x18)" identifier = (cast_expression "(long *)(lVar20 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x18)" ( (binary_expression "lVar20 + 0x18" identifier + number_literal) )))) ;) (if_statement "if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }" { (if_statement "if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x70) == -1)" ( (binary_expression "*(int *)(param_1 + 0x70) == -1" (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            lVar19 = 0x10;\n          }" { (expression_statement "lVar19 = 0x10;" (assignment_expression "lVar19 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" else (compound_statement "{\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" { (expression_statement "uVar23 = 0x10;" (assignment_expression "uVar23 = 0x10" identifier = number_literal) ;) (expression_statement "lVar19 = 0x20;" (assignment_expression "lVar19 = 0x20" identifier = number_literal) ;) (expression_statement "FUN_0016bb50();" (call_expression "FUN_0016bb50()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" else (compound_statement "{\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" { (expression_statement "puVar11 = puVar18;" (assignment_expression "puVar11 = puVar18" identifier = identifier) ;) (expression_statement "plVar14 = local_60;" (assignment_expression "plVar14 = local_60" identifier = identifier) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);" do (compound_statement "{\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          }" { (expression_statement "*puVar11 = uVar22;" (assignment_expression "*puVar11 = uVar22" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar11[1] = uVar6;" (assignment_expression "puVar11[1] = uVar6" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);" (assignment_expression "*(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8)" (pointer_expression "*(char *)((long)puVar11 + 6)" * (cast_expression "(char *)((long)puVar11 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 6)" ( (binary_expression "(long)puVar11 + 6" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)(uVar21 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar21 >> 8)" ( (binary_expression "uVar21 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);" (assignment_expression "*(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18)" (pointer_expression "*(char *)(puVar11 + 1)" * (cast_expression "(char *)(puVar11 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 1)" ( (binary_expression "puVar11 + 1" identifier + number_literal) )))) = (cast_expression "(char)(uVar21 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar21 >> 0x18)" ( (binary_expression "uVar21 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((long)puVar11 + 5) = (char)uVar21;" (assignment_expression "*(char *)((long)puVar11 + 5) = (char)uVar21" (pointer_expression "*(char *)((long)puVar11 + 5)" * (cast_expression "(char *)((long)puVar11 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 5)" ( (binary_expression "(long)puVar11 + 5" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar21" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar10 = uVar21 + 1;" (assignment_expression "uVar10 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);" (assignment_expression "*(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10)" (pointer_expression "*(char *)((long)puVar11 + 7)" * (cast_expression "(char *)((long)puVar11 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 7)" ( (binary_expression "(long)puVar11 + 7" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)(uVar21 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar21 >> 0x10)" ( (binary_expression "uVar21 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "iVar16 = (int)puVar11;" (assignment_expression "iVar16 = (int)puVar11" identifier = (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;" (assignment_expression "*(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16" (pointer_expression "*(int *)((long)puVar11 + 0xb)" * (cast_expression "(int *)((long)puVar11 + 0xb)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 0xb)" ( (binary_expression "(long)puVar11 + 0xb" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "((int)puVar18 + -0x1f) - iVar16" (parenthesized_expression "((int)puVar18 + -0x1f)" ( (binary_expression "(int)puVar18 + -0x1f" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier)) ;) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" identifier = (binary_expression "puVar11 + 2" identifier + number_literal)) ;) (expression_statement "*plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;" (assignment_expression "*plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23" (pointer_expression "*plVar14" * identifier) = (binary_expression "(uint)((0x10 - (int)puVar18) + iVar16) + uVar23" (call_expression "(uint)((0x10 - (int)puVar18) + iVar16)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((0x10 - (int)puVar18) + iVar16)" ( (binary_expression "(0x10 - (int)puVar18) + iVar16" (parenthesized_expression "(0x10 - (int)puVar18)" ( (binary_expression "0x10 - (int)puVar18" number_literal - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) + identifier) ))) + identifier)) ;) (expression_statement "plVar14 = plVar14 + 1;" (assignment_expression "plVar14 = plVar14 + 1" identifier = (binary_expression "plVar14 + 1" identifier + number_literal)) ;) (expression_statement "uVar21 = uVar10;" (assignment_expression "uVar21 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(uVar10 != uVar13)" ( (binary_expression "uVar10 != uVar13" identifier != identifier) )) ;) (expression_statement "lVar12 = (ulong)(uVar13 - 1) + 1;" (assignment_expression "lVar12 = (ulong)(uVar13 - 1) + 1" identifier = (binary_expression "(ulong)(uVar13 - 1) + 1" (call_expression "(ulong)(uVar13 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar13 - 1)" ( (binary_expression "uVar13 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "iVar16 = (uVar13 + 1) * 0x10;" (assignment_expression "iVar16 = (uVar13 + 1) * 0x10" identifier = (binary_expression "(uVar13 + 1) * 0x10" (parenthesized_expression "(uVar13 + 1)" ( (binary_expression "uVar13 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "puVar18 = puVar18 + lVar12 * 2;" (assignment_expression "puVar18 = puVar18 + lVar12 * 2" identifier = (binary_expression "puVar18 + lVar12 * 2" identifier + (binary_expression "lVar12 * 2" identifier * number_literal))) ;) (expression_statement "local_60 = local_60 + lVar12;" (assignment_expression "local_60 = local_60 + lVar12" identifier = (binary_expression "local_60 + lVar12" identifier + identifier)) ;) (expression_statement "puVar11 = puVar18;" (assignment_expression "puVar11 = puVar18" identifier = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x70) != -1)" ( (binary_expression "*(int *)(param_1 + 0x70) != -1" (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }" { (expression_statement "puVar11 = puVar18 + 2;" (assignment_expression "puVar11 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);" (call_expression "FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16)" identifier (argument_list "(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16)" ( identifier , identifier , identifier , identifier , identifier , (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) , identifier ))) ;) })) (expression_statement "lVar15 = lVar15 - uVar23;" (assignment_expression "lVar15 = lVar15 - uVar23" identifier = (binary_expression "lVar15 - uVar23" identifier - identifier)) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "puVar18 = puVar11;" (assignment_expression "puVar18 = puVar11" identifier = identifier) ;) (expression_statement "uVar9 = _DAT_0033ed00;" (assignment_expression "uVar9 = _DAT_0033ed00" identifier = identifier) ;) (expression_statement "uVar22 = _UNK_0033ed08;" (assignment_expression "uVar22 = _UNK_0033ed08" identifier = identifier) ;) (do_statement "do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);" do (compound_statement "{\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          }" { (expression_statement "iVar5 = uVar21 * 8;" (assignment_expression "iVar5 = uVar21 * 8" identifier = (binary_expression "uVar21 * 8" identifier * number_literal)) ;) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);" (assignment_expression "lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" identifier = (binary_expression "((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" (parenthesized_expression "((ulong)(iVar5 + 0x18) + lVar15)" ( (binary_expression "(ulong)(iVar5 + 0x18) + lVar15" (call_expression "(ulong)(iVar5 + 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))) + identifier) )) - (call_expression "(ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "((iVar16 - (int)puVar11) + (int)puVar18)" ( (binary_expression "(iVar16 - (int)puVar11) + (int)puVar18" (parenthesized_expression "(iVar16 - (int)puVar11)" ( (binary_expression "iVar16 - (int)puVar11" identifier - (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "uVar23 = lVar12 - 0xb;" (assignment_expression "uVar23 = lVar12 - 0xb" identifier = (binary_expression "lVar12 - 0xb" identifier - number_literal)) ;) (if_statement "if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }" if (parenthesized_expression "(0xffffffff < lVar12 + 0x7ffffff5U)" ( (binary_expression "0xffffffff < lVar12 + 0x7ffffff5U" number_literal < (binary_expression "lVar12 + 0x7ffffff5U" identifier + number_literal)) )) (compound_statement "{\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }" { (expression_statement "uVar9 = gettext("PC-relative offset overflow in APLT entry %d");" (assignment_expression "uVar9 = gettext("PC-relative offset overflow in APLT entry %d")" identifier = (call_expression "gettext("PC-relative offset overflow in APLT entry %d")" identifier (argument_list "("PC-relative offset overflow in APLT entry %d")" ( (string_literal ""PC-relative offset overflow in APLT entry %d"" " string_content ") )))) ;) (expression_statement "FUN_00191870(uVar9,uVar21);" (call_expression "FUN_00191870(uVar9,uVar21)" identifier (argument_list "(uVar9,uVar21)" ( identifier , identifier ))) ;) (expression_statement "uVar9 = _DAT_0033ed00;" (assignment_expression "uVar9 = _DAT_0033ed00" identifier = identifier) ;) (expression_statement "uVar22 = _UNK_0033ed08;" (assignment_expression "uVar22 = _UNK_0033ed08" identifier = identifier) ;) })) (expression_statement "*puVar18 = uVar9;" (assignment_expression "*puVar18 = uVar9" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar18[1] = uVar22;" (assignment_expression "puVar18[1] = uVar22" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar18 + 2;" (assignment_expression "puVar17 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "*(char *)((long)puVar18 + 7) = (char)uVar23;" (assignment_expression "*(char *)((long)puVar18 + 7) = (char)uVar23" (pointer_expression "*(char *)((long)puVar18 + 7)" * (cast_expression "(char *)((long)puVar18 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar18 + 7)" ( (binary_expression "(long)puVar18 + 7" (cast_expression "(long)puVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar23" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);" (assignment_expression "*(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18)" (pointer_expression "*(char *)((long)puVar18 + 10)" * (cast_expression "(char *)((long)puVar18 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar18 + 10)" ( (binary_expression "(long)puVar18 + 10" (cast_expression "(long)puVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)(uVar23 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar23 >> 0x18)" ( (binary_expression "uVar23 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);" (assignment_expression "*(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10)" (pointer_expression "*(char *)((long)puVar18 + 9)" * (cast_expression "(char *)((long)puVar18 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar18 + 9)" ( (binary_expression "(long)puVar18 + 9" (cast_expression "(long)puVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)(uVar23 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar23 >> 0x10)" ( (binary_expression "uVar23 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar23 = uVar23 >> 8 & 0xffffff;" (assignment_expression "uVar23 = uVar23 >> 8 & 0xffffff" identifier = (binary_expression "uVar23 >> 8 & 0xffffff" (binary_expression "uVar23 >> 8" identifier >> number_literal) & number_literal)) ;) (expression_statement "*(char *)(puVar18 + 1) = (char)uVar23;" (assignment_expression "*(char *)(puVar18 + 1) = (char)uVar23" (pointer_expression "*(char *)(puVar18 + 1)" * (cast_expression "(char *)(puVar18 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 1)" ( (binary_expression "puVar18 + 1" identifier + number_literal) )))) = (cast_expression "(char)uVar23" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" identifier = identifier) ;) }) while (parenthesized_expression "(uVar21 < uVar13)" ( (binary_expression "uVar21 < uVar13" identifier < identifier) )) ;) (expression_statement "lVar19 = (long)puVar17 - lVar19;" (assignment_expression "lVar19 = (long)puVar17 - lVar19" identifier = (binary_expression "(long)puVar17 - lVar19" (cast_expression "(long)puVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier)) ;) }))) (if_statement "if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }" if (parenthesized_expression "(lVar3 == lVar19)" ( (binary_expression "lVar3 == lVar19" identifier == identifier) )) (compound_statement "{\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    /* WARNING: Subroutine does not return */\n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }" { (if_statement "if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }" if (parenthesized_expression "(lVar8 == (long)local_60 - lVar20)" ( (binary_expression "lVar8 == (long)local_60 - lVar20" identifier == (binary_expression "(long)local_60 - lVar20" (cast_expression "(long)local_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier)) )) (compound_statement "{\n            return uVar23;\n          }" { (return_statement "return uVar23;" return identifier ;) })) comment (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xb09,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) comment (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xb08,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (goto_statement "goto LAB_0016e2fe;" goto statement_identifier ;) })) })) (expression_statement "FUN_0016cec0();" (call_expression "FUN_0016cec0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0016e2fe:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/output.h",0xc5,"address");" statement_identifier : comment (expression_statement "FUN_00199900("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00199900("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;)) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: void do_write(Output_data_plt_x86_64_ibt<64> * this, Output_file * of)\n    */\n\nvoid __thiscall\nanon_unknown.dwarf_353119::Output_data_plt_x86_64_ibt<64>::do_write\n          (Output_data_plt_x86_64_ibt<64> *this,Output_file *of)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  uchar *puVar6;\n  Elf_Addr plt_address;\n  Elf_Addr got_base;\n  bool bVar7;\n  long lVar8;\n  long lVar9;\n  char *format;\n  uint uVar10;\n  Output_file *in_RCX;\n  int iVar11;\n  size_t in_RDX;\n  uchar *puVar12;\n  long lVar13;\n  uint uVar14;\n  uchar *puVar15;\n  Output_file *start;\n  Output_data_plt_x86_64_ibt<64> *pOVar16;\n  long *plVar17;\n  Elf_Addr got_address;\n  uint uVar18;\n  uchar *puVar19;\n  uchar *pov;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  long *local_60;\n  \n  if ((this->field_0x20 & 4) == 0) {\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)&this->field_0x18;\n  if ((this->field_0x20 & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)&this->field_0x10;\n  start = of;\n  pOVar16 = this;\n  if ((-1 < lVar13) && (lVar3 + lVar13 <= of->file_size_)) {\n    lVar9 = *(long *)&this->field_0x58;\n    pov = of->base_ + lVar13;\n    lVar13 = *(long *)&this->field_0x60;\n    lVar4 = *(long *)&this->field_0x50;\n    if ((*(byte *)(lVar9 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar5 = *(long *)(lVar9 + 0x18);\n    pOVar16 = (Output_data_plt_x86_64_ibt<64> *)gold::parameters;\n    bVar7 = gold::Parameters::incremental_update(gold::parameters);\n    bVar1 = *(byte *)(lVar9 + 0x20);\n    in_RDX = (size_t)bVar1;\n    if (bVar7) {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    start = (Output_file *)(ulong)(bVar2 & 2);\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar13 + 0x10);\n    if ((-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_)) {\n      puVar6 = of->base_;\n      if ((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  gold::Output_file::get_output_view((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX);\nLAB_0016e2fe:\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n}\n\n" comment comment comment (function_definition "void __thiscall\nanon_unknown.dwarf_353119::Output_data_plt_x86_64_ibt<64>::do_write\n          (Output_data_plt_x86_64_ibt<64> *this,Output_file *of)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  uchar *puVar6;\n  Elf_Addr plt_address;\n  Elf_Addr got_base;\n  bool bVar7;\n  long lVar8;\n  long lVar9;\n  char *format;\n  uint uVar10;\n  Output_file *in_RCX;\n  int iVar11;\n  size_t in_RDX;\n  uchar *puVar12;\n  long lVar13;\n  uint uVar14;\n  uchar *puVar15;\n  Output_file *start;\n  Output_data_plt_x86_64_ibt<64> *pOVar16;\n  long *plVar17;\n  Elf_Addr got_address;\n  uint uVar18;\n  uchar *puVar19;\n  uchar *pov;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  long *local_60;\n  \n  if ((this->field_0x20 & 4) == 0) {\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)&this->field_0x18;\n  if ((this->field_0x20 & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)&this->field_0x10;\n  start = of;\n  pOVar16 = this;\n  if ((-1 < lVar13) && (lVar3 + lVar13 <= of->file_size_)) {\n    lVar9 = *(long *)&this->field_0x58;\n    pov = of->base_ + lVar13;\n    lVar13 = *(long *)&this->field_0x60;\n    lVar4 = *(long *)&this->field_0x50;\n    if ((*(byte *)(lVar9 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar5 = *(long *)(lVar9 + 0x18);\n    pOVar16 = (Output_data_plt_x86_64_ibt<64> *)gold::parameters;\n    bVar7 = gold::Parameters::incremental_update(gold::parameters);\n    bVar1 = *(byte *)(lVar9 + 0x20);\n    in_RDX = (size_t)bVar1;\n    if (bVar7) {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    start = (Output_file *)(ulong)(bVar2 & 2);\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar13 + 0x10);\n    if ((-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_)) {\n      puVar6 = of->base_;\n      if ((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  gold::Output_file::get_output_view((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX);\nLAB_0016e2fe:\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_353119::Output_data_plt_x86_64_ibt<64>::" identifier . identifier : : identifier < number_literal > : :) (function_declarator "do_write\n          (Output_data_plt_x86_64_ibt<64> *this,Output_file *of)" identifier (parameter_list "(Output_data_plt_x86_64_ibt<64> *this,Output_file *of)" ( (parameter_declaration "Output_data_plt_x86_64_ibt<64> *this" type_identifier (ERROR "<64>" < number_literal >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  uchar *puVar6;\n  Elf_Addr plt_address;\n  Elf_Addr got_base;\n  bool bVar7;\n  long lVar8;\n  long lVar9;\n  char *format;\n  uint uVar10;\n  Output_file *in_RCX;\n  int iVar11;\n  size_t in_RDX;\n  uchar *puVar12;\n  long lVar13;\n  uint uVar14;\n  uchar *puVar15;\n  Output_file *start;\n  Output_data_plt_x86_64_ibt<64> *pOVar16;\n  long *plVar17;\n  Elf_Addr got_address;\n  uint uVar18;\n  uchar *puVar19;\n  uchar *pov;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  long *local_60;\n  \n  if ((this->field_0x20 & 4) == 0) {\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  lVar13 = *(long *)&this->field_0x18;\n  if ((this->field_0x20 & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)&this->field_0x10;\n  start = of;\n  pOVar16 = this;\n  if ((-1 < lVar13) && (lVar3 + lVar13 <= of->file_size_)) {\n    lVar9 = *(long *)&this->field_0x58;\n    pov = of->base_ + lVar13;\n    lVar13 = *(long *)&this->field_0x60;\n    lVar4 = *(long *)&this->field_0x50;\n    if ((*(byte *)(lVar9 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar5 = *(long *)(lVar9 + 0x18);\n    pOVar16 = (Output_data_plt_x86_64_ibt<64> *)gold::parameters;\n    bVar7 = gold::Parameters::incremental_update(gold::parameters);\n    bVar1 = *(byte *)(lVar9 + 0x20);\n    in_RDX = (size_t)bVar1;\n    if (bVar7) {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    start = (Output_file *)(ulong)(bVar2 & 2);\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar13 + 0x10);\n    if ((-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_)) {\n      puVar6 = of->base_;\n      if ((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  gold::Output_file::get_output_view((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX);\nLAB_0016e2fe:\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "uchar *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "Elf_Addr plt_address;" type_identifier identifier ;) (declaration "Elf_Addr got_base;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "Output_file *in_RCX;" type_identifier (pointer_declarator "*in_RCX" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "size_t in_RDX;" primitive_type identifier ;) (declaration "uchar *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uchar *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "Output_file *start;" type_identifier (pointer_declarator "*start" * identifier) ;) (expression_statement "Output_data_plt_x86_64_ibt<64> *pOVar16;" (binary_expression "Output_data_plt_x86_64_ibt<64> *pOVar16" (binary_expression "Output_data_plt_x86_64_ibt<64" identifier < number_literal) > (pointer_expression "*pOVar16" * identifier)) ;) (declaration "long *plVar17;" (sized_type_specifier "long" long) (pointer_declarator "*plVar17" * identifier) ;) (declaration "Elf_Addr got_address;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uchar *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uchar *pov;" type_identifier (pointer_declarator "*pov" * identifier) ;) (declaration "undefined8 uVar20;" type_identifier identifier ;) (declaration "undefined8 uVar21;" type_identifier identifier ;) (declaration "long *local_60;" (sized_type_specifier "long" long) (pointer_declarator "*local_60" * identifier) ;) (if_statement "if ((this->field_0x20 & 4) == 0) {\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((this->field_0x20 & 4) == 0)" ( (binary_expression "(this->field_0x20 & 4) == 0" (parenthesized_expression "(this->field_0x20 & 4)" ( (binary_expression "this->field_0x20 & 4" (field_expression "this->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" { (labeled_statement "LAB_0016e316:\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");" statement_identifier : comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;))) })) (expression_statement "lVar13 = *(long *)&this->field_0x18;" (assignment_expression "lVar13 = *(long *)&this->field_0x18" identifier = (pointer_expression "*(long *)&this->field_0x18" * (cast_expression "(long *)&this->field_0x18" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x18" & (field_expression "this->field_0x18" identifier -> field_identifier))))) ;) (if_statement "if ((this->field_0x20 & 2) == 0) goto LAB_0016e2e1;" if (parenthesized_expression "((this->field_0x20 & 2) == 0)" ( (binary_expression "(this->field_0x20 & 2) == 0" (parenthesized_expression "(this->field_0x20 & 2)" ( (binary_expression "this->field_0x20 & 2" (field_expression "this->field_0x20" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar3 = *(long *)&this->field_0x10;" (assignment_expression "lVar3 = *(long *)&this->field_0x10" identifier = (pointer_expression "*(long *)&this->field_0x10" * (cast_expression "(long *)&this->field_0x10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x10" & (field_expression "this->field_0x10" identifier -> field_identifier))))) ;) (expression_statement "start = of;" (assignment_expression "start = of" identifier = identifier) ;) (expression_statement "pOVar16 = this;" (assignment_expression "pOVar16 = this" identifier = identifier) ;) (if_statement "if ((-1 < lVar13) && (lVar3 + lVar13 <= of->file_size_)) {\n    lVar9 = *(long *)&this->field_0x58;\n    pov = of->base_ + lVar13;\n    lVar13 = *(long *)&this->field_0x60;\n    lVar4 = *(long *)&this->field_0x50;\n    if ((*(byte *)(lVar9 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar5 = *(long *)(lVar9 + 0x18);\n    pOVar16 = (Output_data_plt_x86_64_ibt<64> *)gold::parameters;\n    bVar7 = gold::Parameters::incremental_update(gold::parameters);\n    bVar1 = *(byte *)(lVar9 + 0x20);\n    in_RDX = (size_t)bVar1;\n    if (bVar7) {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    start = (Output_file *)(ulong)(bVar2 & 2);\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar13 + 0x10);\n    if ((-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_)) {\n      puVar6 = of->base_;\n      if ((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }" if (parenthesized_expression "((-1 < lVar13) && (lVar3 + lVar13 <= of->file_size_))" ( (binary_expression "(-1 < lVar13) && (lVar3 + lVar13 <= of->file_size_)" (parenthesized_expression "(-1 < lVar13)" ( (binary_expression "-1 < lVar13" number_literal < identifier) )) && (parenthesized_expression "(lVar3 + lVar13 <= of->file_size_)" ( (binary_expression "lVar3 + lVar13 <= of->file_size_" (binary_expression "lVar3 + lVar13" identifier + identifier) <= (field_expression "of->file_size_" identifier -> field_identifier)) ))) )) (compound_statement "{\n    lVar9 = *(long *)&this->field_0x58;\n    pov = of->base_ + lVar13;\n    lVar13 = *(long *)&this->field_0x60;\n    lVar4 = *(long *)&this->field_0x50;\n    if ((*(byte *)(lVar9 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar5 = *(long *)(lVar9 + 0x18);\n    pOVar16 = (Output_data_plt_x86_64_ibt<64> *)gold::parameters;\n    bVar7 = gold::Parameters::incremental_update(gold::parameters);\n    bVar1 = *(byte *)(lVar9 + 0x20);\n    in_RDX = (size_t)bVar1;\n    if (bVar7) {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    start = (Output_file *)(ulong)(bVar2 & 2);\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar13 + 0x10);\n    if ((-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_)) {\n      puVar6 = of->base_;\n      if ((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }" { (expression_statement "lVar9 = *(long *)&this->field_0x58;" (assignment_expression "lVar9 = *(long *)&this->field_0x58" identifier = (pointer_expression "*(long *)&this->field_0x58" * (cast_expression "(long *)&this->field_0x58" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x58" & (field_expression "this->field_0x58" identifier -> field_identifier))))) ;) (expression_statement "pov = of->base_ + lVar13;" (assignment_expression "pov = of->base_ + lVar13" identifier = (binary_expression "of->base_ + lVar13" (field_expression "of->base_" identifier -> field_identifier) + identifier)) ;) (expression_statement "lVar13 = *(long *)&this->field_0x60;" (assignment_expression "lVar13 = *(long *)&this->field_0x60" identifier = (pointer_expression "*(long *)&this->field_0x60" * (cast_expression "(long *)&this->field_0x60" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x60" & (field_expression "this->field_0x60" identifier -> field_identifier))))) ;) (expression_statement "lVar4 = *(long *)&this->field_0x50;" (assignment_expression "lVar4 = *(long *)&this->field_0x50" identifier = (pointer_expression "*(long *)&this->field_0x50" * (cast_expression "(long *)&this->field_0x50" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x50" & (field_expression "this->field_0x50" identifier -> field_identifier))))) ;) (if_statement "if ((*(byte *)(lVar9 + 0x20) & 4) == 0) goto LAB_0016e316;" if (parenthesized_expression "((*(byte *)(lVar9 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(lVar9 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(lVar9 + 0x20) & 4)" ( (binary_expression "*(byte *)(lVar9 + 0x20) & 4" (pointer_expression "*(byte *)(lVar9 + 0x20)" * (cast_expression "(byte *)(lVar9 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x20)" ( (binary_expression "lVar9 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e316;" goto statement_identifier ;)) (expression_statement "lVar5 = *(long *)(lVar9 + 0x18);" (assignment_expression "lVar5 = *(long *)(lVar9 + 0x18)" identifier = (pointer_expression "*(long *)(lVar9 + 0x18)" * (cast_expression "(long *)(lVar9 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x18)" ( (binary_expression "lVar9 + 0x18" identifier + number_literal) ))))) ;) (labeled_statement "pOVar16 = (Output_data_plt_x86_64_ibt<64> *)gold::parameters;" statement_identifier (ERROR "= (Output_data_plt_x86_64_ibt<64> *)gold:" = ( (binary_expression "Output_data_plt_x86_64_ibt<64> *)gold" (binary_expression "Output_data_plt_x86_64_ibt<64" identifier < number_literal) > (pointer_expression "*)gold" * (ERROR ")" )) identifier)) :) : (expression_statement "parameters;" identifier ;)) (ERROR "bVar7 = gold::" (assignment_expression "bVar7 = gold" identifier = identifier) : :) (labeled_statement "Parameters::incremental_update(gold::parameters);" statement_identifier : (ERROR ":incremental_update(gold::parameters)" : (macro_type_specifier "incremental_update(gold::parameters)" identifier ( (ERROR "gold::" (type_descriptor "gold" type_identifier) : :) (type_descriptor "parameters" type_identifier) ))) (expression_statement ";" ;)) (expression_statement "bVar1 = *(byte *)(lVar9 + 0x20);" (assignment_expression "bVar1 = *(byte *)(lVar9 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar9 + 0x20)" * (cast_expression "(byte *)(lVar9 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x20)" ( (binary_expression "lVar9 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "in_RDX = (size_t)bVar1;" (assignment_expression "in_RDX = (size_t)bVar1" identifier = (cast_expression "(size_t)bVar1" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (if_statement "if (bVar7) {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n    }" { (if_statement "if ((bVar1 & 2) == 0) goto LAB_0016e2e1;" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar8 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar9 + 0x10)" identifier = (pointer_expression "*(long *)(lVar9 + 0x10)" * (cast_expression "(long *)(lVar9 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *(byte *)(lVar13 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar13 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar13 + 0x20)" * (cast_expression "(byte *)(lVar13 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x20)" ( (binary_expression "lVar13 + 0x20" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }" else (compound_statement "{\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar9 + 0x10);\n      bVar2 = *(byte *)(lVar13 + 0x20);\n      pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }" { (if_statement "if ((bVar1 & 2) == 0) goto LAB_0016e2e1;" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar8 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar9 + 0x10)" identifier = (pointer_expression "*(long *)(lVar9 + 0x10)" * (cast_expression "(long *)(lVar9 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *(byte *)(lVar13 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar13 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar13 + 0x20)" * (cast_expression "(byte *)(lVar13 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x20)" ( (binary_expression "lVar13 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8);" (assignment_expression "pOVar16 = (Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8)" identifier = (call_expression "(Output_data_plt_x86_64_ibt<64> *)(lVar5 + lVar8)" (parenthesized_expression "(Output_data_plt_x86_64_ibt<64> *)" ( (binary_expression "Output_data_plt_x86_64_ibt<64> *" (binary_expression "Output_data_plt_x86_64_ibt<64" identifier < number_literal) > (pointer_expression "*" * identifier)) )) (argument_list "(lVar5 + lVar8)" ( (binary_expression "lVar5 + lVar8" identifier + identifier) )))) ;) (if_statement "if ((bVar2 & 4) == 0) goto LAB_0016e316;" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e316;" goto statement_identifier ;)) (if_statement "if (pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }" if (parenthesized_expression "(pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18))" ( (binary_expression "pOVar16 != *(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)" identifier != (pointer_expression "*(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)" * (call_expression "(Output_data_plt_x86_64_ibt<64> **)(lVar13 + 0x18)" (parenthesized_expression "(Output_data_plt_x86_64_ibt<64> **)" ( (binary_expression "Output_data_plt_x86_64_ibt<64> **" (binary_expression "Output_data_plt_x86_64_ibt<64" identifier < number_literal) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(lVar13 + 0x18)" ( (binary_expression "lVar13 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");\n      }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write");" (call_expression "do_gold_unreachable("../../gold/x86_64.cc",0xac2,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xac2,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;)) })) }))) (expression_statement "start = (Output_file *)(ulong)(bVar2 & 2);" (assignment_expression "start = (Output_file *)(ulong)(bVar2 & 2)" identifier = (cast_expression "(Output_file *)(ulong)(bVar2 & 2)" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(ulong)(bVar2 & 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) ))))) ;) (if_statement "if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((bVar2 & 2) == 0)" ( (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n    }" { (labeled_statement "LAB_0016e2e1:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" statement_identifier : comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" statement_identifier : (ERROR ":" :) (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 "lVar8 = lVar8 + *(long *)(lVar13 + 0x10);" (assignment_expression "lVar8 = lVar8 + *(long *)(lVar13 + 0x10)" identifier = (binary_expression "lVar8 + *(long *)(lVar13 + 0x10)" identifier + (pointer_expression "*(long *)(lVar13 + 0x10)" * (cast_expression "(long *)(lVar13 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x10)" ( (binary_expression "lVar13 + 0x10" identifier + number_literal) )))))) ;) (if_statement "if ((-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_)) {\n      puVar6 = of->base_;\n      if ((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }" if (parenthesized_expression "((-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_))" ( (binary_expression "(-1 < lVar5) && (lVar8 + lVar5 <= of->file_size_)" (parenthesized_expression "(-1 < lVar5)" ( (binary_expression "-1 < lVar5" number_literal < identifier) )) && (parenthesized_expression "(lVar8 + lVar5 <= of->file_size_)" ( (binary_expression "lVar8 + lVar5 <= of->file_size_" (binary_expression "lVar8 + lVar5" identifier + identifier) <= (field_expression "of->file_size_" identifier -> field_identifier)) ))) )) (compound_statement "{\n      puVar6 = of->base_;\n      if ((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }" { (expression_statement "puVar6 = of->base_;" (assignment_expression "puVar6 = of->base_" identifier = (field_expression "of->base_" identifier -> field_identifier)) ;) (if_statement "if ((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }" if (parenthesized_expression "((((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0))" ( (binary_expression "(((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)" (parenthesized_expression "(((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0))" ( (binary_expression "((this->field_0x20 & 1) != 0) &&\n          (plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)" (parenthesized_expression "((this->field_0x20 & 1) != 0)" ( (binary_expression "(this->field_0x20 & 1) != 0" (parenthesized_expression "(this->field_0x20 & 1)" ( (binary_expression "this->field_0x20 & 1" (field_expression "this->field_0x20" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0)" ( (comma_expression "plt_address = *(Elf_Addr *)&this->field_0x8, (*(byte *)(lVar4 + 0x20) & 1) != 0" (assignment_expression "plt_address = *(Elf_Addr *)&this->field_0x8" identifier = (pointer_expression "*(Elf_Addr *)&this->field_0x8" * (cast_expression "(Elf_Addr *)&this->field_0x8" ( (type_descriptor "Elf_Addr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x8" & (field_expression "this->field_0x8" identifier -> field_identifier))))) , (binary_expression "(*(byte *)(lVar4 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar4 + 0x20) & 1" (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0)" ( (comma_expression "got_base = *(Elf_Addr *)(lVar4 + 8), (bVar1 & 1) != 0" (assignment_expression "got_base = *(Elf_Addr *)(lVar4 + 8)" identifier = (pointer_expression "*(Elf_Addr *)(lVar4 + 8)" * (cast_expression "(Elf_Addr *)(lVar4 + 8)" ( (type_descriptor "Elf_Addr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) , (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n        got_address = *(Elf_Addr *)(lVar9 + 8);\n        pOVar16 = this;\n        Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);\n        uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;\n        uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;\n        puVar15 = pov + 0x10;\n        uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;\n        local_60 = (long *)(puVar6 + lVar5 + 0x18);\n        if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }\n        if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");\n      }" { (expression_statement "got_address = *(Elf_Addr *)(lVar9 + 8);" (assignment_expression "got_address = *(Elf_Addr *)(lVar9 + 8)" identifier = (pointer_expression "*(Elf_Addr *)(lVar9 + 8)" * (cast_expression "(Elf_Addr *)(lVar9 + 8)" ( (type_descriptor "Elf_Addr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 8)" ( (binary_expression "lVar9 + 8" identifier + number_literal) ))))) ;) (expression_statement "pOVar16 = this;" (assignment_expression "pOVar16 = this" identifier = identifier) ;) (labeled_statement "Output_data_plt_x86_64_bnd::do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);" statement_identifier : (ERROR ":" :) (expression_statement "do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address);" (call_expression "do_fill_first_plt_entry\n                  ((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address)" identifier (argument_list "((Output_data_plt_x86_64_bnd *)this,pov,got_address,plt_address)" ( (cast_expression "(Output_data_plt_x86_64_bnd *)this" ( (type_descriptor "Output_data_plt_x86_64_bnd *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier ))) ;)) (expression_statement "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_;" (binary_expression "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._8_8_" (binary_expression "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64" (assignment_expression "uVar21 = (anonymous_namespace)" identifier = (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Output_data_plt_x86_64_ibt" : : identifier) < number_literal) > (ERROR "::" : :) (field_expression "plt_entry._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_;" (binary_expression "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::plt_entry._0_8_" (binary_expression "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64" (assignment_expression "uVar20 = (anonymous_namespace)" identifier = (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Output_data_plt_x86_64_ibt" : : identifier) < number_literal) > (ERROR "::" : :) (field_expression "plt_entry._0_8_" identifier . field_identifier)) ;) (expression_statement "puVar15 = pov + 0x10;" (assignment_expression "puVar15 = pov + 0x10" identifier = (binary_expression "pov + 0x10" identifier + number_literal)) ;) (expression_statement "uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;" (assignment_expression "uVar14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68" identifier = (binary_expression "*(int *)&this->field_0x6c + *(int *)&this->field_0x68" (pointer_expression "*(int *)&this->field_0x6c" * (cast_expression "(int *)&this->field_0x6c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x6c" & (field_expression "this->field_0x6c" identifier -> field_identifier)))) + (pointer_expression "*(int *)&this->field_0x68" * (cast_expression "(int *)&this->field_0x68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x68" & (field_expression "this->field_0x68" identifier -> field_identifier)))))) ;) (expression_statement "local_60 = (long *)(puVar6 + lVar5 + 0x18);" (assignment_expression "local_60 = (long *)(puVar6 + lVar5 + 0x18)" identifier = (cast_expression "(long *)(puVar6 + lVar5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + lVar5 + 0x18)" ( (binary_expression "puVar6 + lVar5 + 0x18" (binary_expression "puVar6 + lVar5" identifier + identifier) + number_literal) )))) ;) (if_statement "if (uVar14 == 0) {\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }\n        else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n          if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }\n        }" { (if_statement "if (*(uint *)&this->field_0x70 == 0xffffffff) {\n            lVar13 = 0x10;\n          }\n          else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }" if (parenthesized_expression "(*(uint *)&this->field_0x70 == 0xffffffff)" ( (binary_expression "*(uint *)&this->field_0x70 == 0xffffffff" (pointer_expression "*(uint *)&this->field_0x70" * (cast_expression "(uint *)&this->field_0x70" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x70" & (field_expression "this->field_0x70" identifier -> field_identifier)))) == number_literal) )) (compound_statement "{\n            lVar13 = 0x10;\n          }" { (expression_statement "lVar13 = 0x10;" (assignment_expression "lVar13 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }" else (compound_statement "{\n            lVar13 = 0x20;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);\n          }" { (expression_statement "lVar13 = 0x20;" (assignment_expression "lVar13 = 0x20" identifier = number_literal) ;) (labeled_statement "Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);" statement_identifier : (ERROR ":" :) (expression_statement "do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10);" (call_expression "do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10)" identifier (argument_list "((Output_data_plt_x86_64_bnd *)pOVar16,puVar15,got_address,plt_address,\n                       got_base,*(uint *)&this->field_0x70,0x10)" ( (cast_expression "(Output_data_plt_x86_64_bnd *)pOVar16" ( (type_descriptor "Output_data_plt_x86_64_bnd *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier , identifier , (pointer_expression "*(uint *)&this->field_0x70" * (cast_expression "(uint *)&this->field_0x70" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x70" & (field_expression "this->field_0x70" identifier -> field_identifier)))) , number_literal ))) ;)) }))) }) (else_clause "else {\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }" else (compound_statement "{\n          puVar12 = puVar15;\n          plVar17 = local_60;\n          uVar18 = 0;\n          do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);\n          lVar13 = (ulong)(uVar14 - 1) + 1;\n          uVar18 = (uVar14 + 1) * 0x10;\n          puVar15 = puVar15 + lVar13 * 0x10;\n          local_60 = local_60 + lVar13;\n          puVar12 = puVar15;\n          if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }\n          uVar10 = 0;\n          puVar15 = puVar12;\n          uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n          uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n          do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);\n          lVar13 = (long)puVar19 - (long)pov;\n        }" { (expression_statement "puVar12 = puVar15;" (assignment_expression "puVar12 = puVar15" identifier = identifier) ;) (expression_statement "plVar17 = local_60;" (assignment_expression "plVar17 = local_60" identifier = identifier) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          } while (uVar10 != uVar14);" do (compound_statement "{\n            *(undefined8 *)puVar12 = uVar20;\n            *(undefined8 *)(puVar12 + 8) = uVar21;\n            puVar12[6] = (uchar)(uVar18 >> 8);\n            puVar12[8] = (uchar)(uVar18 >> 0x18);\n            puVar12[5] = (uchar)uVar18;\n            uVar10 = uVar18 + 1;\n            puVar12[7] = (uchar)(uVar18 >> 0x10);\n            iVar11 = (int)puVar12;\n            *(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;\n            puVar12 = puVar12 + 0x10;\n            *plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;\n            plVar17 = plVar17 + 1;\n            uVar18 = uVar10;\n          }" { (expression_statement "*(undefined8 *)puVar12 = uVar20;" (assignment_expression "*(undefined8 *)puVar12 = uVar20" (pointer_expression "*(undefined8 *)puVar12" * (cast_expression "(undefined8 *)puVar12" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined8 *)(puVar12 + 8) = uVar21;" (assignment_expression "*(undefined8 *)(puVar12 + 8) = uVar21" (pointer_expression "*(undefined8 *)(puVar12 + 8)" * (cast_expression "(undefined8 *)(puVar12 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 8)" ( (binary_expression "puVar12 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar12[6] = (uchar)(uVar18 >> 8);" (assignment_expression "puVar12[6] = (uchar)(uVar18 >> 8)" (subscript_expression "puVar12[6]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar18 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar18 >> 8)" ( (binary_expression "uVar18 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar12[8] = (uchar)(uVar18 >> 0x18);" (assignment_expression "puVar12[8] = (uchar)(uVar18 >> 0x18)" (subscript_expression "puVar12[8]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar18 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar18 >> 0x18)" ( (binary_expression "uVar18 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "puVar12[5] = (uchar)uVar18;" (assignment_expression "puVar12[5] = (uchar)uVar18" (subscript_expression "puVar12[5]" identifier [ number_literal ]) = (cast_expression "(uchar)uVar18" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar18 + 1;" (assignment_expression "uVar10 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar12[7] = (uchar)(uVar18 >> 0x10);" (assignment_expression "puVar12[7] = (uchar)(uVar18 >> 0x10)" (subscript_expression "puVar12[7]" identifier [ number_literal ]) = (call_expression "(uchar)(uVar18 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(uVar18 >> 0x10)" ( (binary_expression "uVar18 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "iVar11 = (int)puVar12;" (assignment_expression "iVar11 = (int)puVar12" identifier = (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11;" (assignment_expression "*(int *)(puVar12 + 0xb) = ((int)puVar15 + -0x1f) - iVar11" (pointer_expression "*(int *)(puVar12 + 0xb)" * (cast_expression "(int *)(puVar12 + 0xb)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xb)" ( (binary_expression "puVar12 + 0xb" identifier + number_literal) )))) = (binary_expression "((int)puVar15 + -0x1f) - iVar11" (parenthesized_expression "((int)puVar15 + -0x1f)" ( (binary_expression "(int)puVar15 + -0x1f" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier)) ;) (expression_statement "puVar12 = puVar12 + 0x10;" (assignment_expression "puVar12 = puVar12 + 0x10" identifier = (binary_expression "puVar12 + 0x10" identifier + number_literal)) ;) (expression_statement "*plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address;" (assignment_expression "*plVar17 = (uint)((0x10 - (int)puVar15) + iVar11) + plt_address" (pointer_expression "*plVar17" * identifier) = (binary_expression "(uint)((0x10 - (int)puVar15) + iVar11) + plt_address" (call_expression "(uint)((0x10 - (int)puVar15) + iVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((0x10 - (int)puVar15) + iVar11)" ( (binary_expression "(0x10 - (int)puVar15) + iVar11" (parenthesized_expression "(0x10 - (int)puVar15)" ( (binary_expression "0x10 - (int)puVar15" number_literal - (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) + identifier) ))) + identifier)) ;) (expression_statement "plVar17 = plVar17 + 1;" (assignment_expression "plVar17 = plVar17 + 1" identifier = (binary_expression "plVar17 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar10;" (assignment_expression "uVar18 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(uVar10 != uVar14)" ( (binary_expression "uVar10 != uVar14" identifier != identifier) )) ;) (expression_statement "lVar13 = (ulong)(uVar14 - 1) + 1;" (assignment_expression "lVar13 = (ulong)(uVar14 - 1) + 1" identifier = (binary_expression "(ulong)(uVar14 - 1) + 1" (call_expression "(ulong)(uVar14 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "uVar18 = (uVar14 + 1) * 0x10;" (assignment_expression "uVar18 = (uVar14 + 1) * 0x10" identifier = (binary_expression "(uVar14 + 1) * 0x10" (parenthesized_expression "(uVar14 + 1)" ( (binary_expression "uVar14 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "puVar15 = puVar15 + lVar13 * 0x10;" (assignment_expression "puVar15 = puVar15 + lVar13 * 0x10" identifier = (binary_expression "puVar15 + lVar13 * 0x10" identifier + (binary_expression "lVar13 * 0x10" identifier * number_literal))) ;) (expression_statement "local_60 = local_60 + lVar13;" (assignment_expression "local_60 = local_60 + lVar13" identifier = (binary_expression "local_60 + lVar13" identifier + identifier)) ;) (expression_statement "puVar12 = puVar15;" (assignment_expression "puVar12 = puVar15" identifier = identifier) ;) (if_statement "if (*(uint *)&this->field_0x70 != 0xffffffff) {\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }" if (parenthesized_expression "(*(uint *)&this->field_0x70 != 0xffffffff)" ( (binary_expression "*(uint *)&this->field_0x70 != 0xffffffff" (pointer_expression "*(uint *)&this->field_0x70" * (cast_expression "(uint *)&this->field_0x70" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x70" & (field_expression "this->field_0x70" identifier -> field_identifier)))) != number_literal) )) (compound_statement "{\n            puVar12 = puVar15 + 0x10;\n            Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);\n          }" { (expression_statement "puVar12 = puVar15 + 0x10;" (assignment_expression "puVar12 = puVar15 + 0x10" identifier = (binary_expression "puVar15 + 0x10" identifier + number_literal)) ;) (labeled_statement "Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);" statement_identifier : (ERROR ":" :) (expression_statement "do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18);" (call_expression "do_fill_tlsdesc_entry\n                      ((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18)" identifier (argument_list "((Output_data_plt_x86_64_bnd *)this,puVar15,got_address,plt_address,got_base,\n                       *(uint *)&this->field_0x70,uVar18)" ( (cast_expression "(Output_data_plt_x86_64_bnd *)this" ( (type_descriptor "Output_data_plt_x86_64_bnd *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier , identifier , (pointer_expression "*(uint *)&this->field_0x70" * (cast_expression "(uint *)&this->field_0x70" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x70" & (field_expression "this->field_0x70" identifier -> field_identifier)))) , identifier ))) ;)) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "puVar15 = puVar12;" (assignment_expression "puVar15 = puVar12" identifier = identifier) ;) (expression_statement "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;" (binary_expression "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_" (binary_expression "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64" (assignment_expression "uVar20 = (anonymous_namespace)" identifier = (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Output_data_plt_x86_64_ibt" : : identifier) < number_literal) > (ERROR "::" : :) (field_expression "aplt_entry._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;" (binary_expression "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_" (binary_expression "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64" (assignment_expression "uVar21 = (anonymous_namespace)" identifier = (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Output_data_plt_x86_64_ibt" : : identifier) < number_literal) > (ERROR "::" : :) (field_expression "aplt_entry._8_8_" identifier . field_identifier)) ;) (do_statement "do {\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          } while (uVar10 < uVar14);" do (compound_statement "{\n            iVar11 = uVar10 * 8;\n            uVar10 = uVar10 + 1;\n            lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);\n            lVar13 = lVar9 + -0xb;\n            if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }\n            *(undefined8 *)puVar15 = uVar20;\n            *(undefined8 *)(puVar15 + 8) = uVar21;\n            puVar19 = puVar15 + 0x10;\n            puVar15[7] = (uchar)lVar13;\n            puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);\n            puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);\n            puVar15[8] = (uchar)((ulong)lVar13 >> 8);\n            puVar15 = puVar19;\n          }" { (expression_statement "iVar11 = uVar10 * 8;" (assignment_expression "iVar11 = uVar10 * 8" identifier = (binary_expression "uVar10 * 8" identifier * number_literal)) ;) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15);" (assignment_expression "lVar9 = ((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15)" identifier = (binary_expression "((ulong)(iVar11 + 0x18) + (got_address - plt_address)) -\n                    (ulong)((uVar18 - (int)puVar12) + (int)puVar15)" (parenthesized_expression "((ulong)(iVar11 + 0x18) + (got_address - plt_address))" ( (binary_expression "(ulong)(iVar11 + 0x18) + (got_address - plt_address)" (call_expression "(ulong)(iVar11 + 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar11 + 0x18)" ( (binary_expression "iVar11 + 0x18" identifier + number_literal) ))) + (parenthesized_expression "(got_address - plt_address)" ( (binary_expression "got_address - plt_address" identifier - identifier) ))) )) - (call_expression "(ulong)((uVar18 - (int)puVar12) + (int)puVar15)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uVar18 - (int)puVar12) + (int)puVar15)" ( (binary_expression "(uVar18 - (int)puVar12) + (int)puVar15" (parenthesized_expression "(uVar18 - (int)puVar12)" ( (binary_expression "uVar18 - (int)puVar12" identifier - (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "lVar13 = lVar9 + -0xb;" (assignment_expression "lVar13 = lVar9 + -0xb" identifier = (binary_expression "lVar9 + -0xb" identifier + number_literal)) ;) (if_statement "if (0xffffffff < lVar9 + 0x7ffffff5U) {\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }" if (parenthesized_expression "(0xffffffff < lVar9 + 0x7ffffff5U)" ( (binary_expression "0xffffffff < lVar9 + 0x7ffffff5U" number_literal < (binary_expression "lVar9 + 0x7ffffff5U" identifier + number_literal)) )) (compound_statement "{\n              format = (char *)gettext("PC-relative offset overflow in APLT entry %d");\n              gold::gold_error(format,(ulong)uVar10);\n              uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;\n              uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;\n            }" { (expression_statement "format = (char *)gettext("PC-relative offset overflow in APLT entry %d");" (assignment_expression "format = (char *)gettext("PC-relative offset overflow in APLT entry %d")" identifier = (cast_expression "(char *)gettext("PC-relative offset overflow in APLT entry %d")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("PC-relative offset overflow in APLT entry %d")" identifier (argument_list "("PC-relative offset overflow in APLT entry %d")" ( (string_literal ""PC-relative offset overflow in APLT entry %d"" " string_content ") ))))) ;) (labeled_statement "gold::gold_error(format,(ulong)uVar10);" statement_identifier : (ERROR ":" :) (expression_statement "gold_error(format,(ulong)uVar10);" (call_expression "gold_error(format,(ulong)uVar10)" identifier (argument_list "(format,(ulong)uVar10)" ( identifier , (cast_expression "(ulong)uVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;)) (expression_statement "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_;" (binary_expression "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._0_8_" (binary_expression "uVar20 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64" (assignment_expression "uVar20 = (anonymous_namespace)" identifier = (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Output_data_plt_x86_64_ibt" : : identifier) < number_literal) > (ERROR "::" : :) (field_expression "aplt_entry._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_;" (binary_expression "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64>::aplt_entry._8_8_" (binary_expression "uVar21 = (anonymous_namespace)::Output_data_plt_x86_64_ibt<64" (assignment_expression "uVar21 = (anonymous_namespace)" identifier = (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Output_data_plt_x86_64_ibt" : : identifier) < number_literal) > (ERROR "::" : :) (field_expression "aplt_entry._8_8_" identifier . field_identifier)) ;) })) (expression_statement "*(undefined8 *)puVar15 = uVar20;" (assignment_expression "*(undefined8 *)puVar15 = uVar20" (pointer_expression "*(undefined8 *)puVar15" * (cast_expression "(undefined8 *)puVar15" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined8 *)(puVar15 + 8) = uVar21;" (assignment_expression "*(undefined8 *)(puVar15 + 8) = uVar21" (pointer_expression "*(undefined8 *)(puVar15 + 8)" * (cast_expression "(undefined8 *)(puVar15 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 8)" ( (binary_expression "puVar15 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar19 = puVar15 + 0x10;" (assignment_expression "puVar19 = puVar15 + 0x10" identifier = (binary_expression "puVar15 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar15[7] = (uchar)lVar13;" (assignment_expression "puVar15[7] = (uchar)lVar13" (subscript_expression "puVar15[7]" identifier [ number_literal ]) = (cast_expression "(uchar)lVar13" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "puVar15[10] = (uchar)((ulong)lVar13 >> 0x18);" (assignment_expression "puVar15[10] = (uchar)((ulong)lVar13 >> 0x18)" (subscript_expression "puVar15[10]" identifier [ number_literal ]) = (call_expression "(uchar)((ulong)lVar13 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)lVar13 >> 0x18)" ( (binary_expression "(ulong)lVar13 >> 0x18" (cast_expression "(ulong)lVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar15[9] = (uchar)((ulong)lVar13 >> 0x10);" (assignment_expression "puVar15[9] = (uchar)((ulong)lVar13 >> 0x10)" (subscript_expression "puVar15[9]" identifier [ number_literal ]) = (call_expression "(uchar)((ulong)lVar13 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)lVar13 >> 0x10)" ( (binary_expression "(ulong)lVar13 >> 0x10" (cast_expression "(ulong)lVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar15[8] = (uchar)((ulong)lVar13 >> 8);" (assignment_expression "puVar15[8] = (uchar)((ulong)lVar13 >> 8)" (subscript_expression "puVar15[8]" identifier [ number_literal ]) = (call_expression "(uchar)((ulong)lVar13 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((ulong)lVar13 >> 8)" ( (binary_expression "(ulong)lVar13 >> 8" (cast_expression "(ulong)lVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" identifier = identifier) ;) }) while (parenthesized_expression "(uVar10 < uVar14)" ( (binary_expression "uVar10 < uVar14" identifier < identifier) )) ;) (expression_statement "lVar13 = (long)puVar19 - (long)pov;" (assignment_expression "lVar13 = (long)puVar19 - (long)pov" identifier = (binary_expression "(long)puVar19 - (long)pov" (cast_expression "(long)puVar19" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pov" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) }))) (if_statement "if (lVar3 == lVar13) {\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }" if (parenthesized_expression "(lVar3 == lVar13)" ( (binary_expression "lVar3 == lVar13" identifier == identifier) )) (compound_statement "{\n          if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }\n                    /* WARNING: Subroutine does not return */\n          gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");\n        }" { (if_statement "if (lVar8 == (long)local_60 - (long)(puVar6 + lVar5)) {\n            return;\n          }" if (parenthesized_expression "(lVar8 == (long)local_60 - (long)(puVar6 + lVar5))" ( (binary_expression "lVar8 == (long)local_60 - (long)(puVar6 + lVar5)" identifier == (binary_expression "(long)local_60 - (long)(puVar6 + lVar5)" (cast_expression "(long)local_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)(puVar6 + lVar5)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar6 + lVar5)" ( (binary_expression "puVar6 + lVar5" identifier + identifier) ))))) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) comment (labeled_statement "gold::do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write");" (call_expression "do_gold_unreachable("../../gold/x86_64.cc",0xb09,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xb09,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;)) })) comment (labeled_statement "gold::do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write");" (call_expression "do_gold_unreachable("../../gold/x86_64.cc",0xb08,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xb08,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;)) })) (goto_statement "goto LAB_0016e2fe;" goto statement_identifier ;) })) })) (labeled_statement "gold::Output_file::get_output_view((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX);" statement_identifier : (ERROR ":" :) (labeled_statement "Output_file::get_output_view((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX);" statement_identifier : (ERROR ":" :) (expression_statement "get_output_view((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX);" (call_expression "get_output_view((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX)" identifier (argument_list "((Output_file *)pOVar16,(off_t)start,in_RDX,in_RCX)" ( (cast_expression "(Output_file *)pOVar16" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(off_t)start" ( (type_descriptor "off_t" type_identifier) ) identifier) , identifier , identifier ))) ;))) (labeled_statement "LAB_0016e2fe:\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");" statement_identifier : comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;))) })))
(translation_unit "ulong FUN_0016df70(long param_1,long param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  undefined8 uVar6;\n  char cVar7;\n  long lVar8;\n  undefined8 uVar9;\n  uint uVar10;\n  undefined8 *puVar11;\n  long lVar12;\n  uint uVar13;\n  long *plVar14;\n  long lVar15;\n  int iVar16;\n  undefined8 *puVar17;\n  undefined8 *puVar18;\n  long lVar19;\n  long lVar20;\n  uint uVar21;\n  undefined8 uVar22;\n  ulong uVar23;\n  long *local_60;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }\n  lVar19 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)(param_1 + 0x10);\n  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  FUN_0016cec0();\nLAB_0016e2fe:\n                    \n  FUN_00199900("../../gold/output.h",0xc5,"address");\n}\n\n" (function_definition "ulong FUN_0016df70(long param_1,long param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  undefined8 uVar6;\n  char cVar7;\n  long lVar8;\n  undefined8 uVar9;\n  uint uVar10;\n  undefined8 *puVar11;\n  long lVar12;\n  uint uVar13;\n  long *plVar14;\n  long lVar15;\n  int iVar16;\n  undefined8 *puVar17;\n  undefined8 *puVar18;\n  long lVar19;\n  long lVar20;\n  uint uVar21;\n  undefined8 uVar22;\n  ulong uVar23;\n  long *local_60;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }\n  lVar19 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)(param_1 + 0x10);\n  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  FUN_0016cec0();\nLAB_0016e2fe:\n                    \n  FUN_00199900("../../gold/output.h",0xc5,"address");\n}" type_identifier (function_declarator "FUN_0016df70(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  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  undefined8 uVar6;\n  char cVar7;\n  long lVar8;\n  undefined8 uVar9;\n  uint uVar10;\n  undefined8 *puVar11;\n  long lVar12;\n  uint uVar13;\n  long *plVar14;\n  long lVar15;\n  int iVar16;\n  undefined8 *puVar17;\n  undefined8 *puVar18;\n  long lVar19;\n  long lVar20;\n  uint uVar21;\n  undefined8 uVar22;\n  ulong uVar23;\n  long *local_60;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }\n  lVar19 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)(param_1 + 0x10);\n  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  FUN_0016cec0();\nLAB_0016e2fe:\n                    \n  FUN_00199900("../../gold/output.h",0xc5,"address");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined8 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "long *plVar14;" (sized_type_specifier "long" long) (pointer_declarator "*plVar14" * identifier) ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined8 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined8 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "long lVar19;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar20;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "undefined8 uVar22;" type_identifier identifier ;) (declaration "ulong uVar23;" type_identifier identifier ;) (declaration "long *local_60;" (sized_type_specifier "long" long) (pointer_declarator "*local_60" * identifier) ;) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\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 "{\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }" { (labeled_statement "LAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");" statement_identifier : (expression_statement "FUN_00199900("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_00199900("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (expression_statement "lVar19 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar19 = *(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 ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;" 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) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar3 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar3 = *(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 ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }" if (parenthesized_expression "((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10)))" ( (binary_expression "(-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar19)" ( (binary_expression "-1 < lVar19" number_literal < identifier) )) && (parenthesized_expression "(lVar3 + lVar19 <= *(long *)(param_2 + 0x10))" ( (binary_expression "lVar3 + lVar19 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar3 + lVar19" identifier + identifier) <= (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) ))))) ))) )) (compound_statement "{\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }" { (expression_statement "lVar15 = *(long *)(param_1 + 0x58);" (assignment_expression "lVar15 = *(long *)(param_1 + 0x58)" identifier = (pointer_expression "*(long *)(param_1 + 0x58)" * (cast_expression "(long *)(param_1 + 0x58)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "lVar19 = lVar19 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar19 = lVar19 + *(long *)(param_2 + 0x18)" identifier = (binary_expression "lVar19 + *(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 "lVar12 = *(long *)(param_1 + 0x60);" (assignment_expression "lVar12 = *(long *)(param_1 + 0x60)" identifier = (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x50);" (assignment_expression "lVar4 = *(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 "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;" if (parenthesized_expression "((*(byte *)(lVar15 + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(lVar15 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(lVar15 + 0x20) & 4)" ( (binary_expression "*(byte *)(lVar15 + 0x20) & 4" (pointer_expression "*(byte *)(lVar15 + 0x20)" * (cast_expression "(byte *)(lVar15 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x20)" ( (binary_expression "lVar15 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e316;" goto statement_identifier ;)) (expression_statement "lVar20 = *(long *)(lVar15 + 0x18);" (assignment_expression "lVar20 = *(long *)(lVar15 + 0x18)" identifier = (pointer_expression "*(long *)(lVar15 + 0x18)" * (cast_expression "(long *)(lVar15 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x18)" ( (binary_expression "lVar15 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "cVar7 = FUN_0021a540(PTR_DAT_003f85c0);" (assignment_expression "cVar7 = FUN_0021a540(PTR_DAT_003f85c0)" identifier = (call_expression "FUN_0021a540(PTR_DAT_003f85c0)" identifier (argument_list "(PTR_DAT_003f85c0)" ( identifier )))) ;) (expression_statement "bVar1 = *(byte *)(lVar15 + 0x20);" (assignment_expression "bVar1 = *(byte *)(lVar15 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar15 + 0x20)" * (cast_expression "(byte *)(lVar15 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x20)" ( (binary_expression "lVar15 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" if (parenthesized_expression "(cVar7 == '\0')" ( (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }" { (if_statement "if ((bVar1 & 2) == 0) goto LAB_0016e2e1;" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar8 = *(long *)(lVar15 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar15 + 0x10)" identifier = (pointer_expression "*(long *)(lVar15 + 0x10)" * (cast_expression "(long *)(lVar15 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x10)" ( (binary_expression "lVar15 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *(byte *)(lVar12 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar12 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar12 + 0x20)" * (cast_expression "(byte *)(lVar12 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x20)" ( (binary_expression "lVar12 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((bVar2 & 4) == 0) goto LAB_0016e316;" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e316;" goto statement_identifier ;)) (if_statement "if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }" if (parenthesized_expression "(lVar20 + lVar8 != *(long *)(lVar12 + 0x18))" ( (binary_expression "lVar20 + lVar8 != *(long *)(lVar12 + 0x18)" (binary_expression "lVar20 + lVar8" identifier + identifier) != (pointer_expression "*(long *)(lVar12 + 0x18)" * (cast_expression "(long *)(lVar12 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x18)" ( (binary_expression "lVar12 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }" { (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xac2,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) }) (else_clause "else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" else (compound_statement "{\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" { (if_statement "if ((bVar1 & 2) == 0) goto LAB_0016e2e1;" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0016e2e1;" goto statement_identifier ;)) (expression_statement "lVar8 = *(long *)(lVar15 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar15 + 0x10)" identifier = (pointer_expression "*(long *)(lVar15 + 0x10)" * (cast_expression "(long *)(lVar15 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 0x10)" ( (binary_expression "lVar15 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *(byte *)(lVar12 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar12 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar12 + 0x20)" * (cast_expression "(byte *)(lVar12 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x20)" ( (binary_expression "lVar12 + 0x20" identifier + number_literal) ))))) ;) }))) (if_statement "if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }" if (parenthesized_expression "((bVar2 & 2) == 0)" ( (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }" { (labeled_statement "LAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");" statement_identifier : (expression_statement "FUN_00199900("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_00199900("../../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 "lVar8 = lVar8 + *(long *)(lVar12 + 0x10);" (assignment_expression "lVar8 = lVar8 + *(long *)(lVar12 + 0x10)" identifier = (binary_expression "lVar8 + *(long *)(lVar12 + 0x10)" identifier + (pointer_expression "*(long *)(lVar12 + 0x10)" * (cast_expression "(long *)(lVar12 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x10)" ( (binary_expression "lVar12 + 0x10" identifier + number_literal) )))))) ;) (if_statement "if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }" if (parenthesized_expression "((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10)))" ( (binary_expression "(-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar20)" ( (binary_expression "-1 < lVar20" number_literal < identifier) )) && (parenthesized_expression "(lVar8 + lVar20 <= *(long *)(param_2 + 0x10))" ( (binary_expression "lVar8 + lVar20 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar8 + lVar20" identifier + identifier) <= (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) ))))) ))) )) (compound_statement "{\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }" { (expression_statement "lVar20 = lVar20 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar20 = lVar20 + *(long *)(param_2 + 0x18)" identifier = (binary_expression "lVar20 + *(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) )))))) ;) (if_statement "if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }" if (parenthesized_expression "((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0))" ( (binary_expression "(((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)" (parenthesized_expression "(((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0))" ( (binary_expression "((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 1" (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) )) && (parenthesized_expression "(uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)" ( (comma_expression "uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0" (assignment_expression "uVar23 = *(ulong *)(param_1 + 8)" identifier = (pointer_expression "*(ulong *)(param_1 + 8)" * (cast_expression "(ulong *)(param_1 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) , (binary_expression "(*(byte *)(lVar4 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar4 + 0x20) & 1" (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal)) ))) )) && (parenthesized_expression "(uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)" ( (comma_expression "uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0" (assignment_expression "uVar9 = *(undefined8 *)(lVar4 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar4 + 8)" * (cast_expression "(undefined8 *)(lVar4 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) , (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }" { (expression_statement "lVar15 = *(long *)(lVar15 + 8);" (assignment_expression "lVar15 = *(long *)(lVar15 + 8)" identifier = (pointer_expression "*(long *)(lVar15 + 8)" * (cast_expression "(long *)(lVar15 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar15 + 8)" ( (binary_expression "lVar15 + 8" identifier + number_literal) ))))) ;) (expression_statement "FUN_0016bb10(param_1,lVar19,lVar15);" (call_expression "FUN_0016bb10(param_1,lVar19,lVar15)" identifier (argument_list "(param_1,lVar19,lVar15)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar6 = _UNK_0033ed28;" (assignment_expression "uVar6 = _UNK_0033ed28" identifier = identifier) ;) (expression_statement "uVar22 = _DAT_0033ed20;" (assignment_expression "uVar22 = _DAT_0033ed20" identifier = identifier) ;) (expression_statement "puVar18 = (undefined8 *)(lVar19 + 0x10);" (assignment_expression "puVar18 = (undefined8 *)(lVar19 + 0x10)" identifier = (cast_expression "(undefined8 *)(lVar19 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar19 + 0x10)" ( (binary_expression "lVar19 + 0x10" identifier + number_literal) )))) ;) (expression_statement "uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);" (assignment_expression "uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68)" identifier = (binary_expression "*(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68)" (pointer_expression "*(int *)(param_1 + 0x6c)" * (cast_expression "(int *)(param_1 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))))) ;) (expression_statement "local_60 = (long *)(lVar20 + 0x18);" (assignment_expression "local_60 = (long *)(lVar20 + 0x18)" identifier = (cast_expression "(long *)(lVar20 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar20 + 0x18)" ( (binary_expression "lVar20 + 0x18" identifier + number_literal) )))) ;) (if_statement "if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (compound_statement "{\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }" { (if_statement "if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x70) == -1)" ( (binary_expression "*(int *)(param_1 + 0x70) == -1" (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            lVar19 = 0x10;\n          }" { (expression_statement "lVar19 = 0x10;" (assignment_expression "lVar19 = 0x10" identifier = number_literal) ;) }) (else_clause "else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" else (compound_statement "{\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" { (expression_statement "uVar23 = 0x10;" (assignment_expression "uVar23 = 0x10" identifier = number_literal) ;) (expression_statement "lVar19 = 0x20;" (assignment_expression "lVar19 = 0x20" identifier = number_literal) ;) (expression_statement "FUN_0016bb50();" (call_expression "FUN_0016bb50()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" else (compound_statement "{\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" { (expression_statement "puVar11 = puVar18;" (assignment_expression "puVar11 = puVar18" identifier = identifier) ;) (expression_statement "plVar14 = local_60;" (assignment_expression "plVar14 = local_60" identifier = identifier) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);" do (compound_statement "{\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          }" { (expression_statement "*puVar11 = uVar22;" (assignment_expression "*puVar11 = uVar22" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar11[1] = uVar6;" (assignment_expression "puVar11[1] = uVar6" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);" (assignment_expression "*(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8)" (pointer_expression "*(char *)((long)puVar11 + 6)" * (cast_expression "(char *)((long)puVar11 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 6)" ( (binary_expression "(long)puVar11 + 6" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)(uVar21 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar21 >> 8)" ( (binary_expression "uVar21 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);" (assignment_expression "*(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18)" (pointer_expression "*(char *)(puVar11 + 1)" * (cast_expression "(char *)(puVar11 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 1)" ( (binary_expression "puVar11 + 1" identifier + number_literal) )))) = (cast_expression "(char)(uVar21 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar21 >> 0x18)" ( (binary_expression "uVar21 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((long)puVar11 + 5) = (char)uVar21;" (assignment_expression "*(char *)((long)puVar11 + 5) = (char)uVar21" (pointer_expression "*(char *)((long)puVar11 + 5)" * (cast_expression "(char *)((long)puVar11 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 5)" ( (binary_expression "(long)puVar11 + 5" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar21" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar10 = uVar21 + 1;" (assignment_expression "uVar10 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);" (assignment_expression "*(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10)" (pointer_expression "*(char *)((long)puVar11 + 7)" * (cast_expression "(char *)((long)puVar11 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 7)" ( (binary_expression "(long)puVar11 + 7" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)(uVar21 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar21 >> 0x10)" ( (binary_expression "uVar21 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "iVar16 = (int)puVar11;" (assignment_expression "iVar16 = (int)puVar11" identifier = (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;" (assignment_expression "*(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16" (pointer_expression "*(int *)((long)puVar11 + 0xb)" * (cast_expression "(int *)((long)puVar11 + 0xb)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar11 + 0xb)" ( (binary_expression "(long)puVar11 + 0xb" (cast_expression "(long)puVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "((int)puVar18 + -0x1f) - iVar16" (parenthesized_expression "((int)puVar18 + -0x1f)" ( (binary_expression "(int)puVar18 + -0x1f" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier)) ;) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" identifier = (binary_expression "puVar11 + 2" identifier + number_literal)) ;) (expression_statement "*plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;" (assignment_expression "*plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23" (pointer_expression "*plVar14" * identifier) = (binary_expression "(uint)((0x10 - (int)puVar18) + iVar16) + uVar23" (call_expression "(uint)((0x10 - (int)puVar18) + iVar16)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((0x10 - (int)puVar18) + iVar16)" ( (binary_expression "(0x10 - (int)puVar18) + iVar16" (parenthesized_expression "(0x10 - (int)puVar18)" ( (binary_expression "0x10 - (int)puVar18" number_literal - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) + identifier) ))) + identifier)) ;) (expression_statement "plVar14 = plVar14 + 1;" (assignment_expression "plVar14 = plVar14 + 1" identifier = (binary_expression "plVar14 + 1" identifier + number_literal)) ;) (expression_statement "uVar21 = uVar10;" (assignment_expression "uVar21 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(uVar10 != uVar13)" ( (binary_expression "uVar10 != uVar13" identifier != identifier) )) ;) (expression_statement "lVar12 = (ulong)(uVar13 - 1) + 1;" (assignment_expression "lVar12 = (ulong)(uVar13 - 1) + 1" identifier = (binary_expression "(ulong)(uVar13 - 1) + 1" (call_expression "(ulong)(uVar13 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar13 - 1)" ( (binary_expression "uVar13 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "iVar16 = (uVar13 + 1) * 0x10;" (assignment_expression "iVar16 = (uVar13 + 1) * 0x10" identifier = (binary_expression "(uVar13 + 1) * 0x10" (parenthesized_expression "(uVar13 + 1)" ( (binary_expression "uVar13 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "puVar18 = puVar18 + lVar12 * 2;" (assignment_expression "puVar18 = puVar18 + lVar12 * 2" identifier = (binary_expression "puVar18 + lVar12 * 2" identifier + (binary_expression "lVar12 * 2" identifier * number_literal))) ;) (expression_statement "local_60 = local_60 + lVar12;" (assignment_expression "local_60 = local_60 + lVar12" identifier = (binary_expression "local_60 + lVar12" identifier + identifier)) ;) (expression_statement "puVar11 = puVar18;" (assignment_expression "puVar11 = puVar18" identifier = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x70) != -1)" ( (binary_expression "*(int *)(param_1 + 0x70) != -1" (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }" { (expression_statement "puVar11 = puVar18 + 2;" (assignment_expression "puVar11 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);" (call_expression "FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16)" identifier (argument_list "(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16)" ( identifier , identifier , identifier , identifier , identifier , (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) , identifier ))) ;) })) (expression_statement "lVar15 = lVar15 - uVar23;" (assignment_expression "lVar15 = lVar15 - uVar23" identifier = (binary_expression "lVar15 - uVar23" identifier - identifier)) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "puVar18 = puVar11;" (assignment_expression "puVar18 = puVar11" identifier = identifier) ;) (expression_statement "uVar9 = _DAT_0033ed00;" (assignment_expression "uVar9 = _DAT_0033ed00" identifier = identifier) ;) (expression_statement "uVar22 = _UNK_0033ed08;" (assignment_expression "uVar22 = _UNK_0033ed08" identifier = identifier) ;) (do_statement "do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);" do (compound_statement "{\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          }" { (expression_statement "iVar5 = uVar21 * 8;" (assignment_expression "iVar5 = uVar21 * 8" identifier = (binary_expression "uVar21 * 8" identifier * number_literal)) ;) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);" (assignment_expression "lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" identifier = (binary_expression "((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" (parenthesized_expression "((ulong)(iVar5 + 0x18) + lVar15)" ( (binary_expression "(ulong)(iVar5 + 0x18) + lVar15" (call_expression "(ulong)(iVar5 + 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar5 + 0x18)" ( (binary_expression "iVar5 + 0x18" identifier + number_literal) ))) + identifier) )) - (call_expression "(ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "((iVar16 - (int)puVar11) + (int)puVar18)" ( (binary_expression "(iVar16 - (int)puVar11) + (int)puVar18" (parenthesized_expression "(iVar16 - (int)puVar11)" ( (binary_expression "iVar16 - (int)puVar11" identifier - (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "uVar23 = lVar12 - 0xb;" (assignment_expression "uVar23 = lVar12 - 0xb" identifier = (binary_expression "lVar12 - 0xb" identifier - number_literal)) ;) (if_statement "if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }" if (parenthesized_expression "(0xffffffff < lVar12 + 0x7ffffff5U)" ( (binary_expression "0xffffffff < lVar12 + 0x7ffffff5U" number_literal < (binary_expression "lVar12 + 0x7ffffff5U" identifier + number_literal)) )) (compound_statement "{\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }" { (expression_statement "uVar9 = gettext("PC-relative offset overflow in APLT entry %d");" (assignment_expression "uVar9 = gettext("PC-relative offset overflow in APLT entry %d")" identifier = (call_expression "gettext("PC-relative offset overflow in APLT entry %d")" identifier (argument_list "("PC-relative offset overflow in APLT entry %d")" ( (string_literal ""PC-relative offset overflow in APLT entry %d"" " string_content ") )))) ;) (expression_statement "FUN_00191870(uVar9,uVar21);" (call_expression "FUN_00191870(uVar9,uVar21)" identifier (argument_list "(uVar9,uVar21)" ( identifier , identifier ))) ;) (expression_statement "uVar9 = _DAT_0033ed00;" (assignment_expression "uVar9 = _DAT_0033ed00" identifier = identifier) ;) (expression_statement "uVar22 = _UNK_0033ed08;" (assignment_expression "uVar22 = _UNK_0033ed08" identifier = identifier) ;) })) (expression_statement "*puVar18 = uVar9;" (assignment_expression "*puVar18 = uVar9" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "puVar18[1] = uVar22;" (assignment_expression "puVar18[1] = uVar22" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar18 + 2;" (assignment_expression "puVar17 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "*(char *)((long)puVar18 + 7) = (char)uVar23;" (assignment_expression "*(char *)((long)puVar18 + 7) = (char)uVar23" (pointer_expression "*(char *)((long)puVar18 + 7)" * (cast_expression "(char *)((long)puVar18 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar18 + 7)" ( (binary_expression "(long)puVar18 + 7" (cast_expression "(long)puVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar23" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);" (assignment_expression "*(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18)" (pointer_expression "*(char *)((long)puVar18 + 10)" * (cast_expression "(char *)((long)puVar18 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar18 + 10)" ( (binary_expression "(long)puVar18 + 10" (cast_expression "(long)puVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)(uVar23 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar23 >> 0x18)" ( (binary_expression "uVar23 >> 0x18" identifier >> number_literal) )))) ;) (expression_statement "*(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);" (assignment_expression "*(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10)" (pointer_expression "*(char *)((long)puVar18 + 9)" * (cast_expression "(char *)((long)puVar18 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar18 + 9)" ( (binary_expression "(long)puVar18 + 9" (cast_expression "(long)puVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (cast_expression "(char)(uVar23 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar23 >> 0x10)" ( (binary_expression "uVar23 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar23 = uVar23 >> 8 & 0xffffff;" (assignment_expression "uVar23 = uVar23 >> 8 & 0xffffff" identifier = (binary_expression "uVar23 >> 8 & 0xffffff" (binary_expression "uVar23 >> 8" identifier >> number_literal) & number_literal)) ;) (expression_statement "*(char *)(puVar18 + 1) = (char)uVar23;" (assignment_expression "*(char *)(puVar18 + 1) = (char)uVar23" (pointer_expression "*(char *)(puVar18 + 1)" * (cast_expression "(char *)(puVar18 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 1)" ( (binary_expression "puVar18 + 1" identifier + number_literal) )))) = (cast_expression "(char)uVar23" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" identifier = identifier) ;) }) while (parenthesized_expression "(uVar21 < uVar13)" ( (binary_expression "uVar21 < uVar13" identifier < identifier) )) ;) (expression_statement "lVar19 = (long)puVar17 - lVar19;" (assignment_expression "lVar19 = (long)puVar17 - lVar19" identifier = (binary_expression "(long)puVar17 - lVar19" (cast_expression "(long)puVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier)) ;) }))) (if_statement "if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }" if (parenthesized_expression "(lVar3 == lVar19)" ( (binary_expression "lVar3 == lVar19" identifier == identifier) )) (compound_statement "{\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }" { (if_statement "if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }" if (parenthesized_expression "(lVar8 == (long)local_60 - lVar20)" ( (binary_expression "lVar8 == (long)local_60 - lVar20" identifier == (binary_expression "(long)local_60 - lVar20" (cast_expression "(long)local_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier)) )) (compound_statement "{\n            return uVar23;\n          }" { (return_statement "return uVar23;" return identifier ;) })) (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xb09,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write")" identifier (argument_list "("../../gold/x86_64.cc",0xb08,"do_write")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""do_write"" " string_content ") ))) ;) })) (goto_statement "goto LAB_0016e2fe;" goto statement_identifier ;) })) })) (expression_statement "FUN_0016cec0();" (call_expression "FUN_0016cec0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0016e2fe:\n                    \n  FUN_00199900("../../gold/output.h",0xc5,"address");" statement_identifier : (expression_statement "FUN_00199900("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00199900("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;)) })))
(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 TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * 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 { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression 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 LIT < IDENT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression 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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression 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 ") ))) ;)) })) (expression_statement (assignment_expression IDENT = (binary_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 LIT < IDENT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_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 (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ))) )) (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) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (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) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (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) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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) )))) = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + IDENT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = 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 = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) + IDENT) )) - (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (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) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (goto_statement goto statement_identifier ;) })) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })))
(function_definition "ulong FUN_0016df70(long param_1,long param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  undefined8 uVar6;\n  char cVar7;\n  long lVar8;\n  undefined8 uVar9;\n  uint uVar10;\n  undefined8 *puVar11;\n  long lVar12;\n  uint uVar13;\n  long *plVar14;\n  long lVar15;\n  int iVar16;\n  undefined8 *puVar17;\n  undefined8 *puVar18;\n  long lVar19;\n  long lVar20;\n  uint uVar21;\n  undefined8 uVar22;\n  ulong uVar23;\n  long *local_60;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }\n  lVar19 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)(param_1 + 0x10);\n  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  FUN_0016cec0();\nLAB_0016e2fe:\n                    \n  FUN_00199900("../../gold/output.h",0xc5,"address");\n}" (type_identifier "ulong") (function_declarator "FUN_0016df70(long param_1,long param_2)" (identifier "FUN_0016df70") (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  byte bVar1;\n  byte bVar2;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  undefined8 uVar6;\n  char cVar7;\n  long lVar8;\n  undefined8 uVar9;\n  uint uVar10;\n  undefined8 *puVar11;\n  long lVar12;\n  uint uVar13;\n  long *plVar14;\n  long lVar15;\n  int iVar16;\n  undefined8 *puVar17;\n  undefined8 *puVar18;\n  long lVar19;\n  long lVar20;\n  uint uVar21;\n  undefined8 uVar22;\n  ulong uVar23;\n  long *local_60;\n  \n  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }\n  lVar19 = *(long *)(param_1 + 0x18);\n  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;\n  lVar3 = *(long *)(param_1 + 0x10);\n  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }\n  FUN_0016cec0();\nLAB_0016e2fe:\n                    \n  FUN_00199900("../../gold/output.h",0xc5,"address");\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined8 uVar9;" (type_identifier "undefined8") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined8 *puVar11;" (type_identifier "undefined8") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "long *plVar14;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar14" (* "*") (identifier "plVar14")) (; ";")) (declaration "long lVar15;" (sized_type_specifier "long" (long "long")) (identifier "lVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "undefined8 *puVar17;" (type_identifier "undefined8") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "undefined8 *puVar18;" (type_identifier "undefined8") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "long lVar19;" (sized_type_specifier "long" (long "long")) (identifier "lVar19") (; ";")) (declaration "long lVar20;" (sized_type_specifier "long" (long "long")) (identifier "lVar20") (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "undefined8 uVar22;" (type_identifier "undefined8") (identifier "uVar22") (; ";")) (declaration "ulong uVar23;" (type_identifier "ulong") (identifier "uVar23") (; ";")) (declaration "long *local_60;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x20) & 4) == 0) {\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\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 "{\nLAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");\n  }" ({ "{") (labeled_statement "LAB_0016e316:\n                    \n    FUN_00199900("../../gold/output.h",0xe3,"offset");" (statement_identifier "LAB_0016e316") (: ":") (expression_statement "FUN_00199900("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_00199900("../../gold/output.h",0xe3,"offset")" (identifier "FUN_00199900") (argument_list "("../../gold/output.h",0xe3,"offset")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) () ")"))) (; ";"))) (} "}"))) (expression_statement "lVar19 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar19 = *(long *)(param_1 + 0x18)" (identifier "lVar19") (= "=") (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 ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;" (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")) () ")")) (goto_statement "goto LAB_0016e2e1;" (goto "goto") (statement_identifier "LAB_0016e2e1") (; ";"))) (expression_statement "lVar3 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar3 = *(long *)(param_1 + 0x10)" (identifier "lVar3") (= "=") (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 ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }" (if "if") (parenthesized_expression "((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10)))" (( "(") (binary_expression "(-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar19)" (( "(") (binary_expression "-1 < lVar19" (number_literal "-1") (< "<") (identifier "lVar19")) () ")")) (&& "&&") (parenthesized_expression "(lVar3 + lVar19 <= *(long *)(param_2 + 0x10))" (( "(") (binary_expression "lVar3 + lVar19 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar3 + lVar19" (identifier "lVar3") (+ "+") (identifier "lVar19")) (<= "<=") (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")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n    lVar15 = *(long *)(param_1 + 0x58);\n    lVar19 = lVar19 + *(long *)(param_2 + 0x18);\n    lVar12 = *(long *)(param_1 + 0x60);\n    lVar4 = *(long *)(param_1 + 0x50);\n    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;\n    lVar20 = *(long *)(lVar15 + 0x18);\n    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);\n    bVar1 = *(byte *)(lVar15 + 0x20);\n    if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }\n    if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }\n    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);\n    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }\n  }" ({ "{") (expression_statement "lVar15 = *(long *)(param_1 + 0x58);" (assignment_expression "lVar15 = *(long *)(param_1 + 0x58)" (identifier "lVar15") (= "=") (pointer_expression "*(long *)(param_1 + 0x58)" (* "*") (cast_expression "(long *)(param_1 + 0x58)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "lVar19 = lVar19 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar19 = lVar19 + *(long *)(param_2 + 0x18)" (identifier "lVar19") (= "=") (binary_expression "lVar19 + *(long *)(param_2 + 0x18)" (identifier "lVar19") (+ "+") (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 "lVar12 = *(long *)(param_1 + 0x60);" (assignment_expression "lVar12 = *(long *)(param_1 + 0x60)" (identifier "lVar12") (= "=") (pointer_expression "*(long *)(param_1 + 0x60)" (* "*") (cast_expression "(long *)(param_1 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 0x50);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x50)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0x50)" (* "*") (cast_expression "(long *)(param_1 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;" (if "if") (parenthesized_expression "((*(byte *)(lVar15 + 0x20) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(lVar15 + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(lVar15 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(lVar15 + 0x20) & 4" (pointer_expression "*(byte *)(lVar15 + 0x20)" (* "*") (cast_expression "(byte *)(lVar15 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar15 + 0x20)" (( "(") (binary_expression "lVar15 + 0x20" (identifier "lVar15") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0016e316;" (goto "goto") (statement_identifier "LAB_0016e316") (; ";"))) (expression_statement "lVar20 = *(long *)(lVar15 + 0x18);" (assignment_expression "lVar20 = *(long *)(lVar15 + 0x18)" (identifier "lVar20") (= "=") (pointer_expression "*(long *)(lVar15 + 0x18)" (* "*") (cast_expression "(long *)(lVar15 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar15 + 0x18)" (( "(") (binary_expression "lVar15 + 0x18" (identifier "lVar15") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "cVar7 = FUN_0021a540(PTR_DAT_003f85c0);" (assignment_expression "cVar7 = FUN_0021a540(PTR_DAT_003f85c0)" (identifier "cVar7") (= "=") (call_expression "FUN_0021a540(PTR_DAT_003f85c0)" (identifier "FUN_0021a540") (argument_list "(PTR_DAT_003f85c0)" (( "(") (identifier "PTR_DAT_003f85c0") () ")")))) (; ";")) (expression_statement "bVar1 = *(byte *)(lVar15 + 0x20);" (assignment_expression "bVar1 = *(byte *)(lVar15 + 0x20)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(lVar15 + 0x20)" (* "*") (cast_expression "(byte *)(lVar15 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar15 + 0x20)" (( "(") (binary_expression "lVar15 + 0x20" (identifier "lVar15") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (cVar7 == '\0') {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }\n    else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" (if "if") (parenthesized_expression "(cVar7 == '\0')" (( "(") (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n      if ((bVar2 & 4) == 0) goto LAB_0016e316;\n      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }\n    }" ({ "{") (if_statement "if ((bVar1 & 2) == 0) goto LAB_0016e2e1;" (if "if") (parenthesized_expression "((bVar1 & 2) == 0)" (( "(") (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0016e2e1;" (goto "goto") (statement_identifier "LAB_0016e2e1") (; ";"))) (expression_statement "lVar8 = *(long *)(lVar15 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar15 + 0x10)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar15 + 0x10)" (* "*") (cast_expression "(long *)(lVar15 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar15 + 0x10)" (( "(") (binary_expression "lVar15 + 0x10" (identifier "lVar15") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "bVar2 = *(byte *)(lVar12 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar12 + 0x20)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(lVar12 + 0x20)" (* "*") (cast_expression "(byte *)(lVar12 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x20)" (( "(") (binary_expression "lVar12 + 0x20" (identifier "lVar12") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((bVar2 & 4) == 0) goto LAB_0016e316;" (if "if") (parenthesized_expression "((bVar2 & 4) == 0)" (( "(") (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0016e316;" (goto "goto") (statement_identifier "LAB_0016e316") (; ";"))) (if_statement "if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }" (if "if") (parenthesized_expression "(lVar20 + lVar8 != *(long *)(lVar12 + 0x18))" (( "(") (binary_expression "lVar20 + lVar8 != *(long *)(lVar12 + 0x18)" (binary_expression "lVar20 + lVar8" (identifier "lVar20") (+ "+") (identifier "lVar8")) (!= "!=") (pointer_expression "*(long *)(lVar12 + 0x18)" (* "*") (cast_expression "(long *)(lVar12 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x18)" (( "(") (binary_expression "lVar12 + 0x18" (identifier "lVar12") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");\n      }" ({ "{") (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write")" (identifier "FUN_00199900") (argument_list "("../../gold/x86_64.cc",0xac2,"do_write")" (( "(") (string_literal ""../../gold/x86_64.cc"" (" """) (string_content "../../gold/x86_64.cc") (" """)) (, ",") (number_literal "0xac2") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" (else "else") (compound_statement "{\n      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;\n      lVar8 = *(long *)(lVar15 + 0x10);\n      bVar2 = *(byte *)(lVar12 + 0x20);\n    }" ({ "{") (if_statement "if ((bVar1 & 2) == 0) goto LAB_0016e2e1;" (if "if") (parenthesized_expression "((bVar1 & 2) == 0)" (( "(") (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0016e2e1;" (goto "goto") (statement_identifier "LAB_0016e2e1") (; ";"))) (expression_statement "lVar8 = *(long *)(lVar15 + 0x10);" (assignment_expression "lVar8 = *(long *)(lVar15 + 0x10)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar15 + 0x10)" (* "*") (cast_expression "(long *)(lVar15 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar15 + 0x10)" (( "(") (binary_expression "lVar15 + 0x10" (identifier "lVar15") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "bVar2 = *(byte *)(lVar12 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar12 + 0x20)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(lVar12 + 0x20)" (* "*") (cast_expression "(byte *)(lVar12 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x20)" (( "(") (binary_expression "lVar12 + 0x20" (identifier "lVar12") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((bVar2 & 2) == 0) {\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }" (if "if") (parenthesized_expression "((bVar2 & 2) == 0)" (( "(") (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" (( "(") (binary_expression "bVar2 & 2" (identifier "bVar2") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");\n    }" ({ "{") (labeled_statement "LAB_0016e2e1:\n                    \n      FUN_00199900("../../gold/output.h",0xcf,"data_size");" (statement_identifier "LAB_0016e2e1") (: ":") (expression_statement "FUN_00199900("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_00199900("../../gold/output.h",0xcf,"data_size")" (identifier "FUN_00199900") (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 "lVar8 = lVar8 + *(long *)(lVar12 + 0x10);" (assignment_expression "lVar8 = lVar8 + *(long *)(lVar12 + 0x10)" (identifier "lVar8") (= "=") (binary_expression "lVar8 + *(long *)(lVar12 + 0x10)" (identifier "lVar8") (+ "+") (pointer_expression "*(long *)(lVar12 + 0x10)" (* "*") (cast_expression "(long *)(lVar12 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x10)" (( "(") (binary_expression "lVar12 + 0x10" (identifier "lVar12") (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (if_statement "if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }" (if "if") (parenthesized_expression "((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10)))" (( "(") (binary_expression "(-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))" (parenthesized_expression "(-1 < lVar20)" (( "(") (binary_expression "-1 < lVar20" (number_literal "-1") (< "<") (identifier "lVar20")) () ")")) (&& "&&") (parenthesized_expression "(lVar8 + lVar20 <= *(long *)(param_2 + 0x10))" (( "(") (binary_expression "lVar8 + lVar20 <= *(long *)(param_2 + 0x10)" (binary_expression "lVar8 + lVar20" (identifier "lVar8") (+ "+") (identifier "lVar20")) (<= "<=") (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")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      lVar20 = lVar20 + *(long *)(param_2 + 0x18);\n      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }\n      goto LAB_0016e2fe;\n    }" ({ "{") (expression_statement "lVar20 = lVar20 + *(long *)(param_2 + 0x18);" (assignment_expression "lVar20 = lVar20 + *(long *)(param_2 + 0x18)" (identifier "lVar20") (= "=") (binary_expression "lVar20 + *(long *)(param_2 + 0x18)" (identifier "lVar20") (+ "+") (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")) () ")")))))) (; ";")) (if_statement "if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }" (if "if") (parenthesized_expression "((((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0))" (( "(") (binary_expression "(((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&\n         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)" (parenthesized_expression "(((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0))" (( "(") (binary_expression "((*(byte *)(param_1 + 0x20) & 1) != 0) &&\n          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)" (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 1" (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 "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)" (( "(") (comma_expression "uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0" (assignment_expression "uVar23 = *(ulong *)(param_1 + 8)" (identifier "uVar23") (= "=") (pointer_expression "*(ulong *)(param_1 + 8)" (* "*") (cast_expression "(ulong *)(param_1 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (, ",") (binary_expression "(*(byte *)(lVar4 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(lVar4 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(lVar4 + 0x20) & 1" (pointer_expression "*(byte *)(lVar4 + 0x20)" (* "*") (cast_expression "(byte *)(lVar4 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)" (( "(") (comma_expression "uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0" (assignment_expression "uVar9 = *(undefined8 *)(lVar4 + 8)" (identifier "uVar9") (= "=") (pointer_expression "*(undefined8 *)(lVar4 + 8)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")"))))) (, ",") (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        lVar15 = *(long *)(lVar15 + 8);\n        FUN_0016bb10(param_1,lVar19,lVar15);\n        uVar6 = _UNK_0033ed28;\n        uVar22 = _DAT_0033ed20;\n        puVar18 = (undefined8 *)(lVar19 + 0x10);\n        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);\n        local_60 = (long *)(lVar20 + 0x18);\n        if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }\n        if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }\n                    \n        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");\n      }" ({ "{") (expression_statement "lVar15 = *(long *)(lVar15 + 8);" (assignment_expression "lVar15 = *(long *)(lVar15 + 8)" (identifier "lVar15") (= "=") (pointer_expression "*(long *)(lVar15 + 8)" (* "*") (cast_expression "(long *)(lVar15 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar15 + 8)" (( "(") (binary_expression "lVar15 + 8" (identifier "lVar15") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "FUN_0016bb10(param_1,lVar19,lVar15);" (call_expression "FUN_0016bb10(param_1,lVar19,lVar15)" (identifier "FUN_0016bb10") (argument_list "(param_1,lVar19,lVar15)" (( "(") (identifier "param_1") (, ",") (identifier "lVar19") (, ",") (identifier "lVar15") () ")"))) (; ";")) (expression_statement "uVar6 = _UNK_0033ed28;" (assignment_expression "uVar6 = _UNK_0033ed28" (identifier "uVar6") (= "=") (identifier "_UNK_0033ed28")) (; ";")) (expression_statement "uVar22 = _DAT_0033ed20;" (assignment_expression "uVar22 = _DAT_0033ed20" (identifier "uVar22") (= "=") (identifier "_DAT_0033ed20")) (; ";")) (expression_statement "puVar18 = (undefined8 *)(lVar19 + 0x10);" (assignment_expression "puVar18 = (undefined8 *)(lVar19 + 0x10)" (identifier "puVar18") (= "=") (cast_expression "(undefined8 *)(lVar19 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar19 + 0x10)" (( "(") (binary_expression "lVar19 + 0x10" (identifier "lVar19") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);" (assignment_expression "uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68)" (identifier "uVar13") (= "=") (binary_expression "*(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68)" (pointer_expression "*(int *)(param_1 + 0x6c)" (* "*") (cast_expression "(int *)(param_1 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x68)" (* "*") (cast_expression "(int *)(param_1 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))))) (; ";")) (expression_statement "local_60 = (long *)(lVar20 + 0x18);" (assignment_expression "local_60 = (long *)(lVar20 + 0x18)" (identifier "local_60") (= "=") (cast_expression "(long *)(lVar20 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar20 + 0x18)" (( "(") (binary_expression "lVar20 + 0x18" (identifier "lVar20") (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (uVar13 == 0) {\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }\n        else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" (if "if") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }\n        }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x70) == -1) {\n            lVar19 = 0x10;\n          }\n          else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x70) == -1)" (( "(") (binary_expression "*(int *)(param_1 + 0x70) == -1" (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            lVar19 = 0x10;\n          }" ({ "{") (expression_statement "lVar19 = 0x10;" (assignment_expression "lVar19 = 0x10" (identifier "lVar19") (= "=") (number_literal "0x10")) (; ";")) (} "}")) (else_clause "else {\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" (else "else") (compound_statement "{\n            uVar23 = 0x10;\n            lVar19 = 0x20;\n            FUN_0016bb50();\n          }" ({ "{") (expression_statement "uVar23 = 0x10;" (assignment_expression "uVar23 = 0x10" (identifier "uVar23") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "lVar19 = 0x20;" (assignment_expression "lVar19 = 0x20" (identifier "lVar19") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "FUN_0016bb50();" (call_expression "FUN_0016bb50()" (identifier "FUN_0016bb50") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" (else "else") (compound_statement "{\n          puVar11 = puVar18;\n          plVar14 = local_60;\n          uVar21 = 0;\n          do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);\n          lVar12 = (ulong)(uVar13 - 1) + 1;\n          iVar16 = (uVar13 + 1) * 0x10;\n          puVar18 = puVar18 + lVar12 * 2;\n          local_60 = local_60 + lVar12;\n          puVar11 = puVar18;\n          if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }\n          lVar15 = lVar15 - uVar23;\n          uVar21 = 0;\n          puVar18 = puVar11;\n          uVar9 = _DAT_0033ed00;\n          uVar22 = _UNK_0033ed08;\n          do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);\n          lVar19 = (long)puVar17 - lVar19;\n        }" ({ "{") (expression_statement "puVar11 = puVar18;" (assignment_expression "puVar11 = puVar18" (identifier "puVar11") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "plVar14 = local_60;" (assignment_expression "plVar14 = local_60" (identifier "plVar14") (= "=") (identifier "local_60")) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          } while (uVar10 != uVar13);" (do "do") (compound_statement "{\n            *puVar11 = uVar22;\n            puVar11[1] = uVar6;\n            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);\n            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);\n            *(char *)((long)puVar11 + 5) = (char)uVar21;\n            uVar10 = uVar21 + 1;\n            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);\n            iVar16 = (int)puVar11;\n            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;\n            puVar11 = puVar11 + 2;\n            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;\n            plVar14 = plVar14 + 1;\n            uVar21 = uVar10;\n          }" ({ "{") (expression_statement "*puVar11 = uVar22;" (assignment_expression "*puVar11 = uVar22" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "puVar11[1] = uVar6;" (assignment_expression "puVar11[1] = uVar6" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);" (assignment_expression "*(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8)" (pointer_expression "*(char *)((long)puVar11 + 6)" (* "*") (cast_expression "(char *)((long)puVar11 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar11 + 6)" (( "(") (binary_expression "(long)puVar11 + 6" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (number_literal "6")) () ")")))) (= "=") (cast_expression "(char)(uVar21 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar21 >> 8)" (( "(") (binary_expression "uVar21 >> 8" (identifier "uVar21") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);" (assignment_expression "*(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18)" (pointer_expression "*(char *)(puVar11 + 1)" (* "*") (cast_expression "(char *)(puVar11 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 1)" (( "(") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)(uVar21 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar21 >> 0x18)" (( "(") (binary_expression "uVar21 >> 0x18" (identifier "uVar21") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)((long)puVar11 + 5) = (char)uVar21;" (assignment_expression "*(char *)((long)puVar11 + 5) = (char)uVar21" (pointer_expression "*(char *)((long)puVar11 + 5)" (* "*") (cast_expression "(char *)((long)puVar11 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar11 + 5)" (( "(") (binary_expression "(long)puVar11 + 5" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (number_literal "5")) () ")")))) (= "=") (cast_expression "(char)uVar21" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar21"))) (; ";")) (expression_statement "uVar10 = uVar21 + 1;" (assignment_expression "uVar10 = uVar21 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);" (assignment_expression "*(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10)" (pointer_expression "*(char *)((long)puVar11 + 7)" (* "*") (cast_expression "(char *)((long)puVar11 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar11 + 7)" (( "(") (binary_expression "(long)puVar11 + 7" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)(uVar21 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar21 >> 0x10)" (( "(") (binary_expression "uVar21 >> 0x10" (identifier "uVar21") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "iVar16 = (int)puVar11;" (assignment_expression "iVar16 = (int)puVar11" (identifier "iVar16") (= "=") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11"))) (; ";")) (expression_statement "*(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;" (assignment_expression "*(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16" (pointer_expression "*(int *)((long)puVar11 + 0xb)" (* "*") (cast_expression "(int *)((long)puVar11 + 0xb)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar11 + 0xb)" (( "(") (binary_expression "(long)puVar11 + 0xb" (cast_expression "(long)puVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar11")) (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "((int)puVar18 + -0x1f) - iVar16" (parenthesized_expression "((int)puVar18 + -0x1f)" (( "(") (binary_expression "(int)puVar18 + -0x1f" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "-0x1f")) () ")")) (- "-") (identifier "iVar16"))) (; ";")) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 2" (identifier "puVar11") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;" (assignment_expression "*plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23" (pointer_expression "*plVar14" (* "*") (identifier "plVar14")) (= "=") (binary_expression "(uint)((0x10 - (int)puVar18) + iVar16) + uVar23" (call_expression "(uint)((0x10 - (int)puVar18) + iVar16)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((0x10 - (int)puVar18) + iVar16)" (( "(") (binary_expression "(0x10 - (int)puVar18) + iVar16" (parenthesized_expression "(0x10 - (int)puVar18)" (( "(") (binary_expression "0x10 - (int)puVar18" (number_literal "0x10") (- "-") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")")) (+ "+") (identifier "iVar16")) () ")"))) (+ "+") (identifier "uVar23"))) (; ";")) (expression_statement "plVar14 = plVar14 + 1;" (assignment_expression "plVar14 = plVar14 + 1" (identifier "plVar14") (= "=") (binary_expression "plVar14 + 1" (identifier "plVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar21 = uVar10;" (assignment_expression "uVar21 = uVar10" (identifier "uVar21") (= "=") (identifier "uVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar10 != uVar13)" (( "(") (binary_expression "uVar10 != uVar13" (identifier "uVar10") (!= "!=") (identifier "uVar13")) () ")")) (; ";")) (expression_statement "lVar12 = (ulong)(uVar13 - 1) + 1;" (assignment_expression "lVar12 = (ulong)(uVar13 - 1) + 1" (identifier "lVar12") (= "=") (binary_expression "(ulong)(uVar13 - 1) + 1" (call_expression "(ulong)(uVar13 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar13 - 1)" (( "(") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar16 = (uVar13 + 1) * 0x10;" (assignment_expression "iVar16 = (uVar13 + 1) * 0x10" (identifier "iVar16") (= "=") (binary_expression "(uVar13 + 1) * 0x10" (parenthesized_expression "(uVar13 + 1)" (( "(") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x10"))) (; ";")) (expression_statement "puVar18 = puVar18 + lVar12 * 2;" (assignment_expression "puVar18 = puVar18 + lVar12 * 2" (identifier "puVar18") (= "=") (binary_expression "puVar18 + lVar12 * 2" (identifier "puVar18") (+ "+") (binary_expression "lVar12 * 2" (identifier "lVar12") (* "*") (number_literal "2")))) (; ";")) (expression_statement "local_60 = local_60 + lVar12;" (assignment_expression "local_60 = local_60 + lVar12" (identifier "local_60") (= "=") (binary_expression "local_60 + lVar12" (identifier "local_60") (+ "+") (identifier "lVar12"))) (; ";")) (expression_statement "puVar11 = puVar18;" (assignment_expression "puVar11 = puVar18" (identifier "puVar11") (= "=") (identifier "puVar18")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x70) != -1) {\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x70) != -1)" (( "(") (binary_expression "*(int *)(param_1 + 0x70) != -1" (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n            puVar11 = puVar18 + 2;\n            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);\n          }" ({ "{") (expression_statement "puVar11 = puVar18 + 2;" (assignment_expression "puVar11 = puVar18 + 2" (identifier "puVar11") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);" (call_expression "FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16)" (identifier "FUN_0016bb50") (argument_list "(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16)" (( "(") (identifier "param_1") (, ",") (identifier "puVar18") (, ",") (identifier "lVar15") (, ",") (identifier "uVar23") (, ",") (identifier "uVar9") (, ",") (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (, ",") (identifier "iVar16") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar15 = lVar15 - uVar23;" (assignment_expression "lVar15 = lVar15 - uVar23" (identifier "lVar15") (= "=") (binary_expression "lVar15 - uVar23" (identifier "lVar15") (- "-") (identifier "uVar23"))) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar18 = puVar11;" (assignment_expression "puVar18 = puVar11" (identifier "puVar18") (= "=") (identifier "puVar11")) (; ";")) (expression_statement "uVar9 = _DAT_0033ed00;" (assignment_expression "uVar9 = _DAT_0033ed00" (identifier "uVar9") (= "=") (identifier "_DAT_0033ed00")) (; ";")) (expression_statement "uVar22 = _UNK_0033ed08;" (assignment_expression "uVar22 = _UNK_0033ed08" (identifier "uVar22") (= "=") (identifier "_UNK_0033ed08")) (; ";")) (do_statement "do {\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          } while (uVar21 < uVar13);" (do "do") (compound_statement "{\n            iVar5 = uVar21 * 8;\n            uVar21 = uVar21 + 1;\n            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);\n            uVar23 = lVar12 - 0xb;\n            if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }\n            *puVar18 = uVar9;\n            puVar18[1] = uVar22;\n            puVar17 = puVar18 + 2;\n            *(char *)((long)puVar18 + 7) = (char)uVar23;\n            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);\n            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);\n            uVar23 = uVar23 >> 8 & 0xffffff;\n            *(char *)(puVar18 + 1) = (char)uVar23;\n            puVar18 = puVar17;\n          }" ({ "{") (expression_statement "iVar5 = uVar21 * 8;" (assignment_expression "iVar5 = uVar21 * 8" (identifier "iVar5") (= "=") (binary_expression "uVar21 * 8" (identifier "uVar21") (* "*") (number_literal "8"))) (; ";")) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" (identifier "uVar21") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);" (assignment_expression "lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" (identifier "lVar12") (= "=") (binary_expression "((ulong)(iVar5 + 0x18) + lVar15) -\n                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" (parenthesized_expression "((ulong)(iVar5 + 0x18) + lVar15)" (( "(") (binary_expression "(ulong)(iVar5 + 0x18) + lVar15" (call_expression "(ulong)(iVar5 + 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar5 + 0x18)" (( "(") (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) () ")"))) (+ "+") (identifier "lVar15")) () ")")) (- "-") (call_expression "(ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "((iVar16 - (int)puVar11) + (int)puVar18)" (( "(") (binary_expression "(iVar16 - (int)puVar11) + (int)puVar18" (parenthesized_expression "(iVar16 - (int)puVar11)" (( "(") (binary_expression "iVar16 - (int)puVar11" (identifier "iVar16") (- "-") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11"))) () ")")) (+ "+") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")"))))) (; ";")) (expression_statement "uVar23 = lVar12 - 0xb;" (assignment_expression "uVar23 = lVar12 - 0xb" (identifier "uVar23") (= "=") (binary_expression "lVar12 - 0xb" (identifier "lVar12") (- "-") (number_literal "0xb"))) (; ";")) (if_statement "if (0xffffffff < lVar12 + 0x7ffffff5U) {\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }" (if "if") (parenthesized_expression "(0xffffffff < lVar12 + 0x7ffffff5U)" (( "(") (binary_expression "0xffffffff < lVar12 + 0x7ffffff5U" (number_literal "0xffffffff") (< "<") (binary_expression "lVar12 + 0x7ffffff5U" (identifier "lVar12") (+ "+") (number_literal "0x7ffffff5U"))) () ")")) (compound_statement "{\n              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");\n              FUN_00191870(uVar9,uVar21);\n              uVar9 = _DAT_0033ed00;\n              uVar22 = _UNK_0033ed08;\n            }" ({ "{") (expression_statement "uVar9 = gettext("PC-relative offset overflow in APLT entry %d");" (assignment_expression "uVar9 = gettext("PC-relative offset overflow in APLT entry %d")" (identifier "uVar9") (= "=") (call_expression "gettext("PC-relative offset overflow in APLT entry %d")" (identifier "gettext") (argument_list "("PC-relative offset overflow in APLT entry %d")" (( "(") (string_literal ""PC-relative offset overflow in APLT entry %d"" (" """) (string_content "PC-relative offset overflow in APLT entry %d") (" """)) () ")")))) (; ";")) (expression_statement "FUN_00191870(uVar9,uVar21);" (call_expression "FUN_00191870(uVar9,uVar21)" (identifier "FUN_00191870") (argument_list "(uVar9,uVar21)" (( "(") (identifier "uVar9") (, ",") (identifier "uVar21") () ")"))) (; ";")) (expression_statement "uVar9 = _DAT_0033ed00;" (assignment_expression "uVar9 = _DAT_0033ed00" (identifier "uVar9") (= "=") (identifier "_DAT_0033ed00")) (; ";")) (expression_statement "uVar22 = _UNK_0033ed08;" (assignment_expression "uVar22 = _UNK_0033ed08" (identifier "uVar22") (= "=") (identifier "_UNK_0033ed08")) (; ";")) (} "}"))) (expression_statement "*puVar18 = uVar9;" (assignment_expression "*puVar18 = uVar9" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar18[1] = uVar22;" (assignment_expression "puVar18[1] = uVar22" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "puVar17 = puVar18 + 2;" (assignment_expression "puVar17 = puVar18 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(char *)((long)puVar18 + 7) = (char)uVar23;" (assignment_expression "*(char *)((long)puVar18 + 7) = (char)uVar23" (pointer_expression "*(char *)((long)puVar18 + 7)" (* "*") (cast_expression "(char *)((long)puVar18 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar18 + 7)" (( "(") (binary_expression "(long)puVar18 + 7" (cast_expression "(long)puVar18" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar18")) (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)uVar23" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar23"))) (; ";")) (expression_statement "*(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);" (assignment_expression "*(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18)" (pointer_expression "*(char *)((long)puVar18 + 10)" (* "*") (cast_expression "(char *)((long)puVar18 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar18 + 10)" (( "(") (binary_expression "(long)puVar18 + 10" (cast_expression "(long)puVar18" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar18")) (+ "+") (number_literal "10")) () ")")))) (= "=") (cast_expression "(char)(uVar23 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar23 >> 0x18)" (( "(") (binary_expression "uVar23 >> 0x18" (identifier "uVar23") (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);" (assignment_expression "*(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10)" (pointer_expression "*(char *)((long)puVar18 + 9)" (* "*") (cast_expression "(char *)((long)puVar18 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar18 + 9)" (( "(") (binary_expression "(long)puVar18 + 9" (cast_expression "(long)puVar18" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar18")) (+ "+") (number_literal "9")) () ")")))) (= "=") (cast_expression "(char)(uVar23 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar23 >> 0x10)" (( "(") (binary_expression "uVar23 >> 0x10" (identifier "uVar23") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uVar23 = uVar23 >> 8 & 0xffffff;" (assignment_expression "uVar23 = uVar23 >> 8 & 0xffffff" (identifier "uVar23") (= "=") (binary_expression "uVar23 >> 8 & 0xffffff" (binary_expression "uVar23 >> 8" (identifier "uVar23") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xffffff"))) (; ";")) (expression_statement "*(char *)(puVar18 + 1) = (char)uVar23;" (assignment_expression "*(char *)(puVar18 + 1) = (char)uVar23" (pointer_expression "*(char *)(puVar18 + 1)" (* "*") (cast_expression "(char *)(puVar18 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 1)" (( "(") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)uVar23" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar23"))) (; ";")) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" (identifier "puVar18") (= "=") (identifier "puVar17")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar21 < uVar13)" (( "(") (binary_expression "uVar21 < uVar13" (identifier "uVar21") (< "<") (identifier "uVar13")) () ")")) (; ";")) (expression_statement "lVar19 = (long)puVar17 - lVar19;" (assignment_expression "lVar19 = (long)puVar17 - lVar19" (identifier "lVar19") (= "=") (binary_expression "(long)puVar17 - lVar19" (cast_expression "(long)puVar17" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar17")) (- "-") (identifier "lVar19"))) (; ";")) (} "}")))) (if_statement "if (lVar3 == lVar19) {\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }" (if "if") (parenthesized_expression "(lVar3 == lVar19)" (( "(") (binary_expression "lVar3 == lVar19" (identifier "lVar3") (== "==") (identifier "lVar19")) () ")")) (compound_statement "{\n          if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }\n                    \n          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");\n        }" ({ "{") (if_statement "if (lVar8 == (long)local_60 - lVar20) {\n            return uVar23;\n          }" (if "if") (parenthesized_expression "(lVar8 == (long)local_60 - lVar20)" (( "(") (binary_expression "lVar8 == (long)local_60 - lVar20" (identifier "lVar8") (== "==") (binary_expression "(long)local_60 - lVar20" (cast_expression "(long)local_60" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_60")) (- "-") (identifier "lVar20"))) () ")")) (compound_statement "{\n            return uVar23;\n          }" ({ "{") (return_statement "return uVar23;" (return "return") (identifier "uVar23") (; ";")) (} "}"))) (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write")" (identifier "FUN_00199900") (argument_list "("../../gold/x86_64.cc",0xb09,"do_write")" (( "(") (string_literal ""../../gold/x86_64.cc"" (" """) (string_content "../../gold/x86_64.cc") (" """)) (, ",") (number_literal "0xb09") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");" (call_expression "FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write")" (identifier "FUN_00199900") (argument_list "("../../gold/x86_64.cc",0xb08,"do_write")" (( "(") (string_literal ""../../gold/x86_64.cc"" (" """) (string_content "../../gold/x86_64.cc") (" """)) (, ",") (number_literal "0xb08") (, ",") (string_literal ""do_write"" (" """) (string_content "do_write") (" """)) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0016e2fe;" (goto "goto") (statement_identifier "LAB_0016e2fe") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0016cec0();" (call_expression "FUN_0016cec0()" (identifier "FUN_0016cec0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0016e2fe:\n                    \n  FUN_00199900("../../gold/output.h",0xc5,"address");" (statement_identifier "LAB_0016e2fe") (: ":") (expression_statement "FUN_00199900("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00199900("../../gold/output.h",0xc5,"address")" (identifier "FUN_00199900") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";"))) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void do_write(Output_data_plt_x86_64_ibt<64> * this, Output_file * of)
    */

void __thiscall
anon_unknown.dwarf_353119::type_1<64>::function_1
          (type_1<64> *this,type_2 *of)

{
  type_3 var_5;
  type_3 var_8;
  long var_3;
  long var_10;
  long var_6;
  type_4 *var_13;
  type_5 var_19;
  type_5 got_base;
  bool bVar7;
  long var_7;
  long var_4;
  char *format;
  type_6 var_21;
  type_2 *in_RCX;
  int var_18;
  size_t in_RDX;
  type_4 *var_16;
  long var_2;
  type_6 var_14;
  type_4 *var_22;
  type_2 *start;
  type_1<64> *var_9;
  long *var_20;
  type_5 var_24;
  type_6 var_17;
  type_4 *puVar19;
  type_4 *var_12;
  type_7 uVar20;
  type_7 uVar21;
  long *var_23;
  
  if ((this->field_0x20 & 4) == 0) {
LAB_0016e316:
                    /* WARNING: Subroutine does not return */
    gold::var_1("../../gold/output.h",0xe3,"offset");
  }
  var_2 = *(long *)&this->field_0x18;
  if ((this->field_0x20 & 2) == 0) goto LAB_0016e2e1;
  var_3 = *(long *)&this->field_0x10;
  start = of;
  var_9 = this;
  if ((-1 < var_2) && (var_3 + var_2 <= of->file_size_)) {
    var_4 = *(long *)&this->field_0x58;
    var_12 = of->base_ + var_2;
    var_2 = *(long *)&this->field_0x60;
    var_10 = *(long *)&this->field_0x50;
    if ((*(type_3 *)(var_4 + 0x20) & 4) == 0) goto LAB_0016e316;
    var_6 = *(long *)(var_4 + 0x18);
    pOVar16 = (type_1<64> *)gold::parameters;
    bVar7 = gold::Parameters::incremental_update(gold::parameters);
    var_5 = *(type_3 *)(var_4 + 0x20);
    in_RDX = (size_t)var_5;
    if (bVar7) {
      if ((var_5 & 2) == 0) goto LAB_0016e2e1;
      var_7 = *(long *)(var_4 + 0x10);
      var_8 = *(type_3 *)(var_2 + 0x20);
    }
    else {
      if ((var_5 & 2) == 0) goto LAB_0016e2e1;
      var_7 = *(long *)(var_4 + 0x10);
      var_8 = *(type_3 *)(var_2 + 0x20);
      var_9 = (type_1<64> *)(var_6 + var_7);
      if ((var_8 & 4) == 0) goto LAB_0016e316;
      if (var_9 != *(type_1<64> **)(var_2 + 0x18)) {
                    /* WARNING: Subroutine does not return */
        gold::var_1("../../gold/x86_64.cc",0xac2,"do_write");
      }
    }
    start = (type_2 *)(type_9)(var_8 & 2);
    if ((var_8 & 2) == 0) {
LAB_0016e2e1:
                    /* WARNING: Subroutine does not return */
      gold::var_1("../../gold/output.h",0xcf,"data_size");
    }
    var_7 = var_7 + *(long *)(var_2 + 0x10);
    if ((-1 < var_6) && (var_7 + var_6 <= of->file_size_)) {
      var_13 = of->base_;
      if ((((this->field_0x20 & 1) != 0) &&
          (var_19 = *(type_5 *)&this->field_0x8, (*(type_3 *)(var_10 + 0x20) & 1) != 0)) &&
         (got_base = *(type_5 *)(var_10 + 8), (var_5 & 1) != 0)) {
        var_24 = *(type_5 *)(var_4 + 8);
        var_9 = this;
        Output_data_plt_x86_64_bnd::var_11
                  ((type_8 *)this,var_12,var_24,var_19);
        uVar21 = (anonymous_namespace)::type_1<64>::plt_entry._8_8_;
        uVar20 = (anonymous_namespace)::type_1<64>::plt_entry._0_8_;
        var_22 = var_12 + 0x10;
        var_14 = *(int *)&this->field_0x6c + *(int *)&this->field_0x68;
        var_23 = (long *)(var_13 + var_6 + 0x18);
        if (var_14 == 0) {
          if (*(type_6 *)&this->field_0x70 == 0xffffffff) {
            var_2 = 0x10;
          }
          else {
            var_2 = 0x20;
            Output_data_plt_x86_64_bnd::var_15
                      ((type_8 *)var_9,var_22,var_24,var_19,
                       got_base,*(type_6 *)&this->field_0x70,0x10);
          }
        }
        else {
          var_16 = var_22;
          var_20 = var_23;
          var_17 = 0;
          do {
            *(type_7 *)var_16 = uVar20;
            *(type_7 *)(var_16 + 8) = uVar21;
            var_16[6] = (type_4)(var_17 >> 8);
            var_16[8] = (type_4)(var_17 >> 0x18);
            var_16[5] = (type_4)var_17;
            var_21 = var_17 + 1;
            var_16[7] = (type_4)(var_17 >> 0x10);
            var_18 = (int)var_16;
            *(int *)(var_16 + 0xb) = ((int)var_22 + -0x1f) - var_18;
            var_16 = var_16 + 0x10;
            *var_20 = (type_6)((0x10 - (int)var_22) + var_18) + var_19;
            var_20 = var_20 + 1;
            var_17 = var_21;
          } while (var_21 != var_14);
          var_2 = (type_9)(var_14 - 1) + 1;
          var_17 = (var_14 + 1) * 0x10;
          var_22 = var_22 + var_2 * 0x10;
          var_23 = var_23 + var_2;
          var_16 = var_22;
          if (*(type_6 *)&this->field_0x70 != 0xffffffff) {
            var_16 = var_22 + 0x10;
            Output_data_plt_x86_64_bnd::var_15
                      ((type_8 *)this,var_22,var_24,var_19,got_base,
                       *(type_6 *)&this->field_0x70,var_17);
          }
          var_21 = 0;
          var_22 = var_16;
          uVar20 = (anonymous_namespace)::type_1<64>::aplt_entry._0_8_;
          uVar21 = (anonymous_namespace)::type_1<64>::aplt_entry._8_8_;
          do {
            var_18 = var_21 * 8;
            var_21 = var_21 + 1;
            var_4 = ((type_9)(var_18 + 0x18) + (var_24 - var_19)) -
                    (type_9)((var_17 - (int)var_16) + (int)var_22);
            var_2 = var_4 + -0xb;
            if (0xffffffff < var_4 + 0x7ffffff5U) {
              format = (char *)var_25("PC-relative offset overflow in APLT entry %d");
              gold::var_26(format,(type_9)var_21);
              uVar20 = (anonymous_namespace)::type_1<64>::aplt_entry._0_8_;
              uVar21 = (anonymous_namespace)::type_1<64>::aplt_entry._8_8_;
            }
            *(type_7 *)var_22 = uVar20;
            *(type_7 *)(var_22 + 8) = uVar21;
            puVar19 = var_22 + 0x10;
            var_22[7] = (type_4)var_2;
            var_22[10] = (type_4)((type_9)var_2 >> 0x18);
            var_22[9] = (type_4)((type_9)var_2 >> 0x10);
            var_22[8] = (type_4)((type_9)var_2 >> 8);
            var_22 = puVar19;
          } while (var_21 < var_14);
          var_2 = (long)puVar19 - (long)var_12;
        }
        if (var_3 == var_2) {
          if (var_7 == (long)var_23 - (long)(var_13 + var_6)) {
            return;
          }
                    /* WARNING: Subroutine does not return */
          gold::var_1("../../gold/x86_64.cc",0xb09,"do_write");
        }
                    /* WARNING: Subroutine does not return */
        gold::var_1("../../gold/x86_64.cc",0xb08,"do_write");
      }
      goto LAB_0016e2fe;
    }
  }
  gold::Output_file::var_27((type_2 *)var_9,(type_10)start,in_RDX,in_RCX);
LAB_0016e2fe:
                    /* WARNING: Subroutine does not return */
  gold::var_1("../../gold/output.h",0xc5,"address");
}


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

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulong MASKED(long param_1,long param_2)

{
  byte bVar1;
  byte bVar2;
  long lVar3;
  long lVar4;
  int iVar5;
  undefined8 uVar6;
  char cVar7;
  long lVar8;
  undefined8 uVar9;
  uint uVar10;
  undefined8 *puVar11;
  long lVar12;
  uint uVar13;
  long *plVar14;
  long lVar15;
  int iVar16;
  undefined8 *puVar17;
  undefined8 *puVar18;
  long lVar19;
  long lVar20;
  uint uVar21;
  undefined8 uVar22;
  ulong uVar23;
  long *local_60;
  
  if ((*(byte *)(param_1 + 0x20) & 4) == 0) {
LAB_0016e316:
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/output.h",0xe3,"offset");
  }
  lVar19 = *(long *)(param_1 + 0x18);
  if ((*(byte *)(param_1 + 0x20) & 2) == 0) goto LAB_0016e2e1;
  lVar3 = *(long *)(param_1 + 0x10);
  if ((-1 < lVar19) && (lVar3 + lVar19 <= *(long *)(param_2 + 0x10))) {
    lVar15 = *(long *)(param_1 + 0x58);
    lVar19 = lVar19 + *(long *)(param_2 + 0x18);
    lVar12 = *(long *)(param_1 + 0x60);
    lVar4 = *(long *)(param_1 + 0x50);
    if ((*(byte *)(lVar15 + 0x20) & 4) == 0) goto LAB_0016e316;
    lVar20 = *(long *)(lVar15 + 0x18);
    cVar7 = FUN_0021a540(PTR_DAT_003f85c0);
    bVar1 = *(byte *)(lVar15 + 0x20);
    if (cVar7 == '\0') {
      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;
      lVar8 = *(long *)(lVar15 + 0x10);
      bVar2 = *(byte *)(lVar12 + 0x20);
      if ((bVar2 & 4) == 0) goto LAB_0016e316;
      if (lVar20 + lVar8 != *(long *)(lVar12 + 0x18)) {
                    /* WARNING: Subroutine does not return */
        FUN_00199900("../../gold/x86_64.cc",0xac2,"do_write");
      }
    }
    else {
      if ((bVar1 & 2) == 0) goto LAB_0016e2e1;
      lVar8 = *(long *)(lVar15 + 0x10);
      bVar2 = *(byte *)(lVar12 + 0x20);
    }
    if ((bVar2 & 2) == 0) {
LAB_0016e2e1:
                    /* WARNING: Subroutine does not return */
      FUN_00199900("../../gold/output.h",0xcf,"data_size");
    }
    lVar8 = lVar8 + *(long *)(lVar12 + 0x10);
    if ((-1 < lVar20) && (lVar8 + lVar20 <= *(long *)(param_2 + 0x10))) {
      lVar20 = lVar20 + *(long *)(param_2 + 0x18);
      if ((((*(byte *)(param_1 + 0x20) & 1) != 0) &&
          (uVar23 = *(ulong *)(param_1 + 8), (*(byte *)(lVar4 + 0x20) & 1) != 0)) &&
         (uVar9 = *(undefined8 *)(lVar4 + 8), (bVar1 & 1) != 0)) {
        lVar15 = *(long *)(lVar15 + 8);
        FUN_0016bb10(param_1,lVar19,lVar15);
        uVar6 = _UNK_0033ed28;
        uVar22 = _DAT_0033ed20;
        puVar18 = (undefined8 *)(lVar19 + 0x10);
        uVar13 = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x68);
        local_60 = (long *)(lVar20 + 0x18);
        if (uVar13 == 0) {
          if (*(int *)(param_1 + 0x70) == -1) {
            lVar19 = 0x10;
          }
          else {
            uVar23 = 0x10;
            lVar19 = 0x20;
            FUN_0016bb50();
          }
        }
        else {
          puVar11 = puVar18;
          plVar14 = local_60;
          uVar21 = 0;
          do {
            *puVar11 = uVar22;
            puVar11[1] = uVar6;
            *(char *)((long)puVar11 + 6) = (char)(uVar21 >> 8);
            *(char *)(puVar11 + 1) = (char)(uVar21 >> 0x18);
            *(char *)((long)puVar11 + 5) = (char)uVar21;
            uVar10 = uVar21 + 1;
            *(char *)((long)puVar11 + 7) = (char)(uVar21 >> 0x10);
            iVar16 = (int)puVar11;
            *(int *)((long)puVar11 + 0xb) = ((int)puVar18 + -0x1f) - iVar16;
            puVar11 = puVar11 + 2;
            *plVar14 = (uint)((0x10 - (int)puVar18) + iVar16) + uVar23;
            plVar14 = plVar14 + 1;
            uVar21 = uVar10;
          } while (uVar10 != uVar13);
          lVar12 = (ulong)(uVar13 - 1) + 1;
          iVar16 = (uVar13 + 1) * 0x10;
          puVar18 = puVar18 + lVar12 * 2;
          local_60 = local_60 + lVar12;
          puVar11 = puVar18;
          if (*(int *)(param_1 + 0x70) != -1) {
            puVar11 = puVar18 + 2;
            FUN_0016bb50(param_1,puVar18,lVar15,uVar23,uVar9,*(int *)(param_1 + 0x70),iVar16);
          }
          lVar15 = lVar15 - uVar23;
          uVar21 = 0;
          puVar18 = puVar11;
          uVar9 = _DAT_0033ed00;
          uVar22 = _UNK_0033ed08;
          do {
            iVar5 = uVar21 * 8;
            uVar21 = uVar21 + 1;
            lVar12 = ((ulong)(iVar5 + 0x18) + lVar15) -
                     (ulong)(uint)((iVar16 - (int)puVar11) + (int)puVar18);
            uVar23 = lVar12 - 0xb;
            if (0xffffffff < lVar12 + 0x7ffffff5U) {
              uVar9 = gettext("PC-relative offset overflow in APLT entry %d");
              FUN_00191870(uVar9,uVar21);
              uVar9 = _DAT_0033ed00;
              uVar22 = _UNK_0033ed08;
            }
            *puVar18 = uVar9;
            puVar18[1] = uVar22;
            puVar17 = puVar18 + 2;
            *(char *)((long)puVar18 + 7) = (char)uVar23;
            *(char *)((long)puVar18 + 10) = (char)(uVar23 >> 0x18);
            *(char *)((long)puVar18 + 9) = (char)(uVar23 >> 0x10);
            uVar23 = uVar23 >> 8 & 0xffffff;
            *(char *)(puVar18 + 1) = (char)uVar23;
            puVar18 = puVar17;
          } while (uVar21 < uVar13);
          lVar19 = (long)puVar17 - lVar19;
        }
        if (lVar3 == lVar19) {
          if (lVar8 == (long)local_60 - lVar20) {
            return uVar23;
          }
                    /* WARNING: Subroutine does not return */
          FUN_00199900("../../gold/x86_64.cc",0xb09,"do_write");
        }
                    /* WARNING: Subroutine does not return */
        FUN_00199900("../../gold/x86_64.cc",0xb08,"do_write");
      }
      goto LAB_0016e2fe;
    }
  }
  FUN_0016cec0();
LAB_0016e2fe:
                    /* WARNING: Subroutine does not return */
  FUN_00199900("../../gold/output.h",0xc5,"address");
}

