
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original name: do_sized_write<64, false>
   DWARF original prototype: void do_sized_write<64,_false>(Output_segment_headers * this,
   Output_file * of) */

void __thiscall
gold::Output_segment_headers::do_sized_write<64,_false>
          (Output_segment_headers *this,Output_file *of)

{
  byte bVar1;
  pointer ppOVar2;
  int iVar3;
  uchar *puVar4;
  Output_segment *this_00;
  Elf_Word EVar5;
  Elf_Word EVar6;
  Segment_list *pSVar7;
  uint uVar8;
  int iVar9;
  uint64_t uVar10;
  off_t oVar11;
  uint uVar12;
  uint uVar13;
  pointer ppOVar14;
  Elf_Word *pEVar15;
  Elf_Word *pEVar16;
  uint uVar17;
  int iVar18;
  uint64_t uVar19;
  
  ppOVar14 = (this->segment_list_->
             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).
             _M_impl._M_start;
  ppOVar2 = (this->segment_list_->
            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).
            _M_impl._M_finish;
  uVar12 = ((int)ppOVar2 - (int)ppOVar14 >> 2) * 0x38;
  bVar1 = (this->super_Output_data).field_0x1c;
  if ((bVar1 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
  }
  if (uVar12 != (uint)(this->super_Output_data).data_size_ ||
      *(int *)((int)&(this->super_Output_data).data_size_ + 4) != 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.cc",0x19e,"do_sized_write");
  }
  if ((bVar1 & 4) == 0) {
LAB_0011a115:
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xe3,"offset");
  }
  iVar18 = *(int *)((int)&(this->super_Output_data).offset_ + 4);
  uVar17 = (uint)(this->super_Output_data).offset_;
  if ((iVar18 < 0) ||
     (iVar3 = *(int *)((int)&of->file_size_ + 4), iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17),
     uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,
     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");
  }
  puVar4 = of->base_;
  pEVar15 = (Elf_Word *)(puVar4 + uVar17);
  if (ppOVar14 == ppOVar2) {
    if (uVar12 != 0) goto LAB_0011a0f8;
  }
  else {
    do {
      this_00 = *ppOVar14;
      EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4);
      *pEVar15 = this_00->type_;
      oVar11 = this_00->offset_;
      pEVar15[3] = EVar5;
      pEVar15[2] = (Elf_Word)oVar11;
      EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4);
      pEVar15[4] = (Elf_Word)this_00->vaddr_;
      pEVar15[5] = EVar5;
      EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4);
      pEVar15[6] = (Elf_Word)this_00->paddr_;
      pEVar15[7] = EVar5;
      EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4);
      pEVar15[8] = (Elf_Word)this_00->filesz_;
      pEVar15[9] = EVar5;
      EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4);
      pEVar15[10] = (Elf_Word)this_00->memsz_;
      EVar6 = this_00->flags_;
      pEVar15[0xb] = EVar5;
      pEVar15[1] = EVar6;
      uVar19 = Output_segment::maximum_alignment(this_00);
      uVar13 = (uint)(uVar19 >> 0x20);
      uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4);
      uVar10 = this_00->min_p_align_;
      if (uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)) {
        uVar10 = uVar19;
      }
      pEVar16 = pEVar15 + 0xe;
      ppOVar14 = ppOVar14 + 1;
      pSVar7 = this->segment_list_;
      *(uint64_t *)(pEVar15 + 0xc) = uVar10;
      pEVar15 = pEVar16;
    } while ((pSVar7->
             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).
             _M_impl._M_finish != ppOVar14);
    uVar17 = (int)pEVar16 - (int)(puVar4 + uVar17);
    if ((int)uVar17 < 0 || uVar17 != uVar12) {
LAB_0011a0f8:
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");
    }
    if (((this->super_Output_data).field_0x1c & 4) == 0) goto LAB_0011a115;
  }
  return;
}



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

void FUN_00119f70(int param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  undefined8 uVar5;
  uint uVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  uint uVar13;
  int iVar14;
  undefined8 uVar15;
  
  piVar9 = (int *)**(int **)(param_1 + 0x20);
  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];
  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;
  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");
  }
  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);
  }
  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {
LAB_0011a115:
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);
  }
  uVar13 = *(uint *)(param_1 + 0x14);
  piVar7 = piVar9;
  if ((*(int *)(param_1 + 0x18) < 0) ||
     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),
     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),
     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),
     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);
  }
  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);
  puVar11 = puVar10;
  if (piVar9 == piVar8) {
    if (uVar6 != 0) goto LAB_0011a0f8;
  }
  else {
    do {
      iVar4 = *piVar9;
      uVar1 = *(undefined4 *)(iVar4 + 0x188);
      *puVar11 = *(undefined4 *)(iVar4 + 0x194);
      uVar2 = *(undefined4 *)(iVar4 + 0x184);
      puVar11[3] = uVar1;
      puVar11[2] = uVar2;
      uVar1 = *(undefined4 *)(iVar4 + 0x160);
      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);
      puVar11[5] = uVar1;
      uVar1 = *(undefined4 *)(iVar4 + 0x168);
      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);
      puVar11[7] = uVar1;
      uVar1 = *(undefined4 *)(iVar4 + 400);
      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);
      puVar11[9] = uVar1;
      uVar1 = *(undefined4 *)(iVar4 + 0x170);
      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);
      uVar2 = *(undefined4 *)(iVar4 + 0x198);
      puVar11[0xb] = uVar1;
      puVar11[1] = uVar2;
      uVar15 = FUN_001036f0(iVar4);
      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);
      uVar5 = *(undefined8 *)(iVar4 + 0x17c);
      if (*(uint *)(iVar4 + 0x180) < uVar13 ||
          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {
        uVar5 = uVar15;
      }
      puVar12 = puVar11 + 0xe;
      piVar9 = piVar9 + 1;
      iVar4 = *(int *)(param_1 + 0x20);
      *(undefined8 *)(puVar11 + 0xc) = uVar5;
      puVar11 = puVar12;
    } while (*(int **)(iVar4 + 4) != piVar9);
    uVar13 = (int)puVar12 - (int)puVar10;
    piVar8 = (int *)((int)uVar13 >> 0x1f);
    if ((int)uVar13 < 0 || uVar13 != uVar6) {
LAB_0011a0f8:
                    /* WARNING: Subroutine does not return */
      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);
    }
    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;
  }
  return;
}


CALL 0x0006206b
ADD EAX,0x29008b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EBX,dword ptr [ESP + 0x40]
MOV EBP,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EBX + 0x20]
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
MOV ESI,EAX
MOV dword ptr [ESP + 0x14],EAX
SUB ESI,ECX
MOV dword ptr [ESP + 0x10],ECX
SAR ESI,0x2
IMUL EAX,ESI,0x38
MOV dword ptr [ESP + 0xc],EAX
MOV ESI,EAX
MOVZX EAX,byte ptr [EBX + 0x1c]
TEST AL,0x2
JZ 0x0011a169
MOV EDX,dword ptr [ESP + 0xc]
XOR EDX,dword ptr [EBX + 0xc]
OR EDX,dword ptr [EBX + 0x10]
JNZ 0x0011a14c
TEST AL,0x4
JZ 0x0011a115
MOV EDX,dword ptr [EBX + 0x18]
MOV EAX,dword ptr [EBX + 0x14]
TEST EDX,EDX
JS 0x0011a132
XOR EDI,EDI
MOV ECX,dword ptr [EBP + 0xc]
ADD ESI,EAX
ADC EDI,EDX
CMP dword ptr [EBP + 0x8],ESI
SBB ECX,EDI
JL 0x0011a132
MOV ESI,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
ADD ESI,EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x18],ESI
CMP EAX,EDX
JZ 0x0011a0f0
MOV dword ptr [ESP + 0x40],EBX
MOV EBP,EAX
LEA ESI,[ESI]
MOV EDI,dword ptr [EBP]
SUB ESP,0xc
MOV EAX,dword ptr [EDI + 0x194]
MOV EDX,dword ptr [EDI + 0x188]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EDI + 0x184]
MOV dword ptr [ESI + 0xc],EDX
MOV dword ptr [ESI + 0x8],EAX
MOV EAX,dword ptr [EDI + 0x15c]
MOV EDX,dword ptr [EDI + 0x160]
MOV dword ptr [ESI + 0x10],EAX
MOV dword ptr [ESI + 0x14],EDX
MOV EAX,dword ptr [EDI + 0x164]
MOV EDX,dword ptr [EDI + 0x168]
MOV dword ptr [ESI + 0x18],EAX
MOV dword ptr [ESI + 0x1c],EDX
MOV EAX,dword ptr [EDI + 0x18c]
MOV EDX,dword ptr [EDI + 0x190]
MOV dword ptr [ESI + 0x20],EAX
MOV dword ptr [ESI + 0x24],EDX
MOV EAX,dword ptr [EDI + 0x16c]
MOV EDX,dword ptr [EDI + 0x170]
MOV dword ptr [ESI + 0x28],EAX
MOV EAX,dword ptr [EDI + 0x198]
MOV dword ptr [ESI + 0x2c],EDX
MOV dword ptr [ESI + 0x4],EAX
PUSH EDI
CALL 0x001036f0
MOV ECX,dword ptr [EDI + 0x17c]
ADD ESP,0x10
MOV EDI,dword ptr [EDI + 0x180]
CMP ECX,EAX
MOV EBX,EDI
SBB EBX,EDX
CMOVC ECX,EAX
MOV EAX,dword ptr [ESP + 0x40]
CMOVC EDI,EDX
ADD ESI,0x38
ADD EBP,0x4
MOV EAX,dword ptr [EAX + 0x20]
MOV dword ptr [ESI + -0x8],ECX
MOV dword ptr [ESI + -0x4],EDI
CMP dword ptr [EAX + 0x4],EBP
JNZ 0x0011a018
SUB ESI,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0x40]
MOV EAX,ESI
XOR ESI,dword ptr [ESP + 0xc]
CDQ
MOV EAX,EDX
OR EAX,ESI
JNZ 0x0011a0f8
TEST byte ptr [EBX + 0x1c],0x4
JZ 0x0011a115
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x0011a0e1
PUSH EDX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff02598]
PUSH EAX
LEA EAX,[EBX + 0xfff0078b]
PUSH 0x1ab
PUSH EAX
CALL 0x0007ac80
PUSH EBX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff02684]
PUSH EAX
LEA EAX,[EBX + 0xffef1371]
PUSH 0xe3
PUSH EAX
CALL 0x0007ac80
PUSH ECX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff0270c]
PUSH EAX
LEA EAX,[EBX + 0xffef1371]
PUSH 0x6f
PUSH EAX
CALL 0x0007ac80
PUSH ESI
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff02598]
PUSH EAX
LEA EAX,[EBX + 0xfff0078b]
PUSH 0x19e
PUSH EAX
CALL 0x0007ac80
PUSH EDI
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff02700]
PUSH EAX
LEA EAX,[EBX + 0xffef1371]
PUSH 0xcf
PUSH EAX
CALL 0x0007ac80
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00119f70(int param_1,int param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  int iVar14;\n  undefined8 uVar15;\n  \n  piVar9 = (int *)**(int **)(param_1 + 0x20);\n  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];\n  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }\n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }\n  uVar13 = *(uint *)(param_1 + 0x14);\n  piVar7 = piVar9;\n  if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }\n  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);\n  puVar11 = puVar10;\n  if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00119f70(int param_1,int param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  int iVar14;\n  undefined8 uVar15;\n  \n  piVar9 = (int *)**(int **)(param_1 + 0x20);\n  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];\n  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }\n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }\n  uVar13 = *(uint *)(param_1 + 0x14);\n  piVar7 = piVar9;\n  if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }\n  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);\n  puVar11 = puVar10;\n  if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00119f70(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  int iVar14;\n  undefined8 uVar15;\n  \n  piVar9 = (int *)**(int **)(param_1 + 0x20);\n  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];\n  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }\n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }\n  uVar13 = *(uint *)(param_1 + 0x14);\n  piVar7 = piVar9;\n  if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }\n  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);\n  puVar11 = puVar10;\n  if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined8 uVar15;" type_identifier identifier ;) (expression_statement "piVar9 = (int *)**(int **)(param_1 + 0x20);" (assignment_expression "piVar9 = (int *)**(int **)(param_1 + 0x20)" identifier = (cast_expression "(int *)**(int **)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(param_1 + 0x20)" * (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))))) ;) (expression_statement "piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];" (assignment_expression "piVar8 = (int *)(*(int **)(param_1 + 0x20))[1]" identifier = (cast_expression "(int *)(*(int **)(param_1 + 0x20))[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "(*(int **)(param_1 + 0x20))[1]" (parenthesized_expression "(*(int **)(param_1 + 0x20))" ( (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) )) [ number_literal ]))) ;) (expression_statement "uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;" (assignment_expression "uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38" identifier = (binary_expression "((int)piVar8 - (int)piVar9 >> 2) * 0x38" (parenthesized_expression "((int)piVar8 - (int)piVar9 >> 2)" ( (binary_expression "(int)piVar8 - (int)piVar9 >> 2" (binary_expression "(int)piVar8 - (int)piVar9" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }" { comment (expression_statement "FUN_0007ac80("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0007ac80("../../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 ") ))) ;) })) (if_statement "if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }" if (parenthesized_expression "(uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0)" ( (binary_expression "uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0" (binary_expression "uVar6 != *(uint *)(param_1 + 0xc)" identifier != (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) || (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }" { comment (expression_statement "FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);" (call_expression "FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6)" identifier (argument_list "("../../gold/output.cc",0x19e,"do_sized_write",uVar6)" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") , identifier ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }" { (labeled_statement "LAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);" statement_identifier : comment (expression_statement "FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);" (call_expression "FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1)" identifier (argument_list "("../../gold/output.h",0xe3,"offset",param_1)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") , identifier ))) ;)) })) (expression_statement "uVar13 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x14)" identifier = (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar9;" (assignment_expression "piVar7 = piVar9" identifier = identifier) ;) (if_statement "if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0))" ( (binary_expression "(*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)" (parenthesized_expression "(*(int *)(param_1 + 0x18) < 0)" ( (binary_expression "*(int *)(param_1 + 0x18) < 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) < number_literal) )) || (parenthesized_expression "(iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)" ( (comma_expression "iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13)" identifier = (binary_expression "*(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13)" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar6,uVar13)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6,uVar13)" identifier (argument_list "(uVar6,uVar13)" ( identifier , identifier )))))) , (comma_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < uVar6 + uVar13)" ( (binary_expression "*(uint *)(param_2 + 8) < uVar6 + uVar13" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) < (binary_expression "uVar6 + uVar13" identifier + identifier)) )))) , (comma_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar14" identifier = (binary_expression "*(int *)(param_2 + 0xc) - iVar14" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) - identifier)) , (comma_expression "piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "piVar7 = (int *)(iVar4 - uVar3)" identifier = (cast_expression "(int *)(iVar4 - uVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 - uVar3)" ( (binary_expression "iVar4 - uVar3" identifier - identifier) )))) , (binary_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3))" ( (binary_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar14)" identifier (argument_list "(*(int *)(param_2 + 0xc),iVar14)" ( (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar4,uVar3)" identifier (argument_list "(iVar4,uVar3)" ( identifier , identifier )))) )) != (binary_expression "(int)piVar7 < 0" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)))))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }" { comment (expression_statement "FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);" (call_expression "FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7)" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view",piVar7)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") , identifier ))) ;) })) (expression_statement "puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);" (assignment_expression "puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13)" identifier = (cast_expression "(undefined4 *)(*(int *)(param_2 + 0x10) + uVar13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x10) + uVar13)" ( (binary_expression "*(int *)(param_2 + 0x10) + uVar13" (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" identifier = identifier) ;) (if_statement "if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" if (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) (compound_statement "{\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }" { (if_statement "if (uVar6 != 0) goto LAB_0011a0f8;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011a0f8;" goto statement_identifier ;)) }) (else_clause "else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" else (compound_statement "{\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" { (do_statement "do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);" do (compound_statement "{\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    }" { (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x188);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x188)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x188)" * (cast_expression "(undefined4 *)(iVar4 + 0x188)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x188)" ( (binary_expression "iVar4 + 0x188" identifier + number_literal) ))))) ;) (expression_statement "*puVar11 = *(undefined4 *)(iVar4 + 0x194);" (assignment_expression "*puVar11 = *(undefined4 *)(iVar4 + 0x194)" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*(undefined4 *)(iVar4 + 0x194)" * (cast_expression "(undefined4 *)(iVar4 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x194)" ( (binary_expression "iVar4 + 0x194" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(iVar4 + 0x184);" (assignment_expression "uVar2 = *(undefined4 *)(iVar4 + 0x184)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x184)" * (cast_expression "(undefined4 *)(iVar4 + 0x184)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x184)" ( (binary_expression "iVar4 + 0x184" identifier + number_literal) ))))) ;) (expression_statement "puVar11[3] = uVar1;" (assignment_expression "puVar11[3] = uVar1" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[2] = uVar2;" (assignment_expression "puVar11[2] = uVar2" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x160);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x160)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x160)" * (cast_expression "(undefined4 *)(iVar4 + 0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x160)" ( (binary_expression "iVar4 + 0x160" identifier + number_literal) ))))) ;) (expression_statement "puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);" (assignment_expression "puVar11[4] = *(undefined4 *)(iVar4 + 0x15c)" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar4 + 0x15c)" * (cast_expression "(undefined4 *)(iVar4 + 0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x15c)" ( (binary_expression "iVar4 + 0x15c" identifier + number_literal) ))))) ;) (expression_statement "puVar11[5] = uVar1;" (assignment_expression "puVar11[5] = uVar1" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x168);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x168)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x168)" * (cast_expression "(undefined4 *)(iVar4 + 0x168)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x168)" ( (binary_expression "iVar4 + 0x168" identifier + number_literal) ))))) ;) (expression_statement "puVar11[6] = *(undefined4 *)(iVar4 + 0x164);" (assignment_expression "puVar11[6] = *(undefined4 *)(iVar4 + 0x164)" (subscript_expression "puVar11[6]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar4 + 0x164)" * (cast_expression "(undefined4 *)(iVar4 + 0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x164)" ( (binary_expression "iVar4 + 0x164" identifier + number_literal) ))))) ;) (expression_statement "puVar11[7] = uVar1;" (assignment_expression "puVar11[7] = uVar1" (subscript_expression "puVar11[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 400);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 400)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 400)" * (cast_expression "(undefined4 *)(iVar4 + 400)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 400)" ( (binary_expression "iVar4 + 400" identifier + number_literal) ))))) ;) (expression_statement "puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);" (assignment_expression "puVar11[8] = *(undefined4 *)(iVar4 + 0x18c)" (subscript_expression "puVar11[8]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar4 + 0x18c)" * (cast_expression "(undefined4 *)(iVar4 + 0x18c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18c)" ( (binary_expression "iVar4 + 0x18c" identifier + number_literal) ))))) ;) (expression_statement "puVar11[9] = uVar1;" (assignment_expression "puVar11[9] = uVar1" (subscript_expression "puVar11[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x170);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x170)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x170)" * (cast_expression "(undefined4 *)(iVar4 + 0x170)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x170)" ( (binary_expression "iVar4 + 0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);" (assignment_expression "puVar11[10] = *(undefined4 *)(iVar4 + 0x16c)" (subscript_expression "puVar11[10]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar4 + 0x16c)" * (cast_expression "(undefined4 *)(iVar4 + 0x16c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x16c)" ( (binary_expression "iVar4 + 0x16c" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(iVar4 + 0x198);" (assignment_expression "uVar2 = *(undefined4 *)(iVar4 + 0x198)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x198)" * (cast_expression "(undefined4 *)(iVar4 + 0x198)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x198)" ( (binary_expression "iVar4 + 0x198" identifier + number_literal) ))))) ;) (expression_statement "puVar11[0xb] = uVar1;" (assignment_expression "puVar11[0xb] = uVar1" (subscript_expression "puVar11[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[1] = uVar2;" (assignment_expression "puVar11[1] = uVar2" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar15 = FUN_001036f0(iVar4);" (assignment_expression "uVar15 = FUN_001036f0(iVar4)" identifier = (call_expression "FUN_001036f0(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "uVar13 = (uint)((ulonglong)uVar15 >> 0x20);" (assignment_expression "uVar13 = (uint)((ulonglong)uVar15 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar15 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar15 >> 0x20)" ( (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar5 = *(undefined8 *)(iVar4 + 0x17c);" (assignment_expression "uVar5 = *(undefined8 *)(iVar4 + 0x17c)" identifier = (pointer_expression "*(undefined8 *)(iVar4 + 0x17c)" * (cast_expression "(undefined8 *)(iVar4 + 0x17c)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x17c)" ( (binary_expression "iVar4 + 0x17c" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }" if (parenthesized_expression "(*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15))" ( (binary_expression "*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (binary_expression "*(uint *)(iVar4 + 0x180) < uVar13" (pointer_expression "*(uint *)(iVar4 + 0x180)" * (cast_expression "(uint *)(iVar4 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x180)" ( (binary_expression "iVar4 + 0x180" identifier + number_literal) )))) < identifier) || (binary_expression "*(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (binary_expression "*(uint *)(iVar4 + 0x180) - uVar13" (pointer_expression "*(uint *)(iVar4 + 0x180)" * (cast_expression "(uint *)(iVar4 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x180)" ( (binary_expression "iVar4 + 0x180" identifier + number_literal) )))) - identifier) < (call_expression "(uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" ( (binary_expression "*(uint *)(iVar4 + 0x17c) < (uint)uVar15" (pointer_expression "*(uint *)(iVar4 + 0x17c)" * (cast_expression "(uint *)(iVar4 + 0x17c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x17c)" ( (binary_expression "iVar4 + 0x17c" identifier + number_literal) )))) < (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) (compound_statement "{\n        uVar5 = uVar15;\n      }" { (expression_statement "uVar5 = uVar15;" (assignment_expression "uVar5 = uVar15" identifier = identifier) ;) })) (expression_statement "puVar12 = puVar11 + 0xe;" (assignment_expression "puVar12 = puVar11 + 0xe" identifier = (binary_expression "puVar11 + 0xe" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x20)" identifier = (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar11 + 0xc) = uVar5;" (assignment_expression "*(undefined8 *)(puVar11 + 0xc) = uVar5" (pointer_expression "*(undefined8 *)(puVar11 + 0xc)" * (cast_expression "(undefined8 *)(puVar11 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xc)" ( (binary_expression "puVar11 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" identifier = identifier) ;) }) while (parenthesized_expression "(*(int **)(iVar4 + 4) != piVar9)" ( (binary_expression "*(int **)(iVar4 + 4) != piVar9" (pointer_expression "*(int **)(iVar4 + 4)" * (cast_expression "(int **)(iVar4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) != identifier) )) ;) (expression_statement "uVar13 = (int)puVar12 - (int)puVar10;" (assignment_expression "uVar13 = (int)puVar12 - (int)puVar10" identifier = (binary_expression "(int)puVar12 - (int)puVar10" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar8 = (int *)((int)uVar13 >> 0x1f);" (assignment_expression "piVar8 = (int *)((int)uVar13 >> 0x1f)" identifier = (cast_expression "(int *)((int)uVar13 >> 0x1f)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar13 >> 0x1f)" ( (binary_expression "(int)uVar13 >> 0x1f" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }" if (parenthesized_expression "((int)uVar13 < 0 || uVar13 != uVar6)" ( (binary_expression "(int)uVar13 < 0 || uVar13 != uVar6" (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "uVar13 != uVar6" identifier != identifier)) )) (compound_statement "{\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }" { (labeled_statement "LAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);" statement_identifier : comment (expression_statement "FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);" (call_expression "FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8)" identifier (argument_list "("../../gold/output.cc",0x1ab,"do_sized_write",piVar8)" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") , identifier ))) ;)) })) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0011a115;" goto statement_identifier ;)) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original name: do_sized_write<64, false>\n   DWARF original prototype: void do_sized_write<64,_false>(Output_segment_headers * this,\n   Output_file * of) */\n\nvoid __thiscall\ngold::Output_segment_headers::do_sized_write<64,_false>\n          (Output_segment_headers *this,Output_file *of)\n\n{\n  byte bVar1;\n  pointer ppOVar2;\n  int iVar3;\n  uchar *puVar4;\n  Output_segment *this_00;\n  Elf_Word EVar5;\n  Elf_Word EVar6;\n  Segment_list *pSVar7;\n  uint uVar8;\n  int iVar9;\n  uint64_t uVar10;\n  off_t oVar11;\n  uint uVar12;\n  uint uVar13;\n  pointer ppOVar14;\n  Elf_Word *pEVar15;\n  Elf_Word *pEVar16;\n  uint uVar17;\n  int iVar18;\n  uint64_t uVar19;\n  \n  ppOVar14 = (this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_start;\n  ppOVar2 = (this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n            _M_impl._M_finish;\n  uVar12 = ((int)ppOVar2 - (int)ppOVar14 >> 2) * 0x38;\n  bVar1 = (this->super_Output_data).field_0x1c;\n  if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar12 != (uint)(this->super_Output_data).data_size_ ||\n      *(int *)((int)&(this->super_Output_data).data_size_ + 4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x19e,"do_sized_write");\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  iVar18 = *(int *)((int)&(this->super_Output_data).offset_ + 4);\n  uVar17 = (uint)(this->super_Output_data).offset_;\n  if ((iVar18 < 0) ||\n     (iVar3 = *(int *)((int)&of->file_size_ + 4), iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17),\n     uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }\n  puVar4 = of->base_;\n  pEVar15 = (Elf_Word *)(puVar4 + uVar17);\n  if (ppOVar14 == ppOVar2) {\n    if (uVar12 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      this_00 = *ppOVar14;\n      EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4);\n      *pEVar15 = this_00->type_;\n      oVar11 = this_00->offset_;\n      pEVar15[3] = EVar5;\n      pEVar15[2] = (Elf_Word)oVar11;\n      EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4);\n      pEVar15[4] = (Elf_Word)this_00->vaddr_;\n      pEVar15[5] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4);\n      pEVar15[6] = (Elf_Word)this_00->paddr_;\n      pEVar15[7] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4);\n      pEVar15[8] = (Elf_Word)this_00->filesz_;\n      pEVar15[9] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4);\n      pEVar15[10] = (Elf_Word)this_00->memsz_;\n      EVar6 = this_00->flags_;\n      pEVar15[0xb] = EVar5;\n      pEVar15[1] = EVar6;\n      uVar19 = Output_segment::maximum_alignment(this_00);\n      uVar13 = (uint)(uVar19 >> 0x20);\n      uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      uVar10 = this_00->min_p_align_;\n      if (uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)) {\n        uVar10 = uVar19;\n      }\n      pEVar16 = pEVar15 + 0xe;\n      ppOVar14 = ppOVar14 + 1;\n      pSVar7 = this->segment_list_;\n      *(uint64_t *)(pEVar15 + 0xc) = uVar10;\n      pEVar15 = pEVar16;\n    } while ((pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_finish != ppOVar14);\n    uVar17 = (int)pEVar16 - (int)(puVar4 + uVar17);\n    if ((int)uVar17 < 0 || uVar17 != uVar12) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");\n    }\n    if (((this->super_Output_data).field_0x1c & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}\n\n" comment comment (declaration "void __thiscall\ngold::Output_segment_headers::do_sized_write<64,_false>\n          (Output_segment_headers *this,Output_file *of)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_segment_headers::" identifier : : identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>\n          (Output_segment_headers *this,Output_file *of)\n\n{\n  byte" (function_declarator "_false>\n          (Output_segment_headers *this,Output_file *of)" identifier (ERROR ">" >) (parameter_list "(Output_segment_headers *this,Output_file *of)" ( (parameter_declaration "Output_segment_headers *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) { identifier) identifier ;) (declaration "pointer ppOVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "Output_segment *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Elf_Word EVar5;" type_identifier identifier ;) (declaration "Elf_Word EVar6;" type_identifier identifier ;) (declaration "Segment_list *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint64_t uVar10;" primitive_type identifier ;) (declaration "off_t oVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "pointer ppOVar14;" type_identifier identifier ;) (declaration "Elf_Word *pEVar15;" type_identifier (pointer_declarator "*pEVar15" * identifier) ;) (declaration "Elf_Word *pEVar16;" type_identifier (pointer_declarator "*pEVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint64_t uVar19;" primitive_type identifier ;) (expression_statement "ppOVar14 = (this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_start;" (assignment_expression "ppOVar14 = (this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_start" identifier = (field_expression "(this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_start" (field_expression "(this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl" (parenthesized_expression "(this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>)" ( (binary_expression "this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>" (binary_expression "this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold" (binary_expression "this->segment_list_->\n             super__Vector_base<gold::Output_segment*,_std" (binary_expression "this->segment_list_->\n             super__Vector_base<gold" (field_expression "this->segment_list_->\n             super__Vector_base" (field_expression "this->segment_list_" identifier -> field_identifier) -> field_identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "ppOVar2 = (this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n            _M_impl._M_finish;" (assignment_expression "ppOVar2 = (this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n            _M_impl._M_finish" identifier = (field_expression "(this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n            _M_impl._M_finish" (field_expression "(this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n            _M_impl" (parenthesized_expression "(this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>)" ( (binary_expression "this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>" (binary_expression "this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std::allocator<gold" (binary_expression "this->segment_list_->\n            super__Vector_base<gold::Output_segment*,_std" (binary_expression "this->segment_list_->\n            super__Vector_base<gold" (field_expression "this->segment_list_->\n            super__Vector_base" (field_expression "this->segment_list_" identifier -> field_identifier) -> field_identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar12 = ((int)ppOVar2 - (int)ppOVar14 >> 2) * 0x38;" (assignment_expression "uVar12 = ((int)ppOVar2 - (int)ppOVar14 >> 2) * 0x38" identifier = (binary_expression "((int)ppOVar2 - (int)ppOVar14 >> 2) * 0x38" (parenthesized_expression "((int)ppOVar2 - (int)ppOVar14 >> 2)" ( (binary_expression "(int)ppOVar2 - (int)ppOVar14 >> 2" (binary_expression "(int)ppOVar2 - (int)ppOVar14" (cast_expression "(int)ppOVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ppOVar14" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "bVar1 = (this->super_Output_data).field_0x1c;" (assignment_expression "bVar1 = (this->super_Output_data).field_0x1c" identifier = (field_expression "(this->super_Output_data).field_0x1c" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((bVar1 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;) })) (if_statement "if (uVar12 != (uint)(this->super_Output_data).data_size_ ||\n      *(int *)((int)&(this->super_Output_data).data_size_ + 4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x19e,"do_sized_write");\n  }" if (parenthesized_expression "(uVar12 != (uint)(this->super_Output_data).data_size_ ||\n      *(int *)((int)&(this->super_Output_data).data_size_ + 4) != 0)" ( (binary_expression "uVar12 != (uint)(this->super_Output_data).data_size_ ||\n      *(int *)((int)&(this->super_Output_data).data_size_ + 4) != 0" (binary_expression "uVar12 != (uint)(this->super_Output_data).data_size_" identifier != (field_expression "(uint)(this->super_Output_data).data_size_" (call_expression "(uint)(this->super_Output_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) ))) . field_identifier)) || (binary_expression "*(int *)((int)&(this->super_Output_data).data_size_ + 4) != 0" (pointer_expression "*(int *)((int)&(this->super_Output_data).data_size_ + 4)" * (cast_expression "(int *)((int)&(this->super_Output_data).data_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_data).data_size_ + 4)" ( (binary_expression "(int)&(this->super_Output_data).data_size_ + 4" (cast_expression "(int)&(this->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_data).data_size_" & (field_expression "(this->super_Output_data).data_size_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) != number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x19e,"do_sized_write");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x19e,"do_sized_write");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x19e,"do_sized_write")" identifier (argument_list "("../../gold/output.cc",0x19e,"do_sized_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") ))) ;) })) (if_statement "if ((bVar1 & 4) == 0) {\nLAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" { (labeled_statement "LAB_0011a115:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (expression_statement "iVar18 = *(int *)((int)&(this->super_Output_data).offset_ + 4);" (assignment_expression "iVar18 = *(int *)((int)&(this->super_Output_data).offset_ + 4)" identifier = (pointer_expression "*(int *)((int)&(this->super_Output_data).offset_ + 4)" * (cast_expression "(int *)((int)&(this->super_Output_data).offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_data).offset_ + 4)" ( (binary_expression "(int)&(this->super_Output_data).offset_ + 4" (cast_expression "(int)&(this->super_Output_data).offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_data).offset_" & (field_expression "(this->super_Output_data).offset_" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar17 = (uint)(this->super_Output_data).offset_;" (assignment_expression "uVar17 = (uint)(this->super_Output_data).offset_" identifier = (field_expression "(uint)(this->super_Output_data).offset_" (call_expression "(uint)(this->super_Output_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if ((iVar18 < 0) ||\n     (iVar3 = *(int *)((int)&of->file_size_ + 4), iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17),\n     uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }" if (parenthesized_expression "((iVar18 < 0) ||\n     (iVar3 = *(int *)((int)&of->file_size_ + 4), iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17),\n     uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0))" ( (binary_expression "(iVar18 < 0) ||\n     (iVar3 = *(int *)((int)&of->file_size_ + 4), iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17),\n     uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0)" (parenthesized_expression "(iVar18 < 0)" ( (binary_expression "iVar18 < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar3 = *(int *)((int)&of->file_size_ + 4), iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17),\n     uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0)" ( (comma_expression "iVar3 = *(int *)((int)&of->file_size_ + 4), iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17),\n     uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0" (assignment_expression "iVar3 = *(int *)((int)&of->file_size_ + 4)" identifier = (pointer_expression "*(int *)((int)&of->file_size_ + 4)" * (cast_expression "(int *)((int)&of->file_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&of->file_size_ + 4)" ( (binary_expression "(int)&of->file_size_ + 4" (cast_expression "(int)&of->file_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&of->file_size_" & (field_expression "of->file_size_" identifier -> field_identifier))) + number_literal) ))))) , (comma_expression "iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17),\n     uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0" (assignment_expression "iVar18 = iVar18 + (uint)CARRY4(uVar12,uVar17)" identifier = (binary_expression "iVar18 + (uint)CARRY4(uVar12,uVar17)" identifier + (cast_expression "(uint)CARRY4(uVar12,uVar17)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar12,uVar17)" identifier (argument_list "(uVar12,uVar17)" ( identifier , identifier )))))) , (comma_expression "uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17), iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0" (assignment_expression "uVar8 = (uint)((uint)of->file_size_ < uVar12 + uVar17)" identifier = (call_expression "(uint)((uint)of->file_size_ < uVar12 + uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)of->file_size_ < uVar12 + uVar17)" ( (binary_expression "(uint)of->file_size_ < uVar12 + uVar17" (cast_expression "(uint)of->file_size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "of->file_size_" identifier -> field_identifier)) < (binary_expression "uVar12 + uVar17" identifier + identifier)) )))) , (comma_expression "iVar9 = iVar3 - iVar18,\n     (SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0" (assignment_expression "iVar9 = iVar3 - iVar18" identifier = (binary_expression "iVar3 - iVar18" identifier - identifier)) , (binary_expression "(SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)) != (int)(iVar9 - uVar8) < 0" (parenthesized_expression "(SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8))" ( (binary_expression "SBORROW4(iVar3,iVar18) != SBORROW4(iVar9,uVar8)" (call_expression "SBORROW4(iVar3,iVar18)" identifier (argument_list "(iVar3,iVar18)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar9,uVar8)" identifier (argument_list "(iVar9,uVar8)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar9 - uVar8) < 0" (cast_expression "(int)(iVar9 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar9 - uVar8)" ( (binary_expression "iVar9 - uVar8" identifier - identifier) ))) < number_literal)))))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");" (call_expression "do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view")" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") ))) ;) })) (expression_statement "puVar4 = of->base_;" (assignment_expression "puVar4 = of->base_" identifier = (field_expression "of->base_" identifier -> field_identifier)) ;) (expression_statement "pEVar15 = (Elf_Word *)(puVar4 + uVar17);" (assignment_expression "pEVar15 = (Elf_Word *)(puVar4 + uVar17)" identifier = (cast_expression "(Elf_Word *)(puVar4 + uVar17)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + uVar17)" ( (binary_expression "puVar4 + uVar17" identifier + identifier) )))) ;) (if_statement "if (ppOVar14 == ppOVar2) {\n    if (uVar12 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      this_00 = *ppOVar14;\n      EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4);\n      *pEVar15 = this_00->type_;\n      oVar11 = this_00->offset_;\n      pEVar15[3] = EVar5;\n      pEVar15[2] = (Elf_Word)oVar11;\n      EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4);\n      pEVar15[4] = (Elf_Word)this_00->vaddr_;\n      pEVar15[5] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4);\n      pEVar15[6] = (Elf_Word)this_00->paddr_;\n      pEVar15[7] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4);\n      pEVar15[8] = (Elf_Word)this_00->filesz_;\n      pEVar15[9] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4);\n      pEVar15[10] = (Elf_Word)this_00->memsz_;\n      EVar6 = this_00->flags_;\n      pEVar15[0xb] = EVar5;\n      pEVar15[1] = EVar6;\n      uVar19 = Output_segment::maximum_alignment(this_00);\n      uVar13 = (uint)(uVar19 >> 0x20);\n      uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      uVar10 = this_00->min_p_align_;\n      if (uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)) {\n        uVar10 = uVar19;\n      }\n      pEVar16 = pEVar15 + 0xe;\n      ppOVar14 = ppOVar14 + 1;\n      pSVar7 = this->segment_list_;\n      *(uint64_t *)(pEVar15 + 0xc) = uVar10;\n      pEVar15 = pEVar16;\n    } while ((pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_finish != ppOVar14);\n    uVar17 = (int)pEVar16 - (int)(puVar4 + uVar17);\n    if ((int)uVar17 < 0 || uVar17 != uVar12) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");\n    }\n    if (((this->super_Output_data).field_0x1c & 4) == 0) goto LAB_0011a115;\n  }" if (parenthesized_expression "(ppOVar14 == ppOVar2)" ( (binary_expression "ppOVar14 == ppOVar2" identifier == identifier) )) (compound_statement "{\n    if (uVar12 != 0) goto LAB_0011a0f8;\n  }" { (if_statement "if (uVar12 != 0) goto LAB_0011a0f8;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011a0f8;" goto statement_identifier ;)) }) (else_clause "else {\n    do {\n      this_00 = *ppOVar14;\n      EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4);\n      *pEVar15 = this_00->type_;\n      oVar11 = this_00->offset_;\n      pEVar15[3] = EVar5;\n      pEVar15[2] = (Elf_Word)oVar11;\n      EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4);\n      pEVar15[4] = (Elf_Word)this_00->vaddr_;\n      pEVar15[5] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4);\n      pEVar15[6] = (Elf_Word)this_00->paddr_;\n      pEVar15[7] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4);\n      pEVar15[8] = (Elf_Word)this_00->filesz_;\n      pEVar15[9] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4);\n      pEVar15[10] = (Elf_Word)this_00->memsz_;\n      EVar6 = this_00->flags_;\n      pEVar15[0xb] = EVar5;\n      pEVar15[1] = EVar6;\n      uVar19 = Output_segment::maximum_alignment(this_00);\n      uVar13 = (uint)(uVar19 >> 0x20);\n      uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      uVar10 = this_00->min_p_align_;\n      if (uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)) {\n        uVar10 = uVar19;\n      }\n      pEVar16 = pEVar15 + 0xe;\n      ppOVar14 = ppOVar14 + 1;\n      pSVar7 = this->segment_list_;\n      *(uint64_t *)(pEVar15 + 0xc) = uVar10;\n      pEVar15 = pEVar16;\n    } while ((pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_finish != ppOVar14);\n    uVar17 = (int)pEVar16 - (int)(puVar4 + uVar17);\n    if ((int)uVar17 < 0 || uVar17 != uVar12) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");\n    }\n    if (((this->super_Output_data).field_0x1c & 4) == 0) goto LAB_0011a115;\n  }" else (compound_statement "{\n    do {\n      this_00 = *ppOVar14;\n      EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4);\n      *pEVar15 = this_00->type_;\n      oVar11 = this_00->offset_;\n      pEVar15[3] = EVar5;\n      pEVar15[2] = (Elf_Word)oVar11;\n      EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4);\n      pEVar15[4] = (Elf_Word)this_00->vaddr_;\n      pEVar15[5] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4);\n      pEVar15[6] = (Elf_Word)this_00->paddr_;\n      pEVar15[7] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4);\n      pEVar15[8] = (Elf_Word)this_00->filesz_;\n      pEVar15[9] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4);\n      pEVar15[10] = (Elf_Word)this_00->memsz_;\n      EVar6 = this_00->flags_;\n      pEVar15[0xb] = EVar5;\n      pEVar15[1] = EVar6;\n      uVar19 = Output_segment::maximum_alignment(this_00);\n      uVar13 = (uint)(uVar19 >> 0x20);\n      uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      uVar10 = this_00->min_p_align_;\n      if (uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)) {\n        uVar10 = uVar19;\n      }\n      pEVar16 = pEVar15 + 0xe;\n      ppOVar14 = ppOVar14 + 1;\n      pSVar7 = this->segment_list_;\n      *(uint64_t *)(pEVar15 + 0xc) = uVar10;\n      pEVar15 = pEVar16;\n    } while ((pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_finish != ppOVar14);\n    uVar17 = (int)pEVar16 - (int)(puVar4 + uVar17);\n    if ((int)uVar17 < 0 || uVar17 != uVar12) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");\n    }\n    if (((this->super_Output_data).field_0x1c & 4) == 0) goto LAB_0011a115;\n  }" { (do_statement "do {\n      this_00 = *ppOVar14;\n      EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4);\n      *pEVar15 = this_00->type_;\n      oVar11 = this_00->offset_;\n      pEVar15[3] = EVar5;\n      pEVar15[2] = (Elf_Word)oVar11;\n      EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4);\n      pEVar15[4] = (Elf_Word)this_00->vaddr_;\n      pEVar15[5] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4);\n      pEVar15[6] = (Elf_Word)this_00->paddr_;\n      pEVar15[7] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4);\n      pEVar15[8] = (Elf_Word)this_00->filesz_;\n      pEVar15[9] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4);\n      pEVar15[10] = (Elf_Word)this_00->memsz_;\n      EVar6 = this_00->flags_;\n      pEVar15[0xb] = EVar5;\n      pEVar15[1] = EVar6;\n      uVar19 = Output_segment::maximum_alignment(this_00);\n      uVar13 = (uint)(uVar19 >> 0x20);\n      uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      uVar10 = this_00->min_p_align_;\n      if (uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)) {\n        uVar10 = uVar19;\n      }\n      pEVar16 = pEVar15 + 0xe;\n      ppOVar14 = ppOVar14 + 1;\n      pSVar7 = this->segment_list_;\n      *(uint64_t *)(pEVar15 + 0xc) = uVar10;\n      pEVar15 = pEVar16;\n    } while ((pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_finish != ppOVar14);" do (compound_statement "{\n      this_00 = *ppOVar14;\n      EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4);\n      *pEVar15 = this_00->type_;\n      oVar11 = this_00->offset_;\n      pEVar15[3] = EVar5;\n      pEVar15[2] = (Elf_Word)oVar11;\n      EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4);\n      pEVar15[4] = (Elf_Word)this_00->vaddr_;\n      pEVar15[5] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4);\n      pEVar15[6] = (Elf_Word)this_00->paddr_;\n      pEVar15[7] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4);\n      pEVar15[8] = (Elf_Word)this_00->filesz_;\n      pEVar15[9] = EVar5;\n      EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4);\n      pEVar15[10] = (Elf_Word)this_00->memsz_;\n      EVar6 = this_00->flags_;\n      pEVar15[0xb] = EVar5;\n      pEVar15[1] = EVar6;\n      uVar19 = Output_segment::maximum_alignment(this_00);\n      uVar13 = (uint)(uVar19 >> 0x20);\n      uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      uVar10 = this_00->min_p_align_;\n      if (uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)) {\n        uVar10 = uVar19;\n      }\n      pEVar16 = pEVar15 + 0xe;\n      ppOVar14 = ppOVar14 + 1;\n      pSVar7 = this->segment_list_;\n      *(uint64_t *)(pEVar15 + 0xc) = uVar10;\n      pEVar15 = pEVar16;\n    }" { (expression_statement "this_00 = *ppOVar14;" (assignment_expression "this_00 = *ppOVar14" identifier = (pointer_expression "*ppOVar14" * identifier)) ;) (expression_statement "EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4);" (assignment_expression "EVar5 = *(Elf_Word *)((int)&this_00->offset_ + 4)" identifier = (pointer_expression "*(Elf_Word *)((int)&this_00->offset_ + 4)" * (cast_expression "(Elf_Word *)((int)&this_00->offset_ + 4)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->offset_ + 4)" ( (binary_expression "(int)&this_00->offset_ + 4" (cast_expression "(int)&this_00->offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->offset_" & (field_expression "this_00->offset_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "*pEVar15 = this_00->type_;" (assignment_expression "*pEVar15 = this_00->type_" (pointer_expression "*pEVar15" * identifier) = (field_expression "this_00->type_" identifier -> field_identifier)) ;) (expression_statement "oVar11 = this_00->offset_;" (assignment_expression "oVar11 = this_00->offset_" identifier = (field_expression "this_00->offset_" identifier -> field_identifier)) ;) (expression_statement "pEVar15[3] = EVar5;" (assignment_expression "pEVar15[3] = EVar5" (subscript_expression "pEVar15[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pEVar15[2] = (Elf_Word)oVar11;" (assignment_expression "pEVar15[2] = (Elf_Word)oVar11" (subscript_expression "pEVar15[2]" identifier [ number_literal ]) = (cast_expression "(Elf_Word)oVar11" ( (type_descriptor "Elf_Word" type_identifier) ) identifier)) ;) (expression_statement "EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4);" (assignment_expression "EVar5 = *(Elf_Word *)((int)&this_00->vaddr_ + 4)" identifier = (pointer_expression "*(Elf_Word *)((int)&this_00->vaddr_ + 4)" * (cast_expression "(Elf_Word *)((int)&this_00->vaddr_ + 4)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->vaddr_ + 4)" ( (binary_expression "(int)&this_00->vaddr_ + 4" (cast_expression "(int)&this_00->vaddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->vaddr_" & (field_expression "this_00->vaddr_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pEVar15[4] = (Elf_Word)this_00->vaddr_;" (assignment_expression "pEVar15[4] = (Elf_Word)this_00->vaddr_" (subscript_expression "pEVar15[4]" identifier [ number_literal ]) = (cast_expression "(Elf_Word)this_00->vaddr_" ( (type_descriptor "Elf_Word" type_identifier) ) (field_expression "this_00->vaddr_" identifier -> field_identifier))) ;) (expression_statement "pEVar15[5] = EVar5;" (assignment_expression "pEVar15[5] = EVar5" (subscript_expression "pEVar15[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4);" (assignment_expression "EVar5 = *(Elf_Word *)((int)&this_00->paddr_ + 4)" identifier = (pointer_expression "*(Elf_Word *)((int)&this_00->paddr_ + 4)" * (cast_expression "(Elf_Word *)((int)&this_00->paddr_ + 4)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->paddr_ + 4)" ( (binary_expression "(int)&this_00->paddr_ + 4" (cast_expression "(int)&this_00->paddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->paddr_" & (field_expression "this_00->paddr_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pEVar15[6] = (Elf_Word)this_00->paddr_;" (assignment_expression "pEVar15[6] = (Elf_Word)this_00->paddr_" (subscript_expression "pEVar15[6]" identifier [ number_literal ]) = (cast_expression "(Elf_Word)this_00->paddr_" ( (type_descriptor "Elf_Word" type_identifier) ) (field_expression "this_00->paddr_" identifier -> field_identifier))) ;) (expression_statement "pEVar15[7] = EVar5;" (assignment_expression "pEVar15[7] = EVar5" (subscript_expression "pEVar15[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4);" (assignment_expression "EVar5 = *(Elf_Word *)((int)&this_00->filesz_ + 4)" identifier = (pointer_expression "*(Elf_Word *)((int)&this_00->filesz_ + 4)" * (cast_expression "(Elf_Word *)((int)&this_00->filesz_ + 4)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->filesz_ + 4)" ( (binary_expression "(int)&this_00->filesz_ + 4" (cast_expression "(int)&this_00->filesz_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->filesz_" & (field_expression "this_00->filesz_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pEVar15[8] = (Elf_Word)this_00->filesz_;" (assignment_expression "pEVar15[8] = (Elf_Word)this_00->filesz_" (subscript_expression "pEVar15[8]" identifier [ number_literal ]) = (cast_expression "(Elf_Word)this_00->filesz_" ( (type_descriptor "Elf_Word" type_identifier) ) (field_expression "this_00->filesz_" identifier -> field_identifier))) ;) (expression_statement "pEVar15[9] = EVar5;" (assignment_expression "pEVar15[9] = EVar5" (subscript_expression "pEVar15[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4);" (assignment_expression "EVar5 = *(Elf_Word *)((int)&this_00->memsz_ + 4)" identifier = (pointer_expression "*(Elf_Word *)((int)&this_00->memsz_ + 4)" * (cast_expression "(Elf_Word *)((int)&this_00->memsz_ + 4)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->memsz_ + 4)" ( (binary_expression "(int)&this_00->memsz_ + 4" (cast_expression "(int)&this_00->memsz_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->memsz_" & (field_expression "this_00->memsz_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pEVar15[10] = (Elf_Word)this_00->memsz_;" (assignment_expression "pEVar15[10] = (Elf_Word)this_00->memsz_" (subscript_expression "pEVar15[10]" identifier [ number_literal ]) = (cast_expression "(Elf_Word)this_00->memsz_" ( (type_descriptor "Elf_Word" type_identifier) ) (field_expression "this_00->memsz_" identifier -> field_identifier))) ;) (expression_statement "EVar6 = this_00->flags_;" (assignment_expression "EVar6 = this_00->flags_" identifier = (field_expression "this_00->flags_" identifier -> field_identifier)) ;) (expression_statement "pEVar15[0xb] = EVar5;" (assignment_expression "pEVar15[0xb] = EVar5" (subscript_expression "pEVar15[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pEVar15[1] = EVar6;" (assignment_expression "pEVar15[1] = EVar6" (subscript_expression "pEVar15[1]" identifier [ number_literal ]) = identifier) ;) (ERROR "uVar19 = Output_segment::" (assignment_expression "uVar19 = Output_segment" identifier = identifier) : :) (expression_statement "maximum_alignment(this_00);" (call_expression "maximum_alignment(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;) (expression_statement "uVar13 = (uint)(uVar19 >> 0x20);" (assignment_expression "uVar13 = (uint)(uVar19 >> 0x20)" identifier = (call_expression "(uint)(uVar19 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 >> 0x20)" ( (binary_expression "uVar19 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4);" (assignment_expression "uVar8 = *(uint *)((int)&this_00->min_p_align_ + 4)" identifier = (pointer_expression "*(uint *)((int)&this_00->min_p_align_ + 4)" * (cast_expression "(uint *)((int)&this_00->min_p_align_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->min_p_align_ + 4)" ( (binary_expression "(int)&this_00->min_p_align_ + 4" (cast_expression "(int)&this_00->min_p_align_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->min_p_align_" & (field_expression "this_00->min_p_align_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar10 = this_00->min_p_align_;" (assignment_expression "uVar10 = this_00->min_p_align_" identifier = (field_expression "this_00->min_p_align_" identifier -> field_identifier)) ;) (if_statement "if (uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)) {\n        uVar10 = uVar19;\n      }" if (parenthesized_expression "(uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19))" ( (binary_expression "uVar8 < uVar13 || uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)" (binary_expression "uVar8 < uVar13" identifier < identifier) || (binary_expression "uVar8 - uVar13 < (uint)((uint)this_00->min_p_align_ < (uint)uVar19)" (binary_expression "uVar8 - uVar13" identifier - identifier) < (call_expression "(uint)((uint)this_00->min_p_align_ < (uint)uVar19)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)this_00->min_p_align_ < (uint)uVar19)" ( (binary_expression "(uint)this_00->min_p_align_ < (uint)uVar19" (cast_expression "(uint)this_00->min_p_align_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this_00->min_p_align_" identifier -> field_identifier)) < (cast_expression "(uint)uVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) (compound_statement "{\n        uVar10 = uVar19;\n      }" { (expression_statement "uVar10 = uVar19;" (assignment_expression "uVar10 = uVar19" identifier = identifier) ;) })) (expression_statement "pEVar16 = pEVar15 + 0xe;" (assignment_expression "pEVar16 = pEVar15 + 0xe" identifier = (binary_expression "pEVar15 + 0xe" identifier + number_literal)) ;) (expression_statement "ppOVar14 = ppOVar14 + 1;" (assignment_expression "ppOVar14 = ppOVar14 + 1" identifier = (binary_expression "ppOVar14 + 1" identifier + number_literal)) ;) (expression_statement "pSVar7 = this->segment_list_;" (assignment_expression "pSVar7 = this->segment_list_" identifier = (field_expression "this->segment_list_" identifier -> field_identifier)) ;) (expression_statement "*(uint64_t *)(pEVar15 + 0xc) = uVar10;" (assignment_expression "*(uint64_t *)(pEVar15 + 0xc) = uVar10" (pointer_expression "*(uint64_t *)(pEVar15 + 0xc)" * (cast_expression "(uint64_t *)(pEVar15 + 0xc)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pEVar15 + 0xc)" ( (binary_expression "pEVar15 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "pEVar15 = pEVar16;" (assignment_expression "pEVar15 = pEVar16" identifier = identifier) ;) }) while (parenthesized_expression "((pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_finish != ppOVar14)" ( (binary_expression "(pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_finish != ppOVar14" (field_expression "(pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl._M_finish" (field_expression "(pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>).\n             _M_impl" (parenthesized_expression "(pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>)" ( (binary_expression "pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>" (binary_expression "pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "pSVar7->\n             super__Vector_base<gold::Output_segment*,_std::allocator<gold" (binary_expression "pSVar7->\n             super__Vector_base<gold::Output_segment*,_std" (binary_expression "pSVar7->\n             super__Vector_base<gold" (field_expression "pSVar7->\n             super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) != identifier) )) ;) (expression_statement "uVar17 = (int)pEVar16 - (int)(puVar4 + uVar17);" (assignment_expression "uVar17 = (int)pEVar16 - (int)(puVar4 + uVar17)" identifier = (binary_expression "(int)pEVar16 - (int)(puVar4 + uVar17)" (cast_expression "(int)pEVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)(puVar4 + uVar17)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar4 + uVar17)" ( (binary_expression "puVar4 + uVar17" identifier + identifier) ))))) ;) (if_statement "if ((int)uVar17 < 0 || uVar17 != uVar12) {\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");\n    }" if (parenthesized_expression "((int)uVar17 < 0 || uVar17 != uVar12)" ( (binary_expression "(int)uVar17 < 0 || uVar17 != uVar12" (binary_expression "(int)uVar17 < 0" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "uVar17 != uVar12" identifier != identifier)) )) (compound_statement "{\nLAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");\n    }" { (labeled_statement "LAB_0011a0f8:\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x1ab,"do_sized_write")" identifier (argument_list "("../../gold/output.cc",0x1ab,"do_sized_write")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") ))) ;)) })) (if_statement "if (((this->super_Output_data).field_0x1c & 4) == 0) goto LAB_0011a115;" if (parenthesized_expression "(((this->super_Output_data).field_0x1c & 4) == 0)" ( (binary_expression "((this->super_Output_data).field_0x1c & 4) == 0" (parenthesized_expression "((this->super_Output_data).field_0x1c & 4)" ( (binary_expression "(this->super_Output_data).field_0x1c & 4" (field_expression "(this->super_Output_data).field_0x1c" (parenthesized_expression "(this->super_Output_data)" ( (field_expression "this->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0011a115;" goto statement_identifier ;)) }))) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00119f70(int param_1,int param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  int iVar14;\n  undefined8 uVar15;\n  \n  piVar9 = (int *)**(int **)(param_1 + 0x20);\n  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];\n  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }\n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }\n  uVar13 = *(uint *)(param_1 + 0x14);\n  piVar7 = piVar9;\n  if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }\n  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);\n  puVar11 = puVar10;\n  if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00119f70(int param_1,int param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  int iVar14;\n  undefined8 uVar15;\n  \n  piVar9 = (int *)**(int **)(param_1 + 0x20);\n  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];\n  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }\n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }\n  uVar13 = *(uint *)(param_1 + 0x14);\n  piVar7 = piVar9;\n  if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }\n  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);\n  puVar11 = puVar10;\n  if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00119f70(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  int iVar14;\n  undefined8 uVar15;\n  \n  piVar9 = (int *)**(int **)(param_1 + 0x20);\n  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];\n  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }\n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }\n  uVar13 = *(uint *)(param_1 + 0x14);\n  piVar7 = piVar9;\n  if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }\n  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);\n  puVar11 = puVar10;\n  if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined8 uVar15;" type_identifier identifier ;) (expression_statement "piVar9 = (int *)**(int **)(param_1 + 0x20);" (assignment_expression "piVar9 = (int *)**(int **)(param_1 + 0x20)" identifier = (cast_expression "(int *)**(int **)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(param_1 + 0x20)" * (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))))) ;) (expression_statement "piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];" (assignment_expression "piVar8 = (int *)(*(int **)(param_1 + 0x20))[1]" identifier = (cast_expression "(int *)(*(int **)(param_1 + 0x20))[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "(*(int **)(param_1 + 0x20))[1]" (parenthesized_expression "(*(int **)(param_1 + 0x20))" ( (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) )) [ number_literal ]))) ;) (expression_statement "uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;" (assignment_expression "uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38" identifier = (binary_expression "((int)piVar8 - (int)piVar9 >> 2) * 0x38" (parenthesized_expression "((int)piVar8 - (int)piVar9 >> 2)" ( (binary_expression "(int)piVar8 - (int)piVar9 >> 2" (binary_expression "(int)piVar8 - (int)piVar9" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }" { (expression_statement "FUN_0007ac80("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0007ac80("../../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 ") ))) ;) })) (if_statement "if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }" if (parenthesized_expression "(uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0)" ( (binary_expression "uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0" (binary_expression "uVar6 != *(uint *)(param_1 + 0xc)" identifier != (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) || (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal)) )) (compound_statement "{\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }" { (expression_statement "FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);" (call_expression "FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6)" identifier (argument_list "("../../gold/output.cc",0x19e,"do_sized_write",uVar6)" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") , identifier ))) ;) })) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }" { (labeled_statement "LAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);" statement_identifier : (expression_statement "FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);" (call_expression "FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1)" identifier (argument_list "("../../gold/output.h",0xe3,"offset",param_1)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") , identifier ))) ;)) })) (expression_statement "uVar13 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x14)" identifier = (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar9;" (assignment_expression "piVar7 = piVar9" identifier = identifier) ;) (if_statement "if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0))" ( (binary_expression "(*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)" (parenthesized_expression "(*(int *)(param_1 + 0x18) < 0)" ( (binary_expression "*(int *)(param_1 + 0x18) < 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) < number_literal) )) || (parenthesized_expression "(iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)" ( (comma_expression "iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13)" identifier = (binary_expression "*(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13)" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar6,uVar13)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6,uVar13)" identifier (argument_list "(uVar6,uVar13)" ( identifier , identifier )))))) , (comma_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < uVar6 + uVar13)" ( (binary_expression "*(uint *)(param_2 + 8) < uVar6 + uVar13" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) < (binary_expression "uVar6 + uVar13" identifier + identifier)) )))) , (comma_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar14" identifier = (binary_expression "*(int *)(param_2 + 0xc) - iVar14" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) - identifier)) , (comma_expression "piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "piVar7 = (int *)(iVar4 - uVar3)" identifier = (cast_expression "(int *)(iVar4 - uVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 - uVar3)" ( (binary_expression "iVar4 - uVar3" identifier - identifier) )))) , (binary_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3))" ( (binary_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar14)" identifier (argument_list "(*(int *)(param_2 + 0xc),iVar14)" ( (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar4,uVar3)" identifier (argument_list "(iVar4,uVar3)" ( identifier , identifier )))) )) != (binary_expression "(int)piVar7 < 0" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)))))) ))) )) (compound_statement "{\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }" { (expression_statement "FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);" (call_expression "FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7)" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view",piVar7)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") , identifier ))) ;) })) (expression_statement "puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);" (assignment_expression "puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13)" identifier = (cast_expression "(undefined4 *)(*(int *)(param_2 + 0x10) + uVar13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x10) + uVar13)" ( (binary_expression "*(int *)(param_2 + 0x10) + uVar13" (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" identifier = identifier) ;) (if_statement "if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" if (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) (compound_statement "{\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }" { (if_statement "if (uVar6 != 0) goto LAB_0011a0f8;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011a0f8;" goto statement_identifier ;)) }) (else_clause "else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" else (compound_statement "{\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" { (do_statement "do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);" do (compound_statement "{\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    }" { (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x188);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x188)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x188)" * (cast_expression "(undefined4 *)(iVar4 + 0x188)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x188)" ( (binary_expression "iVar4 + 0x188" identifier + number_literal) ))))) ;) (expression_statement "*puVar11 = *(undefined4 *)(iVar4 + 0x194);" (assignment_expression "*puVar11 = *(undefined4 *)(iVar4 + 0x194)" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*(undefined4 *)(iVar4 + 0x194)" * (cast_expression "(undefined4 *)(iVar4 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x194)" ( (binary_expression "iVar4 + 0x194" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(iVar4 + 0x184);" (assignment_expression "uVar2 = *(undefined4 *)(iVar4 + 0x184)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x184)" * (cast_expression "(undefined4 *)(iVar4 + 0x184)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x184)" ( (binary_expression "iVar4 + 0x184" identifier + number_literal) ))))) ;) (expression_statement "puVar11[3] = uVar1;" (assignment_expression "puVar11[3] = uVar1" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[2] = uVar2;" (assignment_expression "puVar11[2] = uVar2" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x160);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x160)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x160)" * (cast_expression "(undefined4 *)(iVar4 + 0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x160)" ( (binary_expression "iVar4 + 0x160" identifier + number_literal) ))))) ;) (expression_statement "puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);" (assignment_expression "puVar11[4] = *(undefined4 *)(iVar4 + 0x15c)" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar4 + 0x15c)" * (cast_expression "(undefined4 *)(iVar4 + 0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x15c)" ( (binary_expression "iVar4 + 0x15c" identifier + number_literal) ))))) ;) (expression_statement "puVar11[5] = uVar1;" (assignment_expression "puVar11[5] = uVar1" (subscript_expression "puVar11[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x168);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x168)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x168)" * (cast_expression "(undefined4 *)(iVar4 + 0x168)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x168)" ( (binary_expression "iVar4 + 0x168" identifier + number_literal) ))))) ;) (expression_statement "puVar11[6] = *(undefined4 *)(iVar4 + 0x164);" (assignment_expression "puVar11[6] = *(undefined4 *)(iVar4 + 0x164)" (subscript_expression "puVar11[6]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar4 + 0x164)" * (cast_expression "(undefined4 *)(iVar4 + 0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x164)" ( (binary_expression "iVar4 + 0x164" identifier + number_literal) ))))) ;) (expression_statement "puVar11[7] = uVar1;" (assignment_expression "puVar11[7] = uVar1" (subscript_expression "puVar11[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 400);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 400)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 400)" * (cast_expression "(undefined4 *)(iVar4 + 400)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 400)" ( (binary_expression "iVar4 + 400" identifier + number_literal) ))))) ;) (expression_statement "puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);" (assignment_expression "puVar11[8] = *(undefined4 *)(iVar4 + 0x18c)" (subscript_expression "puVar11[8]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar4 + 0x18c)" * (cast_expression "(undefined4 *)(iVar4 + 0x18c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18c)" ( (binary_expression "iVar4 + 0x18c" identifier + number_literal) ))))) ;) (expression_statement "puVar11[9] = uVar1;" (assignment_expression "puVar11[9] = uVar1" (subscript_expression "puVar11[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x170);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x170)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x170)" * (cast_expression "(undefined4 *)(iVar4 + 0x170)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x170)" ( (binary_expression "iVar4 + 0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);" (assignment_expression "puVar11[10] = *(undefined4 *)(iVar4 + 0x16c)" (subscript_expression "puVar11[10]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar4 + 0x16c)" * (cast_expression "(undefined4 *)(iVar4 + 0x16c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x16c)" ( (binary_expression "iVar4 + 0x16c" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(iVar4 + 0x198);" (assignment_expression "uVar2 = *(undefined4 *)(iVar4 + 0x198)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x198)" * (cast_expression "(undefined4 *)(iVar4 + 0x198)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x198)" ( (binary_expression "iVar4 + 0x198" identifier + number_literal) ))))) ;) (expression_statement "puVar11[0xb] = uVar1;" (assignment_expression "puVar11[0xb] = uVar1" (subscript_expression "puVar11[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[1] = uVar2;" (assignment_expression "puVar11[1] = uVar2" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar15 = FUN_001036f0(iVar4);" (assignment_expression "uVar15 = FUN_001036f0(iVar4)" identifier = (call_expression "FUN_001036f0(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "uVar13 = (uint)((ulonglong)uVar15 >> 0x20);" (assignment_expression "uVar13 = (uint)((ulonglong)uVar15 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar15 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar15 >> 0x20)" ( (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar5 = *(undefined8 *)(iVar4 + 0x17c);" (assignment_expression "uVar5 = *(undefined8 *)(iVar4 + 0x17c)" identifier = (pointer_expression "*(undefined8 *)(iVar4 + 0x17c)" * (cast_expression "(undefined8 *)(iVar4 + 0x17c)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x17c)" ( (binary_expression "iVar4 + 0x17c" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }" if (parenthesized_expression "(*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15))" ( (binary_expression "*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (binary_expression "*(uint *)(iVar4 + 0x180) < uVar13" (pointer_expression "*(uint *)(iVar4 + 0x180)" * (cast_expression "(uint *)(iVar4 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x180)" ( (binary_expression "iVar4 + 0x180" identifier + number_literal) )))) < identifier) || (binary_expression "*(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (binary_expression "*(uint *)(iVar4 + 0x180) - uVar13" (pointer_expression "*(uint *)(iVar4 + 0x180)" * (cast_expression "(uint *)(iVar4 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x180)" ( (binary_expression "iVar4 + 0x180" identifier + number_literal) )))) - identifier) < (call_expression "(uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" ( (binary_expression "*(uint *)(iVar4 + 0x17c) < (uint)uVar15" (pointer_expression "*(uint *)(iVar4 + 0x17c)" * (cast_expression "(uint *)(iVar4 + 0x17c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x17c)" ( (binary_expression "iVar4 + 0x17c" identifier + number_literal) )))) < (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) (compound_statement "{\n        uVar5 = uVar15;\n      }" { (expression_statement "uVar5 = uVar15;" (assignment_expression "uVar5 = uVar15" identifier = identifier) ;) })) (expression_statement "puVar12 = puVar11 + 0xe;" (assignment_expression "puVar12 = puVar11 + 0xe" identifier = (binary_expression "puVar11 + 0xe" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x20)" identifier = (pointer_expression "*(int *)(param_1 + 0x20)" * (cast_expression "(int *)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar11 + 0xc) = uVar5;" (assignment_expression "*(undefined8 *)(puVar11 + 0xc) = uVar5" (pointer_expression "*(undefined8 *)(puVar11 + 0xc)" * (cast_expression "(undefined8 *)(puVar11 + 0xc)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xc)" ( (binary_expression "puVar11 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" identifier = identifier) ;) }) while (parenthesized_expression "(*(int **)(iVar4 + 4) != piVar9)" ( (binary_expression "*(int **)(iVar4 + 4) != piVar9" (pointer_expression "*(int **)(iVar4 + 4)" * (cast_expression "(int **)(iVar4 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) != identifier) )) ;) (expression_statement "uVar13 = (int)puVar12 - (int)puVar10;" (assignment_expression "uVar13 = (int)puVar12 - (int)puVar10" identifier = (binary_expression "(int)puVar12 - (int)puVar10" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar8 = (int *)((int)uVar13 >> 0x1f);" (assignment_expression "piVar8 = (int *)((int)uVar13 >> 0x1f)" identifier = (cast_expression "(int *)((int)uVar13 >> 0x1f)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar13 >> 0x1f)" ( (binary_expression "(int)uVar13 >> 0x1f" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }" if (parenthesized_expression "((int)uVar13 < 0 || uVar13 != uVar6)" ( (binary_expression "(int)uVar13 < 0 || uVar13 != uVar6" (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "uVar13 != uVar6" identifier != identifier)) )) (compound_statement "{\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }" { (labeled_statement "LAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);" statement_identifier : (expression_statement "FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);" (call_expression "FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8)" identifier (argument_list "("../../gold/output.cc",0x1ab,"do_sized_write",piVar8)" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""do_sized_write"" " string_content ") , identifier ))) ;)) })) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0011a115;" goto statement_identifier ;)) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , 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 ") , IDENT ))) ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = 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) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression IDENT + IDENT)) )))) , (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) , (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) || (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) || (binary_expression IDENT != IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) }))) (return_statement return ;) })))
(function_definition "void FUN_00119f70(int param_1,int param_2)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  int iVar14;\n  undefined8 uVar15;\n  \n  piVar9 = (int *)**(int **)(param_1 + 0x20);\n  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];\n  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }\n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }\n  uVar13 = *(uint *)(param_1 + 0x14);\n  piVar7 = piVar9;\n  if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }\n  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);\n  puVar11 = puVar10;\n  if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00119f70(int param_1,int param_2)" (identifier "FUN_00119f70") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  undefined8 uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  undefined4 *puVar10;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  int iVar14;\n  undefined8 uVar15;\n  \n  piVar9 = (int *)**(int **)(param_1 + 0x20);\n  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];\n  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }\n  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }\n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }\n  uVar13 = *(uint *)(param_1 + 0x14);\n  piVar7 = piVar9;\n  if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }\n  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);\n  puVar11 = puVar10;\n  if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined8 uVar15;" (type_identifier "undefined8") (identifier "uVar15") (; ";")) (expression_statement "piVar9 = (int *)**(int **)(param_1 + 0x20);" (assignment_expression "piVar9 = (int *)**(int **)(param_1 + 0x20)" (identifier "piVar9") (= "=") (cast_expression "(int *)**(int **)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(int **)(param_1 + 0x20)" (* "*") (pointer_expression "*(int **)(param_1 + 0x20)" (* "*") (cast_expression "(int **)(param_1 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))))) (; ";")) (expression_statement "piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];" (assignment_expression "piVar8 = (int *)(*(int **)(param_1 + 0x20))[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)(*(int **)(param_1 + 0x20))[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "(*(int **)(param_1 + 0x20))[1]" (parenthesized_expression "(*(int **)(param_1 + 0x20))" (( "(") (pointer_expression "*(int **)(param_1 + 0x20)" (* "*") (cast_expression "(int **)(param_1 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) () ")")) ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;" (assignment_expression "uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38" (identifier "uVar6") (= "=") (binary_expression "((int)piVar8 - (int)piVar9 >> 2) * 0x38" (parenthesized_expression "((int)piVar8 - (int)piVar9 >> 2)" (( "(") (binary_expression "(int)piVar8 - (int)piVar9 >> 2" (binary_expression "(int)piVar8 - (int)piVar9" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (- "-") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x38"))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x1c) & 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");\n  }" ({ "{") (expression_statement "FUN_0007ac80("../../gold/output.h",0xcf,"data_size");" (call_expression "FUN_0007ac80("../../gold/output.h",0xcf,"data_size")" (identifier "FUN_0007ac80") (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") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }" (if "if") (parenthesized_expression "(uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0)" (( "(") (binary_expression "uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0" (binary_expression "uVar6 != *(uint *)(param_1 + 0xc)" (identifier "uVar6") (!= "!=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (|| "||") (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n                    \n    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);\n  }" ({ "{") (expression_statement "FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);" (call_expression "FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6)" (identifier "FUN_0007ac80") (argument_list "("../../gold/output.cc",0x19e,"do_sized_write",uVar6)" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x19e") (, ",") (string_literal ""do_sized_write"" (" """) (string_content "do_sized_write") (" """)) (, ",") (identifier "uVar6") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);\n  }" ({ "{") (labeled_statement "LAB_0011a115:\n                    \n    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);" (statement_identifier "LAB_0011a115") (: ":") (expression_statement "FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);" (call_expression "FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1)" (identifier "FUN_0007ac80") (argument_list "("../../gold/output.h",0xe3,"offset",param_1)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";"))) (} "}"))) (expression_statement "uVar13 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x14)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "piVar7 = piVar9;" (assignment_expression "piVar7 = piVar9" (identifier "piVar7") (= "=") (identifier "piVar9")) (; ";")) (if_statement "if ((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0))" (( "(") (binary_expression "(*(int *)(param_1 + 0x18) < 0) ||\n     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)" (parenthesized_expression "(*(int *)(param_1 + 0x18) < 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) < 0" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)" (( "(") (comma_expression "iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13)" (identifier "iVar14") (= "=") (binary_expression "*(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13)" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (cast_expression "(uint)CARRY4(uVar6,uVar13)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar6,uVar13)" (identifier "CARRY4") (argument_list "(uVar6,uVar13)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar13") () ")")))))) (, ",") (comma_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),\n     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13)" (identifier "uVar3") (= "=") (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_2 + 8) < uVar6 + uVar13)" (( "(") (binary_expression "*(uint *)(param_2 + 8) < uVar6 + uVar13" (pointer_expression "*(uint *)(param_2 + 8)" (* "*") (cast_expression "(uint *)(param_2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (< "<") (binary_expression "uVar6 + uVar13" (identifier "uVar6") (+ "+") (identifier "uVar13"))) () ")")))) (, ",") (comma_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar14" (identifier "iVar4") (= "=") (binary_expression "*(int *)(param_2 + 0xc) - iVar14" (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (- "-") (identifier "iVar14"))) (, ",") (comma_expression "piVar7 = (int *)(iVar4 - uVar3),\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (assignment_expression "piVar7 = (int *)(iVar4 - uVar3)" (identifier "piVar7") (= "=") (cast_expression "(int *)(iVar4 - uVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 - uVar3)" (( "(") (binary_expression "iVar4 - uVar3" (identifier "iVar4") (- "-") (identifier "uVar3")) () ")")))) (, ",") (binary_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3))" (( "(") (binary_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar14)" (identifier "SBORROW4") (argument_list "(*(int *)(param_2 + 0xc),iVar14)" (( "(") (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar14") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar4,uVar3)" (identifier "SBORROW4") (argument_list "(iVar4,uVar3)" (( "(") (identifier "iVar4") (, ",") (identifier "uVar3") () ")")))) () ")")) (!= "!=") (binary_expression "(int)piVar7 < 0" (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7")) (< "<") (number_literal "0"))))))) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);\n  }" ({ "{") (expression_statement "FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);" (call_expression "FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7)" (identifier "FUN_0007ac80") (argument_list "("../../gold/output.h",0x6f,"get_output_view",piVar7)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x6f") (, ",") (string_literal ""get_output_view"" (" """) (string_content "get_output_view") (" """)) (, ",") (identifier "piVar7") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);" (assignment_expression "puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13)" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(*(int *)(param_2 + 0x10) + uVar13)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x10) + uVar13)" (( "(") (binary_expression "*(int *)(param_2 + 0x10) + uVar13" (pointer_expression "*(int *)(param_2 + 0x10)" (* "*") (cast_expression "(int *)(param_2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "uVar13")) () ")")))) (; ";")) (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" (identifier "puVar11") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if (piVar9 == piVar8) {\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }\n  else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" (if "if") (parenthesized_expression "(piVar9 == piVar8)" (( "(") (binary_expression "piVar9 == piVar8" (identifier "piVar9") (== "==") (identifier "piVar8")) () ")")) (compound_statement "{\n    if (uVar6 != 0) goto LAB_0011a0f8;\n  }" ({ "{") (if_statement "if (uVar6 != 0) goto LAB_0011a0f8;" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011a0f8;" (goto "goto") (statement_identifier "LAB_0011a0f8") (; ";"))) (} "}")) (else_clause "else {\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" (else "else") (compound_statement "{\n    do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);\n    uVar13 = (int)puVar12 - (int)puVar10;\n    piVar8 = (int *)((int)uVar13 >> 0x1f);\n    if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }\n    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;\n  }" ({ "{") (do_statement "do {\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    } while (*(int **)(iVar4 + 4) != piVar9);" (do "do") (compound_statement "{\n      iVar4 = *piVar9;\n      uVar1 = *(undefined4 *)(iVar4 + 0x188);\n      *puVar11 = *(undefined4 *)(iVar4 + 0x194);\n      uVar2 = *(undefined4 *)(iVar4 + 0x184);\n      puVar11[3] = uVar1;\n      puVar11[2] = uVar2;\n      uVar1 = *(undefined4 *)(iVar4 + 0x160);\n      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);\n      puVar11[5] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x168);\n      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);\n      puVar11[7] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 400);\n      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);\n      puVar11[9] = uVar1;\n      uVar1 = *(undefined4 *)(iVar4 + 0x170);\n      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);\n      uVar2 = *(undefined4 *)(iVar4 + 0x198);\n      puVar11[0xb] = uVar1;\n      puVar11[1] = uVar2;\n      uVar15 = FUN_001036f0(iVar4);\n      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);\n      uVar5 = *(undefined8 *)(iVar4 + 0x17c);\n      if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }\n      puVar12 = puVar11 + 0xe;\n      piVar9 = piVar9 + 1;\n      iVar4 = *(int *)(param_1 + 0x20);\n      *(undefined8 *)(puVar11 + 0xc) = uVar5;\n      puVar11 = puVar12;\n    }" ({ "{") (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" (identifier "iVar4") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x188);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x188)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x188)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x188)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x188)" (( "(") (binary_expression "iVar4 + 0x188" (identifier "iVar4") (+ "+") (number_literal "0x188")) () ")"))))) (; ";")) (expression_statement "*puVar11 = *(undefined4 *)(iVar4 + 0x194);" (assignment_expression "*puVar11 = *(undefined4 *)(iVar4 + 0x194)" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x194)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x194)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x194)" (( "(") (binary_expression "iVar4 + 0x194" (identifier "iVar4") (+ "+") (number_literal "0x194")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(iVar4 + 0x184);" (assignment_expression "uVar2 = *(undefined4 *)(iVar4 + 0x184)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x184)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x184)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x184)" (( "(") (binary_expression "iVar4 + 0x184" (identifier "iVar4") (+ "+") (number_literal "0x184")) () ")"))))) (; ";")) (expression_statement "puVar11[3] = uVar1;" (assignment_expression "puVar11[3] = uVar1" (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar11[2] = uVar2;" (assignment_expression "puVar11[2] = uVar2" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x160);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x160)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x160)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x160)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x160)" (( "(") (binary_expression "iVar4 + 0x160" (identifier "iVar4") (+ "+") (number_literal "0x160")) () ")"))))) (; ";")) (expression_statement "puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);" (assignment_expression "puVar11[4] = *(undefined4 *)(iVar4 + 0x15c)" (subscript_expression "puVar11[4]" (identifier "puVar11") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x15c)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x15c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x15c)" (( "(") (binary_expression "iVar4 + 0x15c" (identifier "iVar4") (+ "+") (number_literal "0x15c")) () ")"))))) (; ";")) (expression_statement "puVar11[5] = uVar1;" (assignment_expression "puVar11[5] = uVar1" (subscript_expression "puVar11[5]" (identifier "puVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x168);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x168)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x168)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x168)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x168)" (( "(") (binary_expression "iVar4 + 0x168" (identifier "iVar4") (+ "+") (number_literal "0x168")) () ")"))))) (; ";")) (expression_statement "puVar11[6] = *(undefined4 *)(iVar4 + 0x164);" (assignment_expression "puVar11[6] = *(undefined4 *)(iVar4 + 0x164)" (subscript_expression "puVar11[6]" (identifier "puVar11") ([ "[") (number_literal "6") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x164)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x164)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x164)" (( "(") (binary_expression "iVar4 + 0x164" (identifier "iVar4") (+ "+") (number_literal "0x164")) () ")"))))) (; ";")) (expression_statement "puVar11[7] = uVar1;" (assignment_expression "puVar11[7] = uVar1" (subscript_expression "puVar11[7]" (identifier "puVar11") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 400);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 400)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 400)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 400)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 400)" (( "(") (binary_expression "iVar4 + 400" (identifier "iVar4") (+ "+") (number_literal "400")) () ")"))))) (; ";")) (expression_statement "puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);" (assignment_expression "puVar11[8] = *(undefined4 *)(iVar4 + 0x18c)" (subscript_expression "puVar11[8]" (identifier "puVar11") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x18c)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x18c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18c)" (( "(") (binary_expression "iVar4 + 0x18c" (identifier "iVar4") (+ "+") (number_literal "0x18c")) () ")"))))) (; ";")) (expression_statement "puVar11[9] = uVar1;" (assignment_expression "puVar11[9] = uVar1" (subscript_expression "puVar11[9]" (identifier "puVar11") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(iVar4 + 0x170);" (assignment_expression "uVar1 = *(undefined4 *)(iVar4 + 0x170)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x170)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x170)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x170)" (( "(") (binary_expression "iVar4 + 0x170" (identifier "iVar4") (+ "+") (number_literal "0x170")) () ")"))))) (; ";")) (expression_statement "puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);" (assignment_expression "puVar11[10] = *(undefined4 *)(iVar4 + 0x16c)" (subscript_expression "puVar11[10]" (identifier "puVar11") ([ "[") (number_literal "10") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x16c)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x16c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x16c)" (( "(") (binary_expression "iVar4 + 0x16c" (identifier "iVar4") (+ "+") (number_literal "0x16c")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(iVar4 + 0x198);" (assignment_expression "uVar2 = *(undefined4 *)(iVar4 + 0x198)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x198)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x198)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x198)" (( "(") (binary_expression "iVar4 + 0x198" (identifier "iVar4") (+ "+") (number_literal "0x198")) () ")"))))) (; ";")) (expression_statement "puVar11[0xb] = uVar1;" (assignment_expression "puVar11[0xb] = uVar1" (subscript_expression "puVar11[0xb]" (identifier "puVar11") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar11[1] = uVar2;" (assignment_expression "puVar11[1] = uVar2" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar15 = FUN_001036f0(iVar4);" (assignment_expression "uVar15 = FUN_001036f0(iVar4)" (identifier "uVar15") (= "=") (call_expression "FUN_001036f0(iVar4)" (identifier "FUN_001036f0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "uVar13 = (uint)((ulonglong)uVar15 >> 0x20);" (assignment_expression "uVar13 = (uint)((ulonglong)uVar15 >> 0x20)" (identifier "uVar13") (= "=") (call_expression "(uint)((ulonglong)uVar15 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar15 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar5 = *(undefined8 *)(iVar4 + 0x17c);" (assignment_expression "uVar5 = *(undefined8 *)(iVar4 + 0x17c)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined8 *)(iVar4 + 0x17c)" (* "*") (cast_expression "(undefined8 *)(iVar4 + 0x17c)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x17c)" (( "(") (binary_expression "iVar4 + 0x17c" (identifier "iVar4") (+ "+") (number_literal "0x17c")) () ")"))))) (; ";")) (if_statement "if (*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {\n        uVar5 = uVar15;\n      }" (if "if") (parenthesized_expression "(*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15))" (( "(") (binary_expression "*(uint *)(iVar4 + 0x180) < uVar13 ||\n          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (binary_expression "*(uint *)(iVar4 + 0x180) < uVar13" (pointer_expression "*(uint *)(iVar4 + 0x180)" (* "*") (cast_expression "(uint *)(iVar4 + 0x180)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x180)" (( "(") (binary_expression "iVar4 + 0x180" (identifier "iVar4") (+ "+") (number_literal "0x180")) () ")")))) (< "<") (identifier "uVar13")) (|| "||") (binary_expression "*(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (binary_expression "*(uint *)(iVar4 + 0x180) - uVar13" (pointer_expression "*(uint *)(iVar4 + 0x180)" (* "*") (cast_expression "(uint *)(iVar4 + 0x180)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x180)" (( "(") (binary_expression "iVar4 + 0x180" (identifier "iVar4") (+ "+") (number_literal "0x180")) () ")")))) (- "-") (identifier "uVar13")) (< "<") (call_expression "(uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)" (( "(") (binary_expression "*(uint *)(iVar4 + 0x17c) < (uint)uVar15" (pointer_expression "*(uint *)(iVar4 + 0x17c)" (* "*") (cast_expression "(uint *)(iVar4 + 0x17c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x17c)" (( "(") (binary_expression "iVar4 + 0x17c" (identifier "iVar4") (+ "+") (number_literal "0x17c")) () ")")))) (< "<") (cast_expression "(uint)uVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar15"))) () ")"))))) () ")")) (compound_statement "{\n        uVar5 = uVar15;\n      }" ({ "{") (expression_statement "uVar5 = uVar15;" (assignment_expression "uVar5 = uVar15" (identifier "uVar5") (= "=") (identifier "uVar15")) (; ";")) (} "}"))) (expression_statement "puVar12 = puVar11 + 0xe;" (assignment_expression "puVar12 = puVar11 + 0xe" (identifier "puVar12") (= "=") (binary_expression "puVar11 + 0xe" (identifier "puVar11") (+ "+") (number_literal "0xe"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0x20);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x20)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x20)" (* "*") (cast_expression "(int *)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(puVar11 + 0xc) = uVar5;" (assignment_expression "*(undefined8 *)(puVar11 + 0xc) = uVar5" (pointer_expression "*(undefined8 *)(puVar11 + 0xc)" (* "*") (cast_expression "(undefined8 *)(puVar11 + 0xc)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0xc)" (( "(") (binary_expression "puVar11 + 0xc" (identifier "puVar11") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" (identifier "puVar11") (= "=") (identifier "puVar12")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int **)(iVar4 + 4) != piVar9)" (( "(") (binary_expression "*(int **)(iVar4 + 4) != piVar9" (pointer_expression "*(int **)(iVar4 + 4)" (* "*") (cast_expression "(int **)(iVar4 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (identifier "piVar9")) () ")")) (; ";")) (expression_statement "uVar13 = (int)puVar12 - (int)puVar10;" (assignment_expression "uVar13 = (int)puVar12 - (int)puVar10" (identifier "uVar13") (= "=") (binary_expression "(int)puVar12 - (int)puVar10" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (- "-") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")))) (; ";")) (expression_statement "piVar8 = (int *)((int)uVar13 >> 0x1f);" (assignment_expression "piVar8 = (int *)((int)uVar13 >> 0x1f)" (identifier "piVar8") (= "=") (cast_expression "(int *)((int)uVar13 >> 0x1f)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)uVar13 >> 0x1f)" (( "(") (binary_expression "(int)uVar13 >> 0x1f" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((int)uVar13 < 0 || uVar13 != uVar6) {\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }" (if "if") (parenthesized_expression "((int)uVar13 < 0 || uVar13 != uVar6)" (( "(") (binary_expression "(int)uVar13 < 0 || uVar13 != uVar6" (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (number_literal "0")) (|| "||") (binary_expression "uVar13 != uVar6" (identifier "uVar13") (!= "!=") (identifier "uVar6"))) () ")")) (compound_statement "{\nLAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);\n    }" ({ "{") (labeled_statement "LAB_0011a0f8:\n                    \n      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);" (statement_identifier "LAB_0011a0f8") (: ":") (expression_statement "FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);" (call_expression "FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8)" (identifier "FUN_0007ac80") (argument_list "("../../gold/output.cc",0x1ab,"do_sized_write",piVar8)" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x1ab") (, ",") (string_literal ""do_sized_write"" (" """) (string_content "do_sized_write") (" """)) (, ",") (identifier "piVar8") () ")"))) (; ";"))) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011a115;" (goto "goto") (statement_identifier "LAB_0011a115") (; ";"))) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original name: do_sized_write<64, false>
   DWARF original prototype: void do_sized_write<64,_false>(Output_segment_headers * this,
   Output_file * of) */

void __thiscall
var_1::Output_segment_headers::do_sized_write<64,_false>
          (Output_segment_headers *this,Output_file *of)

{
  byte var_5;
  type_1 var_17;
  int var_11;
  type_2 *var_15;
  type_3 *this_00;
  type_4 EVar5;
  type_4 EVar6;
  type_5 *pSVar7;
  type_6 var_14;
  int var_13;
  uint64_t uVar10;
  type_7 oVar11;
  type_6 var_7;
  type_6 var_20;
  type_1 var_16;
  type_4 *var_21;
  type_4 *pEVar16;
  type_6 var_10;
  int var_8;
  uint64_t var_19;
  
  var_16 = (this->segment_list_->
             super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>var_4).
             _M_impl._M_start;
  var_17 = (this->segment_list_->
            super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>var_4).
            _M_impl._M_finish;
  var_7 = ((int)var_17 - (int)var_16 >> 2) * 0x38;
  var_5 = (this->super_Output_data).field_0x1c;
  if ((var_5 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/output.h",0xcf,"data_size");
  }
  if (var_7 != (type_6)(this->super_Output_data).data_size_ ||
      *(int *)((int)&(this->super_Output_data).data_size_ + 4) != 0) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/output.cc",0x19e,"do_sized_write");
  }
  if ((var_5 & 4) == 0) {
LAB_0011a115:
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/output.h",0xe3,"offset");
  }
  var_8 = *(int *)((int)&(this->super_Output_data).offset_ + 4);
  var_10 = (type_6)(this->super_Output_data).offset_;
  if ((var_8 < 0) ||
     (var_11 = *(int *)((int)&of->file_size_ + 4), var_8 = var_8 + (type_6)var_9(var_7,var_10),
     var_14 = (type_6)((type_6)of->file_size_ < var_7 + var_10), var_13 = var_11 - var_8,
     (var_12(var_11,var_8) != var_12(var_13,var_14)) != (int)(var_13 - var_14) < 0)) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/output.h",0x6f,"get_output_view");
  }
  var_15 = of->base_;
  var_21 = (type_4 *)(var_15 + var_10);
  if (var_16 == var_17) {
    if (var_7 != 0) goto LAB_0011a0f8;
  }
  else {
    do {
      this_00 = *var_16;
      EVar5 = *(type_4 *)((int)&this_00->offset_ + 4);
      *var_21 = this_00->type_;
      oVar11 = this_00->offset_;
      var_21[3] = EVar5;
      var_21[2] = (type_4)oVar11;
      EVar5 = *(type_4 *)((int)&this_00->vaddr_ + 4);
      var_21[4] = (type_4)this_00->vaddr_;
      var_21[5] = EVar5;
      EVar5 = *(type_4 *)((int)&this_00->paddr_ + 4);
      var_21[6] = (type_4)this_00->paddr_;
      var_21[7] = EVar5;
      EVar5 = *(type_4 *)((int)&this_00->filesz_ + 4);
      var_21[8] = (type_4)this_00->filesz_;
      var_21[9] = EVar5;
      EVar5 = *(type_4 *)((int)&this_00->memsz_ + 4);
      var_21[10] = (type_4)this_00->memsz_;
      EVar6 = this_00->flags_;
      var_21[0xb] = EVar5;
      var_21[1] = EVar6;
      var_19 = type_3::var_18(this_00);
      var_20 = (type_6)(var_19 >> 0x20);
      var_14 = *(type_6 *)((int)&this_00->min_p_align_ + 4);
      uVar10 = this_00->min_p_align_;
      if (var_14 < var_20 || var_14 - var_20 < (type_6)((type_6)this_00->min_p_align_ < (type_6)var_19)) {
        uVar10 = var_19;
      }
      pEVar16 = var_21 + 0xe;
      var_16 = var_16 + 1;
      pSVar7 = this->segment_list_;
      *(uint64_t *)(var_21 + 0xc) = uVar10;
      var_21 = pEVar16;
    } while ((pSVar7->
             super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>var_4).
             _M_impl._M_finish != var_16);
    var_10 = (int)pEVar16 - (int)(var_15 + var_10);
    if ((int)var_10 < 0 || var_10 != var_7) {
LAB_0011a0f8:
                    /* WARNING: Subroutine does not return */
      var_6("../../gold/output.cc",0x1ab,"do_sized_write");
    }
    if (((this->super_Output_data).field_0x1c & 4) == 0) goto LAB_0011a115;
  }
  return;
}


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

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

void MASKED(int param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  undefined8 uVar5;
  uint uVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  uint uVar13;
  int iVar14;
  undefined8 uVar15;
  
  piVar9 = (int *)**(int **)(param_1 + 0x20);
  piVar8 = (int *)(*(int **)(param_1 + 0x20))[1];
  uVar6 = ((int)piVar8 - (int)piVar9 >> 2) * 0x38;
  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/output.h",0xcf,"data_size");
  }
  if (uVar6 != *(uint *)(param_1 + 0xc) || *(int *)(param_1 + 0x10) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/output.cc",0x19e,"do_sized_write",uVar6);
  }
  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {
LAB_0011a115:
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/output.h",0xe3,"offset",param_1);
  }
  uVar13 = *(uint *)(param_1 + 0x14);
  piVar7 = piVar9;
  if ((*(int *)(param_1 + 0x18) < 0) ||
     (iVar14 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar6,uVar13),
     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar6 + uVar13),
     iVar4 = *(int *)(param_2 + 0xc) - iVar14, piVar7 = (int *)(iVar4 - uVar3),
     (SBORROW4(*(int *)(param_2 + 0xc),iVar14) != SBORROW4(iVar4,uVar3)) != (int)piVar7 < 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/output.h",0x6f,"get_output_view",piVar7);
  }
  puVar10 = (undefined4 *)(*(int *)(param_2 + 0x10) + uVar13);
  puVar11 = puVar10;
  if (piVar9 == piVar8) {
    if (uVar6 != 0) goto LAB_0011a0f8;
  }
  else {
    do {
      iVar4 = *piVar9;
      uVar1 = *(undefined4 *)(iVar4 + 0x188);
      *puVar11 = *(undefined4 *)(iVar4 + 0x194);
      uVar2 = *(undefined4 *)(iVar4 + 0x184);
      puVar11[3] = uVar1;
      puVar11[2] = uVar2;
      uVar1 = *(undefined4 *)(iVar4 + 0x160);
      puVar11[4] = *(undefined4 *)(iVar4 + 0x15c);
      puVar11[5] = uVar1;
      uVar1 = *(undefined4 *)(iVar4 + 0x168);
      puVar11[6] = *(undefined4 *)(iVar4 + 0x164);
      puVar11[7] = uVar1;
      uVar1 = *(undefined4 *)(iVar4 + 400);
      puVar11[8] = *(undefined4 *)(iVar4 + 0x18c);
      puVar11[9] = uVar1;
      uVar1 = *(undefined4 *)(iVar4 + 0x170);
      puVar11[10] = *(undefined4 *)(iVar4 + 0x16c);
      uVar2 = *(undefined4 *)(iVar4 + 0x198);
      puVar11[0xb] = uVar1;
      puVar11[1] = uVar2;
      uVar15 = FUN_001036f0(iVar4);
      uVar13 = (uint)((ulonglong)uVar15 >> 0x20);
      uVar5 = *(undefined8 *)(iVar4 + 0x17c);
      if (*(uint *)(iVar4 + 0x180) < uVar13 ||
          *(uint *)(iVar4 + 0x180) - uVar13 < (uint)(*(uint *)(iVar4 + 0x17c) < (uint)uVar15)) {
        uVar5 = uVar15;
      }
      puVar12 = puVar11 + 0xe;
      piVar9 = piVar9 + 1;
      iVar4 = *(int *)(param_1 + 0x20);
      *(undefined8 *)(puVar11 + 0xc) = uVar5;
      puVar11 = puVar12;
    } while (*(int **)(iVar4 + 4) != piVar9);
    uVar13 = (int)puVar12 - (int)puVar10;
    piVar8 = (int *)((int)uVar13 >> 0x1f);
    if ((int)uVar13 < 0 || uVar13 != uVar6) {
LAB_0011a0f8:
                    /* WARNING: Subroutine does not return */
      FUN_0007ac80("../../gold/output.cc",0x1ab,"do_sized_write",piVar8);
    }
    if ((*(byte *)(param_1 + 0x1c) & 4) == 0) goto LAB_0011a115;
  }
  return;
}

