
/* WARNING: Enum "DW_SECT": Some values do not have unique names */
/* DWARF original prototype: void sized_read_unit_index<false>(Dwo_file * this, uint shndx, uint *
   debug_shndx, Dwp_output_file * output_file, bool is_tu_index) */

void __thiscall
gold::Dwo_file::sized_read_unit_index<false>
          (Dwo_file *this,uint shndx,uint *debug_shndx,Dwp_output_file *output_file,bool is_tu_index
          )

{
  long lVar1;
  uint64_t *puVar2;
  uint64_t *puVar3;
  uint *puVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint64_t signature;
  ulong uVar8;
  char *pcVar9;
  long lVar10;
  long lVar11;
  uint64_t uVar12;
  bool bVar13;
  uint *puVar14;
  long lVar15;
  Section_bounds *pSVar16;
  uchar *puVar17;
  Unit_set *tu_set;
  Section_bounds *pSVar18;
  section_offset_type sVar19;
  void *__dest;
  uchar *contents;
  char *pcVar20;
  ulong uVar21;
  DW_SECT section_id;
  uint64_t *puVar22;
  long lVar23;
  uint64_t *puVar24;
  Section_bounds SVar25;
  bool index_is_new;
  bool info_is_new;
  section_size_type index_len;
  section_size_type info_len;
  Section_bounds sections [9];
  
  uVar5 = *(uint *)((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8);
  if (shndx == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/dwp.cc",0x476,"sized_read_unit_index");
  }
  puVar14 = (uint *)Object::decompressed_section_contents
                              (&this->obj_->super_Object,shndx,&index_len,&index_is_new,
                               (uint64_t *)0x0);
  uVar6 = *puVar14;
  if (uVar6 != 2) {
    (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);
    pcVar9 = this->name_;
    pcVar20 = (char *)gettext("%s: section %s has unsupported version number %d");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */
    gold_fatal(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6);
  }
  uVar6 = puVar14[1];
  if ((uVar6 != 0) && (puVar14[2] != 0)) {
    if (uVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");
    }
    uVar7 = puVar14[3];
    uVar21 = (ulong)uVar7;
    puVar24 = (uint64_t *)(puVar14 + 4);
    lVar15 = (ulong)(puVar14[2] * uVar6) * 4;
    puVar3 = puVar24 + uVar21;
    lVar10 = (ulong)uVar6 * 4 + uVar21 * 4;
    lVar11 = lVar15 + lVar10;
    if ((long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11)) {
      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);
      pcVar9 = this->name_;
      pcVar20 = (char *)gettext("%s: section %s is corrupt");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */
      gold_fatal(pcVar20,pcVar9,sections[0].offset);
    }
    pSVar18 = sections;
    do {
      pSVar18->offset = 0;
      pSVar16 = pSVar18 + 1;
      pSVar18->size = 0;
      pSVar18 = pSVar16;
    } while ((Section_bounds *)&stack0xffffffffffffffc8 != pSVar16);
    lVar15 = 3;
    do {
      while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {
        lVar15 = lVar15 + 1;
        if (lVar15 == 9) goto LAB_001620d1;
      }
      section_id = (DW_SECT)lVar15;
      lVar15 = lVar15 + 1;
      SVar25 = copy_section(this,output_file,*puVar4,section_id);
      sections[(int)section_id].offset = SVar25.offset;
      sections[(int)section_id].size = SVar25.size;
    } while (lVar15 != 9);
LAB_001620d1:
    puVar17 = Object::decompressed_section_contents
                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0);
    if (uVar7 != 0) {
      puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);
      puVar22 = puVar3;
      do {
        while (uVar12 = *puVar22, (uint)uVar12 == 0) {
LAB_0016216d:
          puVar24 = puVar24 + 1;
          puVar22 = (uint64_t *)((long)puVar22 + 4);
          if (puVar22 == puVar2) goto LAB_00162290;
        }
        signature = *puVar24;
        if (is_tu_index) {
          output_file->last_type_sig_ = signature;
          bVar13 = Dwp_output_file::Dwp_index::find_or_add
                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);
          if (bVar13) goto LAB_0016216d;
        }
        tu_set = (Unit_set *)operator_new(0x98);
        pSVar18 = tu_set->sections;
        do {
          pSVar18->offset = 0;
          pSVar16 = pSVar18 + 1;
          pSVar18->size = 0;
          pSVar18 = pSVar16;
        } while ((Unit_set *)pSVar16 != tu_set + 1);
        tu_set->signature = signature;
        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;
        lVar15 = 0;
        do {
          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);
          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);
          lVar1 = lVar15 * 4;
          lVar15 = lVar15 + 1;
          tu_set->sections[uVar5].offset =
               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;
          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;
        } while ((uint)lVar15 <= uVar6);
        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);
        lVar15 = pSVar18->offset;
        uVar8 = pSVar18->size;
        if (is_tu_index) {
          __dest = operator_new__(uVar8);
          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);
          sVar19 = Dwp_output_file::add_contribution
                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);
          pSVar18->offset = sVar19;
          Dwp_output_file::add_tu_set(output_file,tu_set);
          goto LAB_0016216d;
        }
        puVar24 = puVar24 + 1;
        puVar22 = (uint64_t *)((long)puVar22 + 4);
        sVar19 = Dwp_output_file::add_contribution
                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);
        pSVar18->offset = sVar19;
        Dwp_output_file::add_cu_set(output_file,tu_set);
      } while (puVar22 != puVar2);
    }
LAB_00162290:
    if (index_is_new != false) {
      operator_delete__(puVar14);
    }
    if ((info_is_new != false) && (puVar17 != (uchar *)0x0)) {
      operator_delete__(puVar17);
    }
  }
  return;
}



void FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  undefined8 uVar6;
  size_t __n;
  long lVar7;
  char cVar8;
  int *piVar9;
  ulong uVar10;
  long *plVar11;
  long *plVar12;
  long lVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  long lVar17;
  void *pvVar18;
  undefined8 uVar19;
  int iVar20;
  ulong uVar21;
  ulong uVar22;
  ulong uVar23;
  ulong uVar24;
  int iVar25;
  ulong uVar26;
  int *piVar27;
  int *piVar28;
  undefined1 auVar29 [16];
  char local_da;
  char local_d9;
  long local_d8;
  undefined1 local_d0 [8];
  long local_c8 [19];
  
  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));
  iVar20 = 2 - (uint)(param_5 == '\0');
  if ((int)param_2 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");
  }
  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);
  iVar3 = *piVar9;
  if (iVar3 != 2) {
    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);
    uVar6 = *param_1;
    uVar19 = gettext("%s: section %s has unsupported version number %d");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */
    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);
  }
  uVar4 = piVar9[1];
  if ((uVar4 != 0) && (piVar9[2] != 0)) {
    if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");
    }
    uVar10 = (ulong)(piVar9[2] * uVar4);
    uVar5 = piVar9[3];
    uVar22 = (ulong)uVar5;
    piVar28 = piVar9 + 4;
    piVar1 = piVar28 + uVar22 * 2;
    uVar23 = (ulong)uVar4;
    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {
      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);
      uVar6 = *param_1;
      uVar19 = gettext("%s: section %s is corrupt");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */
      FUN_001781e0(uVar19,uVar6,local_c8[0]);
    }
    plVar11 = local_c8;
    do {
      *plVar11 = 0;
      plVar12 = plVar11 + 2;
      plVar11[1] = 0;
      plVar11 = plVar12;
    } while (local_c8 + 0x12 != plVar12);
    uVar26 = 3;
    do {
      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {
        uVar26 = uVar26 + 1;
        if (uVar26 == 9) goto LAB_001620d1;
      }
      iVar25 = (int)uVar26;
      uVar21 = uVar26 & 0xffffffff;
      uVar26 = uVar26 + 1;
      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);
      local_c8[(long)iVar25 * 2] = auVar29._0_8_;
      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;
    } while (uVar26 != 9);
LAB_001620d1:
    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);
    if (uVar5 != 0) {
      piVar27 = piVar1;
      do {
        while (iVar2 = *piVar27, iVar2 == 0) {
LAB_0016216d:
          piVar28 = piVar28 + 2;
          piVar27 = piVar27 + 1;
          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;
        }
        uVar6 = *(undefined8 *)piVar28;
        if (param_5 != '\0') {
          *(undefined8 *)(param_4 + 0x208) = uVar6;
          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);
          if (cVar8 != '\0') goto LAB_0016216d;
        }
        puVar14 = (undefined8 *)FUN_002d9490(0x98);
        puVar15 = puVar14 + 1;
        do {
          *puVar15 = 0;
          puVar16 = puVar15 + 2;
          puVar15[1] = 0;
          puVar15 = puVar16;
        } while (puVar16 != puVar14 + 0x13);
        *puVar14 = uVar6;
        uVar26 = (ulong)((iVar2 + -1) * uVar4);
        lVar17 = 0;
        do {
          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];
          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);
          lVar7 = uVar26 + lVar17;
          lVar17 = lVar17 + 1;
          puVar14[uVar24 * 2 + 1] =
               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];
          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;
        } while ((uint)lVar17 <= uVar4);
        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;
        lVar17 = *plVar11;
        __n = plVar11[1];
        if (param_5 != '\0') {
          pvVar18 = (void *)thunk_FUN_002d9490(__n);
          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);
          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);
          *plVar11 = lVar17;
          FUN_00153210(param_4,puVar14);
          goto LAB_0016216d;
        }
        piVar28 = piVar28 + 2;
        piVar27 = piVar27 + 1;
        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);
        *plVar11 = lVar17;
        FUN_00153090(param_4,puVar14);
      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);
    }
LAB_00162290:
    if (local_da != '\0') {
      thunk_FUN_002dac60(piVar9);
    }
    if ((local_d9 != '\0') && (lVar13 != 0)) {
      thunk_FUN_002dac60(lVar13);
    }
  }
  return;
}


PUSH R15
MOV R15,RDI
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x118
CMP R8B,0x1
SBB RAX,RAX
MOV qword ptr [RSP],RCX
AND RAX,-0x4
CMP R8B,0x1
MOV byte ptr [RSP + 0x33],R8B
SBB RDI,RDI
MOV EAX,dword ptr [RDX + RAX*0x1 + 0x8]
ADD RDI,0x2
CMP R8B,0x1
SBB ECX,ECX
MOV qword ptr [RSP + 0x20],RDI
ADD ECX,0x2
MOV dword ptr [RSP + 0x8],EAX
MOV dword ptr [RSP + 0x34],ECX
TEST ESI,ESI
JZ 0x0016235d
MOV RDI,qword ptr [R15 + 0x8]
MOV qword ptr [RSP + 0x10],RDX
XOR R8D,R8D
MOV R14D,ESI
LEA RCX,[RSP + 0x6e]
LEA RDX,[RSP + 0x70]
CALL 0x001bd870
MOV R10,qword ptr [RSP + 0x10]
MOV EBX,dword ptr [RAX]
MOV qword ptr [RSP + 0x18],RAX
CMP EBX,0x2
JNZ 0x001623cf
MOV RAX,qword ptr [RSP + 0x18]
MOV EBP,dword ptr [RAX + 0x4]
MOV EAX,dword ptr [RAX + 0x8]
TEST EBP,EBP
JZ 0x001622b0
TEST EAX,EAX
JZ 0x001622b0
MOV EDX,dword ptr [RSP + 0x8]
TEST EDX,EDX
JZ 0x001623b7
MOV RCX,qword ptr [RSP + 0x18]
IMUL EAX,EBP
MOV EDX,dword ptr [RCX + 0xc]
LEA R13,[RCX + 0x10]
ADD RCX,qword ptr [RSP + 0x70]
SHL RAX,0x2
LEA RBX,[R13 + RDX*0x8]
MOV dword ptr [RSP + 0x10],EDX
LEA R12,[RBX + RDX*0x4]
MOV EDX,EBP
LEA RDI,[R12 + RDX*0x4]
MOV qword ptr [RSP + 0x38],RDI
ADD RDI,RAX
ADD RAX,RDI
MOV qword ptr [RSP + 0x40],RDI
CMP RCX,RAX
JC 0x00162375
LEA RAX,[RSP + 0x80]
LEA RDX,[RSP + 0x110]
NOP dword ptr [RAX + RAX*0x1]
MOV qword ptr [RAX],0x0
ADD RAX,0x10
MOV qword ptr [RAX + -0x8],0x0
CMP RDX,RAX
JNZ 0x00162058
MOV R8D,0x3
MOV qword ptr [RSP + 0x28],RBX
MOV dword ptr [RSP + 0x48],EBP
MOV RBX,R8
MOV RBP,R10
JMP 0x0016209a
ADD RBX,0x1
CMP RBX,0x9
JZ 0x001620d1
MOV EDX,dword ptr [RBP + RBX*0x4]
TEST EDX,EDX
JZ 0x00162090
MOV RSI,qword ptr [RSP]
MOVSXD R14,EBX
MOV ECX,EBX
MOV RDI,R15
SHL R14,0x4
ADD RBX,0x1
CALL 0x00152a20
MOV qword ptr [RSP + R14*0x1 + 0x80],RAX
MOV qword ptr [RSP + R14*0x1 + 0x88],RDX
CMP RBX,0x9
JNZ 0x0016209a
MOV RDI,qword ptr [R15 + 0x8]
MOV ESI,dword ptr [RSP + 0x8]
LEA RCX,[RSP + 0x6f]
XOR R8D,R8D
LEA RDX,[RSP + 0x78]
MOV RBX,qword ptr [RSP + 0x28]
MOV EBP,dword ptr [RSP + 0x48]
CALL 0x001bd870
MOV qword ptr [RSP + 0x28],RAX
MOV EAX,dword ptr [RSP + 0x10]
TEST EAX,EAX
JZ 0x00162290
MOV RAX,qword ptr [RSP + 0x20]
SHL RAX,0x4
MOV qword ptr [RSP + 0x48],RAX
MOV EAX,dword ptr [RSP + 0x10]
SUB EAX,0x1
LEA RAX,[RBX + RAX*0x4 + 0x4]
MOV qword ptr [RSP + 0x8],RAX
MOV RAX,qword ptr [RSP]
ADD RAX,0x210
MOV qword ptr [RSP + 0x20],RAX
MOV EAX,EBP
MOV RBP,R12
MOV R12D,EAX
JMP 0x00162180
MOV RAX,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x20]
MOV RSI,R8
MOV qword ptr [RSP + 0x10],R8
MOV qword ptr [RAX + 0x208],R8
LEA RDI,[RAX + 0x1d0]
CALL 0x00151b80
MOV R8,qword ptr [RSP + 0x10]
TEST AL,AL
JZ 0x00162193
ADD R13,0x8
ADD RBX,0x4
CMP RBX,qword ptr [RSP + 0x8]
JZ 0x00162290
MOV R15D,dword ptr [RBX]
TEST R15D,R15D
JZ 0x0016216d
CMP byte ptr [RSP + 0x33],0x0
MOV R8,qword ptr [R13]
JNZ 0x00162140
MOV EDI,0x98
MOV qword ptr [RSP + 0x10],R8
CALL 0x002d9490
MOV R8,qword ptr [RSP + 0x10]
MOV R14,RAX
LEA R11,[RAX + 0x8]
MOV RAX,R11
LEA RDX,[R14 + 0x98]
NOP dword ptr [RAX + RAX*0x1]
MOV qword ptr [RAX],0x0
ADD RAX,0x10
MOV qword ptr [RAX + -0x8],0x0
CMP RAX,RDX
JNZ 0x001621c0
LEA EDI,[R15 + -0x1]
MOV RAX,qword ptr [RSP + 0x38]
MOV qword ptr [R14],R8
IMUL EDI,R12D
SHL RDI,0x2
LEA R10,[RAX + RDI*0x1]
ADD RDI,qword ptr [RSP + 0x40]
XOR EAX,EAX
NOP word ptr [RAX + RAX*0x1]
MOV EDX,dword ptr [RBP + RAX*0x4]
MOV RCX,qword ptr [RDI + RAX*0x4]
MOV ESI,dword ptr [R10 + RAX*0x4]
ADD RAX,0x1
SHL RDX,0x4
LEA R8,[R14 + RDX*0x1]
ADD RSI,qword ptr [RSP + RDX*0x1 + 0x80]
MOV EDX,ECX
MOV qword ptr [R8 + 0x8],RSI
MOV qword ptr [R8 + 0x10],RDX
CMP R12D,EAX
JNC 0x00162200
MOV RAX,qword ptr [RSP + 0x48]
MOV RSI,qword ptr [RSP + 0x28]
LEA R10,[R11 + RAX*0x1]
ADD RSI,qword ptr [R10]
CMP byte ptr [RSP + 0x33],0x0
MOV RCX,qword ptr [R10 + 0x8]
JNZ 0x001622c8
MOV R15,qword ptr [RSP]
MOV RDX,RSI
MOV ESI,dword ptr [RSP + 0x34]
MOV qword ptr [RSP + 0x10],R10
MOV R8D,0x1
ADD R13,0x8
ADD RBX,0x4
MOV RDI,R15
CALL 0x001527a0
MOV R10,qword ptr [RSP + 0x10]
MOV RSI,R14
MOV RDI,R15
MOV qword ptr [R10],RAX
CALL 0x00153090
CMP RBX,qword ptr [RSP + 0x8]
JNZ 0x00162180
NOP
CMP byte ptr [RSP + 0x6e],0x0
JNZ 0x00162330
CMP byte ptr [RSP + 0x6f],0x0
JZ 0x001622b0
MOV RAX,qword ptr [RSP + 0x28]
TEST RAX,RAX
JNZ 0x00162350
ADD RSP,0x118
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,RCX
MOV qword ptr [RSP + 0x50],R10
MOV qword ptr [RSP + 0x58],RSI
MOV qword ptr [RSP + 0x10],RCX
CALL 0x002d9430
MOV RCX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RSP + 0x58]
MOV RDI,RAX
MOV RDX,RCX
CALL 0x00147aa0
MOV R15,qword ptr [RSP]
MOV ESI,dword ptr [RSP + 0x34]
MOV R8D,0x1
MOV RCX,qword ptr [RSP + 0x10]
MOV RDX,RAX
MOV RDI,R15
CALL 0x001527a0
MOV R10,qword ptr [RSP + 0x50]
MOV RSI,R14
MOV RDI,R15
MOV qword ptr [R10],RAX
CALL 0x00153210
JMP 0x0016216d
MOV RDI,qword ptr [RSP + 0x18]
CALL 0x002dac30
CMP byte ptr [RSP + 0x6f],0x0
JNZ 0x001622a2
JMP 0x001622b0
MOV RDI,RAX
CALL 0x002dac30
JMP 0x001622b0
LEA RDX,[0x36bc80]
MOV ESI,0x476
LEA RDI,[0x36b004]
CALL 0x0017c650
MOV RSI,qword ptr [R15 + 0x8]
LEA RBX,[RSP + 0x80]
MOV EDX,R14D
MOV RDI,RBX
MOV RAX,qword ptr [RSI]
CALL qword ptr [RAX + 0x80]
MOV RBP,qword ptr [R15]
MOV R12,qword ptr [RSP + 0x80]
LEA RDI,[0x36b7df]
CALL 0x00147320
MOV RDI,RAX
MOV RDX,R12
MOV RSI,RBP
XOR EAX,EAX
CALL 0x001781e0
LEA RDX,[0x36bc80]
MOV ESI,0x490
LEA RDI,[0x36b004]
CALL 0x0017c650
MOV RSI,qword ptr [R15 + 0x8]
LEA RBP,[RSP + 0x80]
MOV EDX,R14D
MOV RDI,RBP
MOV RAX,qword ptr [RSI]
CALL qword ptr [RAX + 0x80]
MOV R12,qword ptr [R15]
MOV R13,qword ptr [RSP + 0x80]
LEA RDI,[0x36b788]
CALL 0x00147320
MOV ECX,EBX
MOV RDI,RAX
MOV RDX,R13
MOV RSI,R12
XOR EAX,EAX
CALL 0x001781e0
(translation_unit "void FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined8 uVar6;\n  size_t __n;\n  long lVar7;\n  char cVar8;\n  int *piVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  long lVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  long lVar17;\n  void *pvVar18;\n  undefined8 uVar19;\n  int iVar20;\n  ulong uVar21;\n  ulong uVar22;\n  ulong uVar23;\n  ulong uVar24;\n  int iVar25;\n  ulong uVar26;\n  int *piVar27;\n  int *piVar28;\n  undefined1 auVar29 [16];\n  char local_da;\n  char local_d9;\n  long local_d8;\n  undefined1 local_d0 [8];\n  long local_c8 [19];\n  \n  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));\n  iVar20 = 2 - (uint)(param_5 == '\0');\n  if ((int)param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);\n  iVar3 = *piVar9;\n  if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }\n  uVar4 = piVar9[1];\n  if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined8 uVar6;\n  size_t __n;\n  long lVar7;\n  char cVar8;\n  int *piVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  long lVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  long lVar17;\n  void *pvVar18;\n  undefined8 uVar19;\n  int iVar20;\n  ulong uVar21;\n  ulong uVar22;\n  ulong uVar23;\n  ulong uVar24;\n  int iVar25;\n  ulong uVar26;\n  int *piVar27;\n  int *piVar28;\n  undefined1 auVar29 [16];\n  char local_da;\n  char local_d9;\n  long local_d8;\n  undefined1 local_d0 [8];\n  long local_c8 [19];\n  \n  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));\n  iVar20 = 2 - (uint)(param_5 == '\0');\n  if ((int)param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);\n  iVar3 = *piVar9;\n  if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }\n  uVar4 = piVar9[1];\n  if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)" identifier (parameter_list "(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char param_5" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined8 uVar6;\n  size_t __n;\n  long lVar7;\n  char cVar8;\n  int *piVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  long lVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  long lVar17;\n  void *pvVar18;\n  undefined8 uVar19;\n  int iVar20;\n  ulong uVar21;\n  ulong uVar22;\n  ulong uVar23;\n  ulong uVar24;\n  int iVar25;\n  ulong uVar26;\n  int *piVar27;\n  int *piVar28;\n  undefined1 auVar29 [16];\n  char local_da;\n  char local_d9;\n  long local_d8;\n  undefined1 local_d0 [8];\n  long local_c8 [19];\n  \n  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));\n  iVar20 = 2 - (uint)(param_5 == '\0');\n  if ((int)param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);\n  iVar3 = *piVar9;\n  if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }\n  uVar4 = piVar9[1];\n  if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "void *pvVar18;" primitive_type (pointer_declarator "*pvVar18" * identifier) ;) (declaration "undefined8 uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "ulong uVar23;" type_identifier identifier ;) (declaration "ulong uVar24;" type_identifier identifier ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "ulong uVar26;" type_identifier identifier ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "undefined1 auVar29 [16];" type_identifier (array_declarator "auVar29 [16]" identifier [ number_literal ]) ;) (declaration "char local_da;" primitive_type identifier ;) (declaration "char local_d9;" primitive_type identifier ;) (declaration "long local_d8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 local_d0 [8];" type_identifier (array_declarator "local_d0 [8]" identifier [ number_literal ]) ;) (declaration "long local_c8 [19];" (sized_type_specifier "long" long) (array_declarator "local_c8 [19]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));" (assignment_expression "iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" identifier = (pointer_expression "*(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" * (cast_expression "(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" ( (binary_expression "param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc)" (binary_expression "param_3 + 8" identifier + number_literal) + (parenthesized_expression "(-(ulong)(param_5 == '\0') & 0xfffffffffffffffc)" ( (binary_expression "-(ulong)(param_5 == '\0') & 0xfffffffffffffffc" (unary_expression "-(ulong)(param_5 == '\0')" - (call_expression "(ulong)(param_5 == '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) & number_literal) ))) ))))) ;) (expression_statement "iVar20 = 2 - (uint)(param_5 == '\0');" (assignment_expression "iVar20 = 2 - (uint)(param_5 == '\0')" identifier = (binary_expression "2 - (uint)(param_5 == '\0')" number_literal - (call_expression "(uint)(param_5 == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))))) ;) (if_statement "if ((int)param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }" if (parenthesized_expression "((int)param_2 == 0)" ( (binary_expression "(int)param_2 == 0" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");" (call_expression "FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index")" identifier (argument_list "("../../gold/dwp.cc",0x476,"sized_read_unit_index")" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""sized_read_unit_index"" " string_content ") ))) ;) })) (expression_statement "piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);" (assignment_expression "piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" identifier = (cast_expression "(int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" identifier (argument_list "(param_1[1],param_2,&local_d8,&local_da,0)" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "&local_d8" & identifier) , (pointer_expression "&local_da" & identifier) , number_literal ))))) ;) (expression_statement "iVar3 = *piVar9;" (assignment_expression "iVar3 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }" if (parenthesized_expression "(iVar3 != 2)" ( (binary_expression "iVar3 != 2" identifier != number_literal) )) (compound_statement "{\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }" { (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" ( (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" * (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" * (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)param_1[1] + 0x80)" ( (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" * (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" ( identifier , (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) , (binary_expression "param_2 & 0xffffffff" identifier & number_literal) ))) ;) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar19 = gettext("%s: section %s has unsupported version number %d");" (assignment_expression "uVar19 = gettext("%s: section %s has unsupported version number %d")" identifier = (call_expression "gettext("%s: section %s has unsupported version number %d")" identifier (argument_list "("%s: section %s has unsupported version number %d")" ( (string_literal ""%s: section %s has unsupported version number %d"" " string_content ") )))) ;) comment comment (expression_statement "FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);" (call_expression "FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3)" identifier (argument_list "(uVar19,uVar6,local_c8[0],iVar3)" ( identifier , identifier , (subscript_expression "local_c8[0]" identifier [ number_literal ]) , identifier ))) ;) })) (expression_statement "uVar4 = piVar9[1];" (assignment_expression "uVar4 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }" if (parenthesized_expression "((uVar4 != 0) && (piVar9[2] != 0))" ( (binary_expression "(uVar4 != 0) && (piVar9[2] != 0)" (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar9[2] != 0)" ( (binary_expression "piVar9[2] != 0" (subscript_expression "piVar9[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }" { (if_statement "if (iVar2 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");" (call_expression "FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index")" identifier (argument_list "("../../gold/dwp.cc",0x490,"sized_read_unit_index")" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""sized_read_unit_index"" " string_content ") ))) ;) })) (expression_statement "uVar10 = (ulong)(piVar9[2] * uVar4);" (assignment_expression "uVar10 = (ulong)(piVar9[2] * uVar4)" identifier = (call_expression "(ulong)(piVar9[2] * uVar4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(piVar9[2] * uVar4)" ( (binary_expression "piVar9[2] * uVar4" (subscript_expression "piVar9[2]" identifier [ number_literal ]) * identifier) )))) ;) (expression_statement "uVar5 = piVar9[3];" (assignment_expression "uVar5 = piVar9[3]" identifier = (subscript_expression "piVar9[3]" identifier [ number_literal ])) ;) (expression_statement "uVar22 = (ulong)uVar5;" (assignment_expression "uVar22 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "piVar28 = piVar9 + 4;" (assignment_expression "piVar28 = piVar9 + 4" identifier = (binary_expression "piVar9 + 4" identifier + number_literal)) ;) (expression_statement "piVar1 = piVar28 + uVar22 * 2;" (assignment_expression "piVar1 = piVar28 + uVar22 * 2" identifier = (binary_expression "piVar28 + uVar22 * 2" identifier + (binary_expression "uVar22 * 2" identifier * number_literal))) ;) (expression_statement "uVar23 = (ulong)uVar4;" (assignment_expression "uVar23 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }" if (parenthesized_expression "((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2)" ( (binary_expression "(int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2" (cast_expression "(int *)((long)piVar9 + local_d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)piVar9 + local_d8)" ( (binary_expression "(long)piVar9 + local_d8" (cast_expression "(long)piVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) < (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 * 2" (binary_expression "piVar1 + uVar22 + uVar23" (binary_expression "piVar1 + uVar22" identifier + identifier) + identifier) + (binary_expression "uVar10 * 2" identifier * number_literal))) )) (compound_statement "{\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }" { (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" ( (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" * (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" * (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)param_1[1] + 0x80)" ( (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" * (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" ( identifier , (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) , (binary_expression "param_2 & 0xffffffff" identifier & number_literal) ))) ;) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar19 = gettext("%s: section %s is corrupt");" (assignment_expression "uVar19 = gettext("%s: section %s is corrupt")" identifier = (call_expression "gettext("%s: section %s is corrupt")" identifier (argument_list "("%s: section %s is corrupt")" ( (string_literal ""%s: section %s is corrupt"" " string_content ") )))) ;) comment comment (expression_statement "FUN_001781e0(uVar19,uVar6,local_c8[0]);" (call_expression "FUN_001781e0(uVar19,uVar6,local_c8[0])" identifier (argument_list "(uVar19,uVar6,local_c8[0])" ( identifier , identifier , (subscript_expression "local_c8[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "plVar11 = local_c8;" (assignment_expression "plVar11 = local_c8" identifier = identifier) ;) (do_statement "do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);" do (compound_statement "{\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    }" { (expression_statement "*plVar11 = 0;" (assignment_expression "*plVar11 = 0" (pointer_expression "*plVar11" * identifier) = number_literal) ;) (expression_statement "plVar12 = plVar11 + 2;" (assignment_expression "plVar12 = plVar11 + 2" identifier = (binary_expression "plVar11 + 2" identifier + number_literal)) ;) (expression_statement "plVar11[1] = 0;" (assignment_expression "plVar11[1] = 0" (subscript_expression "plVar11[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar11 = plVar12;" (assignment_expression "plVar11 = plVar12" identifier = identifier) ;) }) while (parenthesized_expression "(local_c8 + 0x12 != plVar12)" ( (binary_expression "local_c8 + 0x12 != plVar12" (binary_expression "local_c8 + 0x12" identifier + number_literal) != identifier) )) ;) (expression_statement "uVar26 = 3;" (assignment_expression "uVar26 = 3" identifier = number_literal) ;) (do_statement "do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);" do (compound_statement "{\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    }" { (while_statement "while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }" while (parenthesized_expression "(iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0)" ( (comma_expression "iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0" (assignment_expression "iVar3 = *(int *)(param_3 + uVar26 * 4)" identifier = (pointer_expression "*(int *)(param_3 + uVar26 * 4)" * (cast_expression "(int *)(param_3 + uVar26 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + uVar26 * 4)" ( (binary_expression "param_3 + uVar26 * 4" identifier + (binary_expression "uVar26 * 4" identifier * number_literal)) ))))) , (binary_expression "iVar3 == 0" identifier == number_literal)) )) (compound_statement "{\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }" { (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 == 9) goto LAB_001620d1;" if (parenthesized_expression "(uVar26 == 9)" ( (binary_expression "uVar26 == 9" identifier == number_literal) )) (goto_statement "goto LAB_001620d1;" goto statement_identifier ;)) })) (expression_statement "iVar25 = (int)uVar26;" (assignment_expression "iVar25 = (int)uVar26" identifier = (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar21 = uVar26 & 0xffffffff;" (assignment_expression "uVar21 = uVar26 & 0xffffffff" identifier = (binary_expression "uVar26 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);" (assignment_expression "auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21)" identifier = (call_expression "FUN_00152a20(param_1,param_4,iVar3,uVar21)" identifier (argument_list "(param_1,param_4,iVar3,uVar21)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "local_c8[(long)iVar25 * 2] = auVar29._0_8_;" (assignment_expression "local_c8[(long)iVar25 * 2] = auVar29._0_8_" (subscript_expression "local_c8[(long)iVar25 * 2]" identifier [ (binary_expression "(long)iVar25 * 2" (cast_expression "(long)iVar25" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) ]) = (field_expression "auVar29._0_8_" identifier . field_identifier)) ;) (expression_statement "local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;" (assignment_expression "local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_" (subscript_expression "local_c8[(long)iVar25 * 2 + 1]" identifier [ (binary_expression "(long)iVar25 * 2 + 1" (binary_expression "(long)iVar25 * 2" (cast_expression "(long)iVar25" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) + number_literal) ]) = (field_expression "auVar29._8_8_" identifier . field_identifier)) ;) }) while (parenthesized_expression "(uVar26 != 9)" ( (binary_expression "uVar26 != 9" identifier != number_literal) )) ;) (labeled_statement "LAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);" statement_identifier : (expression_statement "lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);" (assignment_expression "lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0)" identifier = (call_expression "FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0)" identifier (argument_list "(param_1[1],iVar2,local_d0,&local_d9,0)" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , identifier , (pointer_expression "&local_d9" & identifier) , number_literal )))) ;)) (if_statement "if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }" { (expression_statement "piVar27 = piVar1;" (assignment_expression "piVar27 = piVar1" identifier = identifier) ;) (do_statement "do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);" do (compound_statement "{\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      }" { (while_statement "while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }" while (parenthesized_expression "(iVar2 = *piVar27, iVar2 == 0)" ( (comma_expression "iVar2 = *piVar27, iVar2 == 0" (assignment_expression "iVar2 = *piVar27" identifier = (pointer_expression "*piVar27" * identifier)) , (binary_expression "iVar2 == 0" identifier == number_literal)) )) (compound_statement "{\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }" { (labeled_statement "LAB_0016216d:\n          piVar28 = piVar28 + 2;" statement_identifier : (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;)) (expression_statement "piVar27 = piVar27 + 1;" (assignment_expression "piVar27 = piVar27 + 1" identifier = (binary_expression "piVar27 + 1" identifier + number_literal)) ;) (if_statement "if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;" if (parenthesized_expression "(piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1)" ( (binary_expression "piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1" identifier == (binary_expression "piVar1 + (ulong)(uVar5 - 1) + 1" (binary_expression "piVar1 + (ulong)(uVar5 - 1)" identifier + (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 - 1)" ( (binary_expression "uVar5 - 1" identifier - number_literal) )))) + number_literal)) )) (goto_statement "goto LAB_00162290;" goto statement_identifier ;)) })) (expression_statement "uVar6 = *(undefined8 *)piVar28;" (assignment_expression "uVar6 = *(undefined8 *)piVar28" identifier = (pointer_expression "*(undefined8 *)piVar28" * (cast_expression "(undefined8 *)piVar28" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }" if (parenthesized_expression "(param_5 != '\0')" ( (binary_expression "param_5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }" { (expression_statement "*(undefined8 *)(param_4 + 0x208) = uVar6;" (assignment_expression "*(undefined8 *)(param_4 + 0x208) = uVar6" (pointer_expression "*(undefined8 *)(param_4 + 0x208)" * (cast_expression "(undefined8 *)(param_4 + 0x208)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x208)" ( (binary_expression "param_4 + 0x208" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);" (assignment_expression "cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210)" identifier = (call_expression "FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210)" identifier (argument_list "(param_4 + 0x1d0,uVar6,param_4 + 0x210)" ( (binary_expression "param_4 + 0x1d0" identifier + number_literal) , identifier , (binary_expression "param_4 + 0x210" identifier + number_literal) )))) ;) (if_statement "if (cVar8 != '\0') goto LAB_0016216d;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0016216d;" goto statement_identifier ;)) })) (expression_statement "puVar14 = (undefined8 *)FUN_002d9490(0x98);" (assignment_expression "puVar14 = (undefined8 *)FUN_002d9490(0x98)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x98)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(0x98)" identifier (argument_list "(0x98)" ( number_literal ))))) ;) (expression_statement "puVar15 = puVar14 + 1;" (assignment_expression "puVar15 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);" do (compound_statement "{\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        }" { (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar16 = puVar15 + 2;" (assignment_expression "puVar16 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) (expression_statement "puVar15[1] = 0;" (assignment_expression "puVar15[1] = 0" (subscript_expression "puVar15[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" identifier = identifier) ;) }) while (parenthesized_expression "(puVar16 != puVar14 + 0x13)" ( (binary_expression "puVar16 != puVar14 + 0x13" identifier != (binary_expression "puVar14 + 0x13" identifier + number_literal)) )) ;) (expression_statement "*puVar14 = uVar6;" (assignment_expression "*puVar14 = uVar6" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "uVar26 = (ulong)((iVar2 + -1) * uVar4);" (assignment_expression "uVar26 = (ulong)((iVar2 + -1) * uVar4)" identifier = (call_expression "(ulong)((iVar2 + -1) * uVar4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((iVar2 + -1) * uVar4)" ( (binary_expression "(iVar2 + -1) * uVar4" (parenthesized_expression "(iVar2 + -1)" ( (binary_expression "iVar2 + -1" identifier + number_literal) )) * identifier) )))) ;) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);" do (compound_statement "{\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        }" { (expression_statement "uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];" (assignment_expression "uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17]" identifier = (cast_expression "(ulong)(uint)piVar1[uVar22 + lVar17]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)piVar1[uVar22 + lVar17]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar1[uVar22 + lVar17]" identifier [ (binary_expression "uVar22 + lVar17" identifier + identifier) ])))) ;) (expression_statement "uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);" (assignment_expression "uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" identifier = (pointer_expression "*(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" * (cast_expression "(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" ( (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17" (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 + uVar26" (binary_expression "piVar1 + uVar22 + uVar23 + uVar10" (binary_expression "piVar1 + uVar22 + uVar23" (binary_expression "piVar1 + uVar22" identifier + identifier) + identifier) + identifier) + identifier) + identifier) ))))) ;) (expression_statement "lVar7 = uVar26 + lVar17;" (assignment_expression "lVar7 = uVar26 + lVar17" identifier = (binary_expression "uVar26 + lVar17" identifier + identifier)) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];" (assignment_expression "puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2]" (subscript_expression "puVar14[uVar24 * 2 + 1]" identifier [ (binary_expression "uVar24 * 2 + 1" (binary_expression "uVar24 * 2" identifier * number_literal) + number_literal) ]) = (binary_expression "(ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2]" (cast_expression "(ulong)(uint)piVar1[uVar22 + uVar23 + lVar7]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)piVar1[uVar22 + uVar23 + lVar7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar1[uVar22 + uVar23 + lVar7]" identifier [ (binary_expression "uVar22 + uVar23 + lVar7" (binary_expression "uVar22 + uVar23" identifier + identifier) + identifier) ]))) + (subscript_expression "local_c8[uVar24 * 2]" identifier [ (binary_expression "uVar24 * 2" identifier * number_literal) ]))) ;) (expression_statement "puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;" (assignment_expression "puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff" (subscript_expression "puVar14[uVar24 * 2 + 2]" identifier [ (binary_expression "uVar24 * 2 + 2" (binary_expression "uVar24 * 2" identifier * number_literal) + number_literal) ]) = (binary_expression "uVar21 & 0xffffffff" identifier & number_literal)) ;) }) while (parenthesized_expression "((uint)lVar17 <= uVar4)" ( (binary_expression "(uint)lVar17 <= uVar4" (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier) <= identifier) )) ;) (expression_statement "plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;" (assignment_expression "plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2" identifier = (binary_expression "puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2" (binary_expression "puVar14 + 1" identifier + number_literal) + (binary_expression "(2 - (ulong)(param_5 == '\0')) * 2" (parenthesized_expression "(2 - (ulong)(param_5 == '\0'))" ( (binary_expression "2 - (ulong)(param_5 == '\0')" number_literal - (call_expression "(ulong)(param_5 == '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) * number_literal))) ;) (expression_statement "lVar17 = *plVar11;" (assignment_expression "lVar17 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (expression_statement "__n = plVar11[1];" (assignment_expression "__n = plVar11[1]" identifier = (subscript_expression "plVar11[1]" identifier [ number_literal ])) ;) (if_statement "if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }" if (parenthesized_expression "(param_5 != '\0')" ( (binary_expression "param_5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }" { (expression_statement "pvVar18 = (void *)thunk_FUN_002d9490(__n);" (assignment_expression "pvVar18 = (void *)thunk_FUN_002d9490(__n)" identifier = (cast_expression "(void *)thunk_FUN_002d9490(__n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d9490(__n)" identifier (argument_list "(__n)" ( identifier ))))) ;) (expression_statement "pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);" (assignment_expression "pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n)" identifier = (call_expression "memcpy(pvVar18,(void *)(lVar13 + lVar17),__n)" identifier (argument_list "(pvVar18,(void *)(lVar13 + lVar17),__n)" ( identifier , (cast_expression "(void *)(lVar13 + lVar17)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar17)" ( (binary_expression "lVar13 + lVar17" identifier + identifier) ))) , identifier )))) ;) (expression_statement "lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);" (assignment_expression "lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1)" identifier = (call_expression "FUN_001527a0(param_4,iVar20,pvVar18,__n,1)" identifier (argument_list "(param_4,iVar20,pvVar18,__n,1)" ( identifier , identifier , identifier , identifier , number_literal )))) ;) (expression_statement "*plVar11 = lVar17;" (assignment_expression "*plVar11 = lVar17" (pointer_expression "*plVar11" * identifier) = identifier) ;) (expression_statement "FUN_00153210(param_4,puVar14);" (call_expression "FUN_00153210(param_4,puVar14)" identifier (argument_list "(param_4,puVar14)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0016216d;" goto statement_identifier ;) })) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;) (expression_statement "piVar27 = piVar27 + 1;" (assignment_expression "piVar27 = piVar27 + 1" identifier = (binary_expression "piVar27 + 1" identifier + number_literal)) ;) (expression_statement "lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);" (assignment_expression "lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" identifier = (call_expression "FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" identifier (argument_list "(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" ( identifier , identifier , (cast_expression "(void *)(lVar13 + lVar17)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar17)" ( (binary_expression "lVar13 + lVar17" identifier + identifier) ))) , identifier , number_literal )))) ;) (expression_statement "*plVar11 = lVar17;" (assignment_expression "*plVar11 = lVar17" (pointer_expression "*plVar11" * identifier) = identifier) ;) (expression_statement "FUN_00153090(param_4,puVar14);" (call_expression "FUN_00153090(param_4,puVar14)" identifier (argument_list "(param_4,puVar14)" ( identifier , identifier ))) ;) }) while (parenthesized_expression "(piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1)" ( (binary_expression "piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1" identifier != (binary_expression "piVar1 + (ulong)(uVar5 - 1) + 1" (binary_expression "piVar1 + (ulong)(uVar5 - 1)" identifier + (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 - 1)" ( (binary_expression "uVar5 - 1" identifier - number_literal) )))) + number_literal)) )) ;) })) (labeled_statement "LAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }" statement_identifier : (if_statement "if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }" if (parenthesized_expression "(local_da != '\0')" ( (binary_expression "local_da != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      thunk_FUN_002dac60(piVar9);\n    }" { (expression_statement "thunk_FUN_002dac60(piVar9);" (call_expression "thunk_FUN_002dac60(piVar9)" identifier (argument_list "(piVar9)" ( identifier ))) ;) }))) (if_statement "if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }" if (parenthesized_expression "((local_d9 != '\0') && (lVar13 != 0))" ( (binary_expression "(local_d9 != '\0') && (lVar13 != 0)" (parenthesized_expression "(local_d9 != '\0')" ( (binary_expression "local_d9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(lVar13 != 0)" ( (binary_expression "lVar13 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      thunk_FUN_002dac60(lVar13);\n    }" { (expression_statement "thunk_FUN_002dac60(lVar13);" (call_expression "thunk_FUN_002dac60(lVar13)" identifier (argument_list "(lVar13)" ( identifier ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DW_SECT": Some values do not have unique names */\n/* DWARF original prototype: void sized_read_unit_index<false>(Dwo_file * this, uint shndx, uint *\n   debug_shndx, Dwp_output_file * output_file, bool is_tu_index) */\n\nvoid __thiscall\ngold::Dwo_file::sized_read_unit_index<false>\n          (Dwo_file *this,uint shndx,uint *debug_shndx,Dwp_output_file *output_file,bool is_tu_index\n          )\n\n{\n  long lVar1;\n  uint64_t *puVar2;\n  uint64_t *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint64_t signature;\n  ulong uVar8;\n  char *pcVar9;\n  long lVar10;\n  long lVar11;\n  uint64_t uVar12;\n  bool bVar13;\n  uint *puVar14;\n  long lVar15;\n  Section_bounds *pSVar16;\n  uchar *puVar17;\n  Unit_set *tu_set;\n  Section_bounds *pSVar18;\n  section_offset_type sVar19;\n  void *__dest;\n  uchar *contents;\n  char *pcVar20;\n  ulong uVar21;\n  DW_SECT section_id;\n  uint64_t *puVar22;\n  long lVar23;\n  uint64_t *puVar24;\n  Section_bounds SVar25;\n  bool index_is_new;\n  bool info_is_new;\n  section_size_type index_len;\n  section_size_type info_len;\n  Section_bounds sections [9];\n  \n  uVar5 = *(uint *)((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8);\n  if (shndx == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  puVar14 = (uint *)Object::decompressed_section_contents\n                              (&this->obj_->super_Object,shndx,&index_len,&index_is_new,\n                               (uint64_t *)0x0);\n  uVar6 = *puVar14;\n  if (uVar6 != 2) {\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n    pcVar9 = this->name_;\n    pcVar20 = (char *)gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    gold_fatal(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6);\n  }\n  uVar6 = puVar14[1];\n  if ((uVar6 != 0) && (puVar14[2] != 0)) {\n    if (uVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar7 = puVar14[3];\n    uVar21 = (ulong)uVar7;\n    puVar24 = (uint64_t *)(puVar14 + 4);\n    lVar15 = (ulong)(puVar14[2] * uVar6) * 4;\n    puVar3 = puVar24 + uVar21;\n    lVar10 = (ulong)uVar6 * 4 + uVar21 * 4;\n    lVar11 = lVar15 + lVar10;\n    if ((long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11)) {\n      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n      pcVar9 = this->name_;\n      pcVar20 = (char *)gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      gold_fatal(pcVar20,pcVar9,sections[0].offset);\n    }\n    pSVar18 = sections;\n    do {\n      pSVar18->offset = 0;\n      pSVar16 = pSVar18 + 1;\n      pSVar18->size = 0;\n      pSVar18 = pSVar16;\n    } while ((Section_bounds *)&stack0xffffffffffffffc8 != pSVar16);\n    lVar15 = 3;\n    do {\n      while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }\n      section_id = (DW_SECT)lVar15;\n      lVar15 = lVar15 + 1;\n      SVar25 = copy_section(this,output_file,*puVar4,section_id);\n      sections[(int)section_id].offset = SVar25.offset;\n      sections[(int)section_id].size = SVar25.size;\n    } while (lVar15 != 9);\nLAB_001620d1:\n    puVar17 = Object::decompressed_section_contents\n                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0);\n    if (uVar7 != 0) {\n      puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);\n      puVar22 = puVar3;\n      do {\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      } while (puVar22 != puVar2);\n    }\nLAB_00162290:\n    if (index_is_new != false) {\n      operator_delete__(puVar14);\n    }\n    if ((info_is_new != false) && (puVar17 != (uchar *)0x0)) {\n      operator_delete__(puVar17);\n    }\n  }\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Dwo_file::sized_read_unit_index<false>\n          (Dwo_file *this,uint shndx,uint *debug_shndx,Dwp_output_file *output_file,bool is_tu_index\n          )\n\n{\n  long lVar1;\n  uint64_t *puVar2;\n  uint64_t *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint64_t signature;\n  ulong uVar8;\n  char *pcVar9;\n  long lVar10;\n  long lVar11;\n  uint64_t uVar12;\n  bool bVar13;\n  uint *puVar14;\n  long lVar15;\n  Section_bounds *pSVar16;\n  uchar *puVar17;\n  Unit_set *tu_set;\n  Section_bounds *pSVar18;\n  section_offset_type sVar19;\n  void *__dest;\n  uchar *contents;\n  char *pcVar20;\n  ulong uVar21;\n  DW_SECT section_id;\n  uint64_t *puVar22;\n  long lVar23;\n  uint64_t *puVar24;\n  Section_bounds SVar25;\n  bool index_is_new;\n  bool info_is_new;\n  section_size_type index_len;\n  section_size_type info_len;\n  Section_bounds sections [9];\n  \n  uVar5 = *(uint *)((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8);\n  if (shndx == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  puVar14 = (uint *)Object::decompressed_section_contents\n                              (&this->obj_->super_Object,shndx,&index_len,&index_is_new,\n                               (uint64_t *)0x0);\n  uVar6 = *puVar14;\n  if (uVar6 != 2) {\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n    pcVar9 = this->name_;\n    pcVar20 = (char *)gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    gold_fatal(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6);\n  }\n  uVar6 = puVar14[1];\n  if ((uVar6 != 0) && (puVar14[2] != 0)) {\n    if (uVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar7 = puVar14[3];\n    uVar21 = (ulong)uVar7;\n    puVar24 = (uint64_t *)(puVar14 + 4);\n    lVar15 = (ulong)(puVar14[2] * uVar6) * 4;\n    puVar3 = puVar24 + uVar21;\n    lVar10 = (ulong)uVar6 * 4 + uVar21 * 4;\n    lVar11 = lVar15 + lVar10;\n    if ((long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11)) {\n      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n      pcVar9 = this->name_;\n      pcVar20 = (char *)gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      gold_fatal(pcVar20,pcVar9,sections[0].offset);\n    }\n    pSVar18 = sections;\n    do {\n      pSVar18->offset = 0;\n      pSVar16 = pSVar18 + 1;\n      pSVar18->size = 0;\n      pSVar18 = pSVar16;\n    } while ((Section_bounds *)&stack0xffffffffffffffc8 != pSVar16);\n    lVar15 = 3;\n    do {\n      while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }\n      section_id = (DW_SECT)lVar15;\n      lVar15 = lVar15 + 1;\n      SVar25 = copy_section(this,output_file,*puVar4,section_id);\n      sections[(int)section_id].offset = SVar25.offset;\n      sections[(int)section_id].size = SVar25.size;\n    } while (lVar15 != 9);\nLAB_001620d1:\n    puVar17 = Object::decompressed_section_contents\n                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0);\n    if (uVar7 != 0) {\n      puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);\n      puVar22 = puVar3;\n      do {\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      } while (puVar22 != puVar2);\n    }\nLAB_00162290:\n    if (index_is_new != false) {\n      operator_delete__(puVar14);\n    }\n    if ((info_is_new != false) && (puVar17 != (uchar *)0x0)) {\n      operator_delete__(puVar17);\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwo_file::" identifier : : identifier : :) (function_declarator "sized_read_unit_index<false>\n          (Dwo_file *this,uint shndx,uint *debug_shndx,Dwp_output_file *output_file,bool is_tu_index\n          )" identifier (ERROR "<false>" < false >) (parameter_list "(Dwo_file *this,uint shndx,uint *debug_shndx,Dwp_output_file *output_file,bool is_tu_index\n          )" ( (parameter_declaration "Dwo_file *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "uint *debug_shndx" type_identifier (pointer_declarator "*debug_shndx" * identifier)) , (parameter_declaration "Dwp_output_file *output_file" type_identifier (pointer_declarator "*output_file" * identifier)) , (parameter_declaration "bool is_tu_index" primitive_type identifier) ))) (compound_statement "{\n  long lVar1;\n  uint64_t *puVar2;\n  uint64_t *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint64_t signature;\n  ulong uVar8;\n  char *pcVar9;\n  long lVar10;\n  long lVar11;\n  uint64_t uVar12;\n  bool bVar13;\n  uint *puVar14;\n  long lVar15;\n  Section_bounds *pSVar16;\n  uchar *puVar17;\n  Unit_set *tu_set;\n  Section_bounds *pSVar18;\n  section_offset_type sVar19;\n  void *__dest;\n  uchar *contents;\n  char *pcVar20;\n  ulong uVar21;\n  DW_SECT section_id;\n  uint64_t *puVar22;\n  long lVar23;\n  uint64_t *puVar24;\n  Section_bounds SVar25;\n  bool index_is_new;\n  bool info_is_new;\n  section_size_type index_len;\n  section_size_type info_len;\n  Section_bounds sections [9];\n  \n  uVar5 = *(uint *)((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8);\n  if (shndx == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  puVar14 = (uint *)Object::decompressed_section_contents\n                              (&this->obj_->super_Object,shndx,&index_len,&index_is_new,\n                               (uint64_t *)0x0);\n  uVar6 = *puVar14;\n  if (uVar6 != 2) {\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n    pcVar9 = this->name_;\n    pcVar20 = (char *)gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    gold_fatal(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6);\n  }\n  uVar6 = puVar14[1];\n  if ((uVar6 != 0) && (puVar14[2] != 0)) {\n    if (uVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar7 = puVar14[3];\n    uVar21 = (ulong)uVar7;\n    puVar24 = (uint64_t *)(puVar14 + 4);\n    lVar15 = (ulong)(puVar14[2] * uVar6) * 4;\n    puVar3 = puVar24 + uVar21;\n    lVar10 = (ulong)uVar6 * 4 + uVar21 * 4;\n    lVar11 = lVar15 + lVar10;\n    if ((long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11)) {\n      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n      pcVar9 = this->name_;\n      pcVar20 = (char *)gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      gold_fatal(pcVar20,pcVar9,sections[0].offset);\n    }\n    pSVar18 = sections;\n    do {\n      pSVar18->offset = 0;\n      pSVar16 = pSVar18 + 1;\n      pSVar18->size = 0;\n      pSVar18 = pSVar16;\n    } while ((Section_bounds *)&stack0xffffffffffffffc8 != pSVar16);\n    lVar15 = 3;\n    do {\n      while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }\n      section_id = (DW_SECT)lVar15;\n      lVar15 = lVar15 + 1;\n      SVar25 = copy_section(this,output_file,*puVar4,section_id);\n      sections[(int)section_id].offset = SVar25.offset;\n      sections[(int)section_id].size = SVar25.size;\n    } while (lVar15 != 9);\nLAB_001620d1:\n    puVar17 = Object::decompressed_section_contents\n                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0);\n    if (uVar7 != 0) {\n      puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);\n      puVar22 = puVar3;\n      do {\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      } while (puVar22 != puVar2);\n    }\nLAB_00162290:\n    if (index_is_new != false) {\n      operator_delete__(puVar14);\n    }\n    if ((info_is_new != false) && (puVar17 != (uchar *)0x0)) {\n      operator_delete__(puVar17);\n    }\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "uint64_t *puVar2;" primitive_type (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint64_t *puVar3;" primitive_type (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint64_t signature;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "uint64_t uVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "Section_bounds *pSVar16;" type_identifier (pointer_declarator "*pSVar16" * identifier) ;) (declaration "uchar *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "Unit_set *tu_set;" type_identifier (pointer_declarator "*tu_set" * identifier) ;) (declaration "Section_bounds *pSVar18;" type_identifier (pointer_declarator "*pSVar18" * identifier) ;) (declaration "section_offset_type sVar19;" type_identifier identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "uchar *contents;" type_identifier (pointer_declarator "*contents" * identifier) ;) (declaration "char *pcVar20;" primitive_type (pointer_declarator "*pcVar20" * identifier) ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "DW_SECT section_id;" type_identifier identifier ;) (declaration "uint64_t *puVar22;" primitive_type (pointer_declarator "*puVar22" * identifier) ;) (declaration "long lVar23;" (sized_type_specifier "long" long) identifier ;) (declaration "uint64_t *puVar24;" primitive_type (pointer_declarator "*puVar24" * identifier) ;) (declaration "Section_bounds SVar25;" type_identifier identifier ;) (declaration "bool index_is_new;" primitive_type identifier ;) (declaration "bool info_is_new;" primitive_type identifier ;) (declaration "section_size_type index_len;" type_identifier identifier ;) (declaration "section_size_type info_len;" type_identifier identifier ;) (declaration "Section_bounds sections [9];" type_identifier (array_declarator "sections [9]" identifier [ number_literal ]) ;) (expression_statement "uVar5 = *(uint *)((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8);" (assignment_expression "uVar5 = *(uint *)((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8)" identifier = (pointer_expression "*(uint *)((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8)" * (cast_expression "(uint *)((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8)" ( (binary_expression "(long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc) + 8" (binary_expression "(long)debug_shndx + (-(ulong)!is_tu_index & 0xfffffffffffffffc)" (cast_expression "(long)debug_shndx" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-(ulong)!is_tu_index & 0xfffffffffffffffc)" ( (binary_expression "-(ulong)!is_tu_index & 0xfffffffffffffffc" (unary_expression "-(ulong)!is_tu_index" - (cast_expression "(ulong)!is_tu_index" ( (type_descriptor "ulong" type_identifier) ) (unary_expression "!is_tu_index" ! identifier))) & number_literal) ))) + number_literal) ))))) ;) (if_statement "if (shndx == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }" if (parenthesized_expression "(shndx == 0)" ( (binary_expression "shndx == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/dwp.cc",0x476,"sized_read_unit_index");" (call_expression "do_gold_unreachable("../../gold/dwp.cc",0x476,"sized_read_unit_index")" identifier (argument_list "("../../gold/dwp.cc",0x476,"sized_read_unit_index")" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""sized_read_unit_index"" " string_content ") ))) ;) })) (ERROR "puVar14 = (uint *)Object::" (assignment_expression "puVar14 = (uint *)Object" identifier = (cast_expression "(uint *)Object" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "decompressed_section_contents\n                              (&this->obj_->super_Object,shndx,&index_len,&index_is_new,\n                               (uint64_t *)0x0);" (call_expression "decompressed_section_contents\n                              (&this->obj_->super_Object,shndx,&index_len,&index_is_new,\n                               (uint64_t *)0x0)" identifier (argument_list "(&this->obj_->super_Object,shndx,&index_len,&index_is_new,\n                               (uint64_t *)0x0)" ( (pointer_expression "&this->obj_->super_Object" & (field_expression "this->obj_->super_Object" (field_expression "this->obj_" identifier -> field_identifier) -> field_identifier)) , identifier , (pointer_expression "&index_len" & identifier) , (pointer_expression "&index_is_new" & identifier) , (cast_expression "(uint64_t *)0x0" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "uVar6 = *puVar14;" (assignment_expression "uVar6 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (if_statement "if (uVar6 != 2) {\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n    pcVar9 = this->name_;\n    pcVar20 = (char *)gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    gold_fatal(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6);\n  }" if (parenthesized_expression "(uVar6 != 2)" ( (binary_expression "uVar6 != 2" identifier != number_literal) )) (compound_statement "{\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n    pcVar9 = this->name_;\n    pcVar20 = (char *)gettext("%s: section %s has unsupported version number %d");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */\n    gold_fatal(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6);\n  }" { (expression_statement "(*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);" (call_expression "(*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx)" (parenthesized_expression "(*(this->obj_->super_Object)._vptr_Object[0x10])" ( (pointer_expression "*(this->obj_->super_Object)._vptr_Object[0x10]" * (subscript_expression "(this->obj_->super_Object)._vptr_Object[0x10]" (field_expression "(this->obj_->super_Object)._vptr_Object" (parenthesized_expression "(this->obj_->super_Object)" ( (field_expression "this->obj_->super_Object" (field_expression "this->obj_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(sections,this->obj_,(ulong)shndx)" ( identifier , (field_expression "this->obj_" identifier -> field_identifier) , (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pcVar9 = this->name_;" (assignment_expression "pcVar9 = this->name_" identifier = (field_expression "this->name_" identifier -> field_identifier)) ;) (expression_statement "pcVar20 = (char *)gettext("%s: section %s has unsupported version number %d");" (assignment_expression "pcVar20 = (char *)gettext("%s: section %s has unsupported version number %d")" identifier = (cast_expression "(char *)gettext("%s: section %s has unsupported version number %d")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("%s: section %s has unsupported version number %d")" identifier (argument_list "("%s: section %s has unsupported version number %d")" ( (string_literal ""%s: section %s has unsupported version number %d"" " string_content ") ))))) ;) comment comment (expression_statement "gold_fatal(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6);" (call_expression "gold_fatal(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6)" identifier (argument_list "(pcVar20,pcVar9,sections[0].offset,(ulong)uVar6)" ( identifier , identifier , (field_expression "sections[0].offset" (subscript_expression "sections[0]" identifier [ number_literal ]) . field_identifier) , (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) })) (expression_statement "uVar6 = puVar14[1];" (assignment_expression "uVar6 = puVar14[1]" identifier = (subscript_expression "puVar14[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar6 != 0) && (puVar14[2] != 0)) {\n    if (uVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar7 = puVar14[3];\n    uVar21 = (ulong)uVar7;\n    puVar24 = (uint64_t *)(puVar14 + 4);\n    lVar15 = (ulong)(puVar14[2] * uVar6) * 4;\n    puVar3 = puVar24 + uVar21;\n    lVar10 = (ulong)uVar6 * 4 + uVar21 * 4;\n    lVar11 = lVar15 + lVar10;\n    if ((long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11)) {\n      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n      pcVar9 = this->name_;\n      pcVar20 = (char *)gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      gold_fatal(pcVar20,pcVar9,sections[0].offset);\n    }\n    pSVar18 = sections;\n    do {\n      pSVar18->offset = 0;\n      pSVar16 = pSVar18 + 1;\n      pSVar18->size = 0;\n      pSVar18 = pSVar16;\n    } while ((Section_bounds *)&stack0xffffffffffffffc8 != pSVar16);\n    lVar15 = 3;\n    do {\n      while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }\n      section_id = (DW_SECT)lVar15;\n      lVar15 = lVar15 + 1;\n      SVar25 = copy_section(this,output_file,*puVar4,section_id);\n      sections[(int)section_id].offset = SVar25.offset;\n      sections[(int)section_id].size = SVar25.size;\n    } while (lVar15 != 9);\nLAB_001620d1:\n    puVar17 = Object::decompressed_section_contents\n                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0);\n    if (uVar7 != 0) {\n      puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);\n      puVar22 = puVar3;\n      do {\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      } while (puVar22 != puVar2);\n    }\nLAB_00162290:\n    if (index_is_new != false) {\n      operator_delete__(puVar14);\n    }\n    if ((info_is_new != false) && (puVar17 != (uchar *)0x0)) {\n      operator_delete__(puVar17);\n    }\n  }" if (parenthesized_expression "((uVar6 != 0) && (puVar14[2] != 0))" ( (binary_expression "(uVar6 != 0) && (puVar14[2] != 0)" (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "(puVar14[2] != 0)" ( (binary_expression "puVar14[2] != 0" (subscript_expression "puVar14[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    if (uVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar7 = puVar14[3];\n    uVar21 = (ulong)uVar7;\n    puVar24 = (uint64_t *)(puVar14 + 4);\n    lVar15 = (ulong)(puVar14[2] * uVar6) * 4;\n    puVar3 = puVar24 + uVar21;\n    lVar10 = (ulong)uVar6 * 4 + uVar21 * 4;\n    lVar11 = lVar15 + lVar10;\n    if ((long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11)) {\n      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n      pcVar9 = this->name_;\n      pcVar20 = (char *)gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      gold_fatal(pcVar20,pcVar9,sections[0].offset);\n    }\n    pSVar18 = sections;\n    do {\n      pSVar18->offset = 0;\n      pSVar16 = pSVar18 + 1;\n      pSVar18->size = 0;\n      pSVar18 = pSVar16;\n    } while ((Section_bounds *)&stack0xffffffffffffffc8 != pSVar16);\n    lVar15 = 3;\n    do {\n      while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }\n      section_id = (DW_SECT)lVar15;\n      lVar15 = lVar15 + 1;\n      SVar25 = copy_section(this,output_file,*puVar4,section_id);\n      sections[(int)section_id].offset = SVar25.offset;\n      sections[(int)section_id].size = SVar25.size;\n    } while (lVar15 != 9);\nLAB_001620d1:\n    puVar17 = Object::decompressed_section_contents\n                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0);\n    if (uVar7 != 0) {\n      puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);\n      puVar22 = puVar3;\n      do {\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      } while (puVar22 != puVar2);\n    }\nLAB_00162290:\n    if (index_is_new != false) {\n      operator_delete__(puVar14);\n    }\n    if ((info_is_new != false) && (puVar17 != (uchar *)0x0)) {\n      operator_delete__(puVar17);\n    }\n  }" { (if_statement "if (uVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index");" (call_expression "do_gold_unreachable("../../gold/dwp.cc",0x490,"sized_read_unit_index")" identifier (argument_list "("../../gold/dwp.cc",0x490,"sized_read_unit_index")" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""sized_read_unit_index"" " string_content ") ))) ;) })) (expression_statement "uVar7 = puVar14[3];" (assignment_expression "uVar7 = puVar14[3]" identifier = (subscript_expression "puVar14[3]" identifier [ number_literal ])) ;) (expression_statement "uVar21 = (ulong)uVar7;" (assignment_expression "uVar21 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar24 = (uint64_t *)(puVar14 + 4);" (assignment_expression "puVar24 = (uint64_t *)(puVar14 + 4)" identifier = (cast_expression "(uint64_t *)(puVar14 + 4)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 4)" ( (binary_expression "puVar14 + 4" identifier + number_literal) )))) ;) (expression_statement "lVar15 = (ulong)(puVar14[2] * uVar6) * 4;" (assignment_expression "lVar15 = (ulong)(puVar14[2] * uVar6) * 4" identifier = (binary_expression "(ulong)(puVar14[2] * uVar6) * 4" (call_expression "(ulong)(puVar14[2] * uVar6)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar14[2] * uVar6)" ( (binary_expression "puVar14[2] * uVar6" (subscript_expression "puVar14[2]" identifier [ number_literal ]) * identifier) ))) * number_literal)) ;) (expression_statement "puVar3 = puVar24 + uVar21;" (assignment_expression "puVar3 = puVar24 + uVar21" identifier = (binary_expression "puVar24 + uVar21" identifier + identifier)) ;) (expression_statement "lVar10 = (ulong)uVar6 * 4 + uVar21 * 4;" (assignment_expression "lVar10 = (ulong)uVar6 * 4 + uVar21 * 4" identifier = (binary_expression "(ulong)uVar6 * 4 + uVar21 * 4" (binary_expression "(ulong)uVar6 * 4" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal) + (binary_expression "uVar21 * 4" identifier * number_literal))) ;) (expression_statement "lVar11 = lVar15 + lVar10;" (assignment_expression "lVar11 = lVar15 + lVar10" identifier = (binary_expression "lVar15 + lVar10" identifier + identifier)) ;) (if_statement "if ((long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11)) {\n      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n      pcVar9 = this->name_;\n      pcVar20 = (char *)gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      gold_fatal(pcVar20,pcVar9,sections[0].offset);\n    }" if (parenthesized_expression "((long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11))" ( (binary_expression "(long)puVar14 + index_len < (ulong)((long)puVar3 + lVar15 + lVar11)" (binary_expression "(long)puVar14 + index_len" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) < (call_expression "(ulong)((long)puVar3 + lVar15 + lVar11)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)puVar3 + lVar15 + lVar11)" ( (binary_expression "(long)puVar3 + lVar15 + lVar11" (binary_expression "(long)puVar3 + lVar15" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + identifier) )))) )) (compound_statement "{\n      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);\n      pcVar9 = this->name_;\n      pcVar20 = (char *)gettext("%s: section %s is corrupt");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */\n      gold_fatal(pcVar20,pcVar9,sections[0].offset);\n    }" { (expression_statement "(*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx);" (call_expression "(*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(ulong)shndx)" (parenthesized_expression "(*(this->obj_->super_Object)._vptr_Object[0x10])" ( (pointer_expression "*(this->obj_->super_Object)._vptr_Object[0x10]" * (subscript_expression "(this->obj_->super_Object)._vptr_Object[0x10]" (field_expression "(this->obj_->super_Object)._vptr_Object" (parenthesized_expression "(this->obj_->super_Object)" ( (field_expression "this->obj_->super_Object" (field_expression "this->obj_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(sections,this->obj_,(ulong)shndx)" ( identifier , (field_expression "this->obj_" identifier -> field_identifier) , (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pcVar9 = this->name_;" (assignment_expression "pcVar9 = this->name_" identifier = (field_expression "this->name_" identifier -> field_identifier)) ;) (expression_statement "pcVar20 = (char *)gettext("%s: section %s is corrupt");" (assignment_expression "pcVar20 = (char *)gettext("%s: section %s is corrupt")" identifier = (cast_expression "(char *)gettext("%s: section %s is corrupt")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("%s: section %s is corrupt")" identifier (argument_list "("%s: section %s is corrupt")" ( (string_literal ""%s: section %s is corrupt"" " string_content ") ))))) ;) comment comment (expression_statement "gold_fatal(pcVar20,pcVar9,sections[0].offset);" (call_expression "gold_fatal(pcVar20,pcVar9,sections[0].offset)" identifier (argument_list "(pcVar20,pcVar9,sections[0].offset)" ( identifier , identifier , (field_expression "sections[0].offset" (subscript_expression "sections[0]" identifier [ number_literal ]) . field_identifier) ))) ;) })) (expression_statement "pSVar18 = sections;" (assignment_expression "pSVar18 = sections" identifier = identifier) ;) (do_statement "do {\n      pSVar18->offset = 0;\n      pSVar16 = pSVar18 + 1;\n      pSVar18->size = 0;\n      pSVar18 = pSVar16;\n    } while ((Section_bounds *)&stack0xffffffffffffffc8 != pSVar16);" do (compound_statement "{\n      pSVar18->offset = 0;\n      pSVar16 = pSVar18 + 1;\n      pSVar18->size = 0;\n      pSVar18 = pSVar16;\n    }" { (expression_statement "pSVar18->offset = 0;" (assignment_expression "pSVar18->offset = 0" (field_expression "pSVar18->offset" identifier -> field_identifier) = number_literal) ;) (expression_statement "pSVar16 = pSVar18 + 1;" (assignment_expression "pSVar16 = pSVar18 + 1" identifier = (binary_expression "pSVar18 + 1" identifier + number_literal)) ;) (expression_statement "pSVar18->size = 0;" (assignment_expression "pSVar18->size = 0" (field_expression "pSVar18->size" identifier -> field_identifier) = number_literal) ;) (expression_statement "pSVar18 = pSVar16;" (assignment_expression "pSVar18 = pSVar16" identifier = identifier) ;) }) while (parenthesized_expression "((Section_bounds *)&stack0xffffffffffffffc8 != pSVar16)" ( (binary_expression "(Section_bounds *)&stack0xffffffffffffffc8 != pSVar16" (cast_expression "(Section_bounds *)&stack0xffffffffffffffc8" ( (type_descriptor "Section_bounds *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0xffffffffffffffc8" & identifier)) != identifier) )) ;) (expression_statement "lVar15 = 3;" (assignment_expression "lVar15 = 3" identifier = number_literal) ;) (do_statement "do {\n      while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }\n      section_id = (DW_SECT)lVar15;\n      lVar15 = lVar15 + 1;\n      SVar25 = copy_section(this,output_file,*puVar4,section_id);\n      sections[(int)section_id].offset = SVar25.offset;\n      sections[(int)section_id].size = SVar25.size;\n    } while (lVar15 != 9);" do (compound_statement "{\n      while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }\n      section_id = (DW_SECT)lVar15;\n      lVar15 = lVar15 + 1;\n      SVar25 = copy_section(this,output_file,*puVar4,section_id);\n      sections[(int)section_id].offset = SVar25.offset;\n      sections[(int)section_id].size = SVar25.size;\n    }" { (while_statement "while (puVar4 = debug_shndx + lVar15, *puVar4 == 0) {\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }" while (parenthesized_expression "(puVar4 = debug_shndx + lVar15, *puVar4 == 0)" ( (comma_expression "puVar4 = debug_shndx + lVar15, *puVar4 == 0" (assignment_expression "puVar4 = debug_shndx + lVar15" identifier = (binary_expression "debug_shndx + lVar15" identifier + identifier)) , (binary_expression "*puVar4 == 0" (pointer_expression "*puVar4" * identifier) == number_literal)) )) (compound_statement "{\n        lVar15 = lVar15 + 1;\n        if (lVar15 == 9) goto LAB_001620d1;\n      }" { (expression_statement "lVar15 = lVar15 + 1;" (assignment_expression "lVar15 = lVar15 + 1" identifier = (binary_expression "lVar15 + 1" identifier + number_literal)) ;) (if_statement "if (lVar15 == 9) goto LAB_001620d1;" if (parenthesized_expression "(lVar15 == 9)" ( (binary_expression "lVar15 == 9" identifier == number_literal) )) (goto_statement "goto LAB_001620d1;" goto statement_identifier ;)) })) (expression_statement "section_id = (DW_SECT)lVar15;" (assignment_expression "section_id = (DW_SECT)lVar15" identifier = (cast_expression "(DW_SECT)lVar15" ( (type_descriptor "DW_SECT" type_identifier) ) identifier)) ;) (expression_statement "lVar15 = lVar15 + 1;" (assignment_expression "lVar15 = lVar15 + 1" identifier = (binary_expression "lVar15 + 1" identifier + number_literal)) ;) (expression_statement "SVar25 = copy_section(this,output_file,*puVar4,section_id);" (assignment_expression "SVar25 = copy_section(this,output_file,*puVar4,section_id)" identifier = (call_expression "copy_section(this,output_file,*puVar4,section_id)" identifier (argument_list "(this,output_file,*puVar4,section_id)" ( identifier , identifier , (pointer_expression "*puVar4" * identifier) , identifier )))) ;) (expression_statement "sections[(int)section_id].offset = SVar25.offset;" (assignment_expression "sections[(int)section_id].offset = SVar25.offset" (field_expression "sections[(int)section_id].offset" (subscript_expression "sections[(int)section_id]" identifier [ (cast_expression "(int)section_id" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = (field_expression "SVar25.offset" identifier . field_identifier)) ;) (expression_statement "sections[(int)section_id].size = SVar25.size;" (assignment_expression "sections[(int)section_id].size = SVar25.size" (field_expression "sections[(int)section_id].size" (subscript_expression "sections[(int)section_id]" identifier [ (cast_expression "(int)section_id" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = (field_expression "SVar25.size" identifier . field_identifier)) ;) }) while (parenthesized_expression "(lVar15 != 9)" ( (binary_expression "lVar15 != 9" identifier != number_literal) )) ;) (labeled_statement "LAB_001620d1:\n    puVar17 = Object::decompressed_section_contents\n                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0);" statement_identifier : (ERROR "puVar17 = Object::" (assignment_expression "puVar17 = Object" identifier = identifier) : :) (expression_statement "decompressed_section_contents\n                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0);" (call_expression "decompressed_section_contents\n                        (&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0)" identifier (argument_list "(&this->obj_->super_Object,uVar5,&info_len,&info_is_new,(uint64_t *)0x0)" ( (pointer_expression "&this->obj_->super_Object" & (field_expression "this->obj_->super_Object" (field_expression "this->obj_" identifier -> field_identifier) -> field_identifier)) , identifier , (pointer_expression "&info_len" & identifier) , (pointer_expression "&info_is_new" & identifier) , (cast_expression "(uint64_t *)0x0" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (if_statement "if (uVar7 != 0) {\n      puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);\n      puVar22 = puVar3;\n      do {\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      } while (puVar22 != puVar2);\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);\n      puVar22 = puVar3;\n      do {\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      } while (puVar22 != puVar2);\n    }" { (expression_statement "puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4);" (assignment_expression "puVar2 = (uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4)" identifier = (cast_expression "(uint64_t *)((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4)" ( (binary_expression "(long)puVar3 + (ulong)(uVar7 - 1) * 4 + 4" (binary_expression "(long)puVar3 + (ulong)(uVar7 - 1) * 4" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar7 - 1) * 4" (call_expression "(ulong)(uVar7 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar7 - 1)" ( (binary_expression "uVar7 - 1" identifier - number_literal) ))) * number_literal)) + number_literal) )))) ;) (expression_statement "puVar22 = puVar3;" (assignment_expression "puVar22 = puVar3" identifier = identifier) ;) (do_statement "do {\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      } while (puVar22 != puVar2);" do (compound_statement "{\n        while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }\n        signature = *puVar24;\n        if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }\n        tu_set = (Unit_set *)operator_new(0x98);\n        pSVar18 = tu_set->sections;\n        do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);\n        tu_set->signature = signature;\n        lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;\n        lVar15 = 0;\n        do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);\n        pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);\n        lVar15 = pSVar18->offset;\n        uVar8 = pSVar18->size;\n        if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }\n        puVar24 = puVar24 + 1;\n        puVar22 = (uint64_t *)((long)puVar22 + 4);\n        sVar19 = Dwp_output_file::add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);\n        pSVar18->offset = sVar19;\n        Dwp_output_file::add_cu_set(output_file,tu_set);\n      }" { (while_statement "while (uVar12 = *puVar22, (uint)uVar12 == 0) {\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }" while (parenthesized_expression "(uVar12 = *puVar22, (uint)uVar12 == 0)" ( (comma_expression "uVar12 = *puVar22, (uint)uVar12 == 0" (assignment_expression "uVar12 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) , (binary_expression "(uint)uVar12 == 0" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) == number_literal)) )) (compound_statement "{\nLAB_0016216d:\n          puVar24 = puVar24 + 1;\n          puVar22 = (uint64_t *)((long)puVar22 + 4);\n          if (puVar22 == puVar2) goto LAB_00162290;\n        }" { (labeled_statement "LAB_0016216d:\n          puVar24 = puVar24 + 1;" statement_identifier : (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;)) (expression_statement "puVar22 = (uint64_t *)((long)puVar22 + 4);" (assignment_expression "puVar22 = (uint64_t *)((long)puVar22 + 4)" identifier = (cast_expression "(uint64_t *)((long)puVar22 + 4)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar22 + 4)" ( (binary_expression "(long)puVar22 + 4" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar22 == puVar2) goto LAB_00162290;" if (parenthesized_expression "(puVar22 == puVar2)" ( (binary_expression "puVar22 == puVar2" identifier == identifier) )) (goto_statement "goto LAB_00162290;" goto statement_identifier ;)) })) (expression_statement "signature = *puVar24;" (assignment_expression "signature = *puVar24" identifier = (pointer_expression "*puVar24" * identifier)) ;) (if_statement "if (is_tu_index) {\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }" if (parenthesized_expression "(is_tu_index)" ( identifier )) (compound_statement "{\n          output_file->last_type_sig_ = signature;\n          bVar13 = Dwp_output_file::Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);\n          if (bVar13) goto LAB_0016216d;\n        }" { (expression_statement "output_file->last_type_sig_ = signature;" (assignment_expression "output_file->last_type_sig_ = signature" (field_expression "output_file->last_type_sig_" identifier -> field_identifier) = identifier) ;) (ERROR "bVar13 = Dwp_output_file::" (assignment_expression "bVar13 = Dwp_output_file" identifier = identifier) : :) (labeled_statement "Dwp_index::find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);" statement_identifier : (ERROR ":" :) (expression_statement "find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);" (call_expression "find_or_add\n                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_)" identifier (argument_list "(&output_file->tu_index_,signature,&output_file->last_tu_slot_)" ( (pointer_expression "&output_file->tu_index_" & (field_expression "output_file->tu_index_" identifier -> field_identifier)) , identifier , (pointer_expression "&output_file->last_tu_slot_" & (field_expression "output_file->last_tu_slot_" identifier -> field_identifier)) ))) ;)) (if_statement "if (bVar13) goto LAB_0016216d;" if (parenthesized_expression "(bVar13)" ( identifier )) (goto_statement "goto LAB_0016216d;" goto statement_identifier ;)) })) (expression_statement "tu_set = (Unit_set *)operator_new(0x98);" (assignment_expression "tu_set = (Unit_set *)operator_new(0x98)" identifier = (cast_expression "(Unit_set *)operator_new(0x98)" ( (type_descriptor "Unit_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x98)" identifier (argument_list "(0x98)" ( number_literal ))))) ;) (expression_statement "pSVar18 = tu_set->sections;" (assignment_expression "pSVar18 = tu_set->sections" identifier = (field_expression "tu_set->sections" identifier -> field_identifier)) ;) (do_statement "do {\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        } while ((Unit_set *)pSVar16 != tu_set + 1);" do (compound_statement "{\n          pSVar18->offset = 0;\n          pSVar16 = pSVar18 + 1;\n          pSVar18->size = 0;\n          pSVar18 = pSVar16;\n        }" { (expression_statement "pSVar18->offset = 0;" (assignment_expression "pSVar18->offset = 0" (field_expression "pSVar18->offset" identifier -> field_identifier) = number_literal) ;) (expression_statement "pSVar16 = pSVar18 + 1;" (assignment_expression "pSVar16 = pSVar18 + 1" identifier = (binary_expression "pSVar18 + 1" identifier + number_literal)) ;) (expression_statement "pSVar18->size = 0;" (assignment_expression "pSVar18->size = 0" (field_expression "pSVar18->size" identifier -> field_identifier) = number_literal) ;) (expression_statement "pSVar18 = pSVar16;" (assignment_expression "pSVar18 = pSVar16" identifier = identifier) ;) }) while (parenthesized_expression "((Unit_set *)pSVar16 != tu_set + 1)" ( (binary_expression "(Unit_set *)pSVar16 != tu_set + 1" (cast_expression "(Unit_set *)pSVar16" ( (type_descriptor "Unit_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (binary_expression "tu_set + 1" identifier + number_literal)) )) ;) (expression_statement "tu_set->signature = signature;" (assignment_expression "tu_set->signature = signature" (field_expression "tu_set->signature" identifier -> field_identifier) = identifier) ;) (expression_statement "lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4;" (assignment_expression "lVar23 = (ulong)(((uint)uVar12 - 1) * uVar6) * 4" identifier = (binary_expression "(ulong)(((uint)uVar12 - 1) * uVar6) * 4" (call_expression "(ulong)(((uint)uVar12 - 1) * uVar6)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(((uint)uVar12 - 1) * uVar6)" ( (binary_expression "((uint)uVar12 - 1) * uVar6" (parenthesized_expression "((uint)uVar12 - 1)" ( (binary_expression "(uint)uVar12 - 1" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) - number_literal) )) * identifier) ))) * number_literal)) ;) (expression_statement "lVar15 = 0;" (assignment_expression "lVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        } while ((uint)lVar15 <= uVar6);" do (compound_statement "{\n          uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);\n          uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);\n          lVar1 = lVar15 * 4;\n          lVar15 = lVar15 + 1;\n          tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;\n          tu_set->sections[uVar5].size = uVar8 & 0xffffffff;\n        }" { (expression_statement "uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4);" (assignment_expression "uVar5 = *(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4)" identifier = (pointer_expression "*(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4)" * (cast_expression "(uint *)((long)puVar3 + lVar15 * 4 + uVar21 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + lVar15 * 4 + uVar21 * 4)" ( (binary_expression "(long)puVar3 + lVar15 * 4 + uVar21 * 4" (binary_expression "(long)puVar3 + lVar15 * 4" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar15 * 4" identifier * number_literal)) + (binary_expression "uVar21 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11);" (assignment_expression "uVar8 = *(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11)" identifier = (pointer_expression "*(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11)" * (cast_expression "(ulong *)((long)puVar3 + lVar15 * 4 + lVar23 + lVar11)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + lVar15 * 4 + lVar23 + lVar11)" ( (binary_expression "(long)puVar3 + lVar15 * 4 + lVar23 + lVar11" (binary_expression "(long)puVar3 + lVar15 * 4 + lVar23" (binary_expression "(long)puVar3 + lVar15 * 4" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar15 * 4" identifier * number_literal)) + identifier) + identifier) ))))) ;) (expression_statement "lVar1 = lVar15 * 4;" (assignment_expression "lVar1 = lVar15 * 4" identifier = (binary_expression "lVar15 * 4" identifier * number_literal)) ;) (expression_statement "lVar15 = lVar15 + 1;" (assignment_expression "lVar15 = lVar15 + 1" identifier = (binary_expression "lVar15 + 1" identifier + number_literal)) ;) (expression_statement "tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset;" (assignment_expression "tu_set->sections[uVar5].offset =\n               (ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset" (field_expression "tu_set->sections[uVar5].offset" (subscript_expression "tu_set->sections[uVar5]" (field_expression "tu_set->sections" identifier -> field_identifier) [ identifier ]) . field_identifier) = (binary_expression "(ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10) + sections[uVar5].offset" (binary_expression "(ulong)*(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)((long)puVar3 + lVar1 + lVar23 + lVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + lVar1 + lVar23 + lVar10)" ( (binary_expression "(long)puVar3 + lVar1 + lVar23 + lVar10" (binary_expression "(long)puVar3 + lVar1 + lVar23" (binary_expression "(long)puVar3 + lVar1" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + identifier) + identifier) )))) + (field_expression "sections[uVar5].offset" (subscript_expression "sections[uVar5]" identifier [ identifier ]) . field_identifier))) ;) (expression_statement "tu_set->sections[uVar5].size = uVar8 & 0xffffffff;" (assignment_expression "tu_set->sections[uVar5].size = uVar8 & 0xffffffff" (field_expression "tu_set->sections[uVar5].size" (subscript_expression "tu_set->sections[uVar5]" (field_expression "tu_set->sections" identifier -> field_identifier) [ identifier ]) . field_identifier) = (binary_expression "uVar8 & 0xffffffff" identifier & number_literal)) ;) }) while (parenthesized_expression "((uint)lVar15 <= uVar6)" ( (binary_expression "(uint)lVar15 <= uVar6" (cast_expression "(uint)lVar15" ( (type_descriptor "uint" type_identifier) ) identifier) <= identifier) )) ;) (expression_statement "pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index);" (assignment_expression "pSVar18 = tu_set->sections + (2 - (ulong)!is_tu_index)" identifier = (binary_expression "tu_set->sections + (2 - (ulong)!is_tu_index)" (field_expression "tu_set->sections" identifier -> field_identifier) + (parenthesized_expression "(2 - (ulong)!is_tu_index)" ( (binary_expression "2 - (ulong)!is_tu_index" number_literal - (cast_expression "(ulong)!is_tu_index" ( (type_descriptor "ulong" type_identifier) ) (unary_expression "!is_tu_index" ! identifier))) )))) ;) (expression_statement "lVar15 = pSVar18->offset;" (assignment_expression "lVar15 = pSVar18->offset" identifier = (field_expression "pSVar18->offset" identifier -> field_identifier)) ;) (expression_statement "uVar8 = pSVar18->size;" (assignment_expression "uVar8 = pSVar18->size" identifier = (field_expression "pSVar18->size" identifier -> field_identifier)) ;) (if_statement "if (is_tu_index) {\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }" if (parenthesized_expression "(is_tu_index)" ( identifier )) (compound_statement "{\n          __dest = operator_new__(uVar8);\n          contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);\n          sVar19 = Dwp_output_file::add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);\n          pSVar18->offset = sVar19;\n          Dwp_output_file::add_tu_set(output_file,tu_set);\n          goto LAB_0016216d;\n        }" { (expression_statement "__dest = operator_new__(uVar8);" (assignment_expression "__dest = operator_new__(uVar8)" identifier = (call_expression "operator_new__(uVar8)" identifier (argument_list "(uVar8)" ( identifier )))) ;) (expression_statement "contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8);" (assignment_expression "contents = (uchar *)memcpy(__dest,puVar17 + lVar15,uVar8)" identifier = (cast_expression "(uchar *)memcpy(__dest,puVar17 + lVar15,uVar8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(__dest,puVar17 + lVar15,uVar8)" identifier (argument_list "(__dest,puVar17 + lVar15,uVar8)" ( identifier , (binary_expression "puVar17 + lVar15" identifier + identifier) , identifier ))))) ;) (ERROR "sVar19 = Dwp_output_file::" (assignment_expression "sVar19 = Dwp_output_file" identifier = identifier) : :) (expression_statement "add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1);" (call_expression "add_contribution\n                             (output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1)" identifier (argument_list "(output_file,DW_SECT_TYPES - !is_tu_index,contents,uVar8,1)" ( identifier , (binary_expression "DW_SECT_TYPES - !is_tu_index" identifier - (unary_expression "!is_tu_index" ! identifier)) , identifier , identifier , number_literal ))) ;) (expression_statement "pSVar18->offset = sVar19;" (assignment_expression "pSVar18->offset = sVar19" (field_expression "pSVar18->offset" identifier -> field_identifier) = identifier) ;) (labeled_statement "Dwp_output_file::add_tu_set(output_file,tu_set);" statement_identifier : (ERROR ":" :) (expression_statement "add_tu_set(output_file,tu_set);" (call_expression "add_tu_set(output_file,tu_set)" identifier (argument_list "(output_file,tu_set)" ( identifier , identifier ))) ;)) (goto_statement "goto LAB_0016216d;" goto statement_identifier ;) })) (expression_statement "puVar24 = puVar24 + 1;" (assignment_expression "puVar24 = puVar24 + 1" identifier = (binary_expression "puVar24 + 1" identifier + number_literal)) ;) (expression_statement "puVar22 = (uint64_t *)((long)puVar22 + 4);" (assignment_expression "puVar22 = (uint64_t *)((long)puVar22 + 4)" identifier = (cast_expression "(uint64_t *)((long)puVar22 + 4)" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar22 + 4)" ( (binary_expression "(long)puVar22 + 4" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (ERROR "sVar19 = Dwp_output_file::" (assignment_expression "sVar19 = Dwp_output_file" identifier = identifier) : :) (expression_statement "add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1);" (call_expression "add_contribution\n                           (output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1)" identifier (argument_list "(output_file,DW_SECT_TYPES - !is_tu_index,puVar17 + lVar15,uVar8,1)" ( identifier , (binary_expression "DW_SECT_TYPES - !is_tu_index" identifier - (unary_expression "!is_tu_index" ! identifier)) , (binary_expression "puVar17 + lVar15" identifier + identifier) , identifier , number_literal ))) ;) (expression_statement "pSVar18->offset = sVar19;" (assignment_expression "pSVar18->offset = sVar19" (field_expression "pSVar18->offset" identifier -> field_identifier) = identifier) ;) (labeled_statement "Dwp_output_file::add_cu_set(output_file,tu_set);" statement_identifier : (ERROR ":" :) (expression_statement "add_cu_set(output_file,tu_set);" (call_expression "add_cu_set(output_file,tu_set)" identifier (argument_list "(output_file,tu_set)" ( identifier , identifier ))) ;)) }) while (parenthesized_expression "(puVar22 != puVar2)" ( (binary_expression "puVar22 != puVar2" identifier != identifier) )) ;) })) (labeled_statement "LAB_00162290:\n    if (index_is_new != false) {\n      operator_delete__(puVar14);\n    }" statement_identifier : (if_statement "if (index_is_new != false) {\n      operator_delete__(puVar14);\n    }" if (parenthesized_expression "(index_is_new != false)" ( (binary_expression "index_is_new != false" identifier != false) )) (compound_statement "{\n      operator_delete__(puVar14);\n    }" { (expression_statement "operator_delete__(puVar14);" (call_expression "operator_delete__(puVar14)" identifier (argument_list "(puVar14)" ( identifier ))) ;) }))) (if_statement "if ((info_is_new != false) && (puVar17 != (uchar *)0x0)) {\n      operator_delete__(puVar17);\n    }" if (parenthesized_expression "((info_is_new != false) && (puVar17 != (uchar *)0x0))" ( (binary_expression "(info_is_new != false) && (puVar17 != (uchar *)0x0)" (parenthesized_expression "(info_is_new != false)" ( (binary_expression "info_is_new != false" identifier != false) )) && (parenthesized_expression "(puVar17 != (uchar *)0x0)" ( (binary_expression "puVar17 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      operator_delete__(puVar17);\n    }" { (expression_statement "operator_delete__(puVar17);" (call_expression "operator_delete__(puVar17)" identifier (argument_list "(puVar17)" ( identifier ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined8 uVar6;\n  size_t __n;\n  long lVar7;\n  char cVar8;\n  int *piVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  long lVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  long lVar17;\n  void *pvVar18;\n  undefined8 uVar19;\n  int iVar20;\n  ulong uVar21;\n  ulong uVar22;\n  ulong uVar23;\n  ulong uVar24;\n  int iVar25;\n  ulong uVar26;\n  int *piVar27;\n  int *piVar28;\n  undefined1 auVar29 [16];\n  char local_da;\n  char local_d9;\n  long local_d8;\n  undefined1 local_d0 [8];\n  long local_c8 [19];\n  \n  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));\n  iVar20 = 2 - (uint)(param_5 == '\0');\n  if ((int)param_2 == 0) {\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);\n  iVar3 = *piVar9;\n  if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }\n  uVar4 = piVar9[1];\n  if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined8 uVar6;\n  size_t __n;\n  long lVar7;\n  char cVar8;\n  int *piVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  long lVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  long lVar17;\n  void *pvVar18;\n  undefined8 uVar19;\n  int iVar20;\n  ulong uVar21;\n  ulong uVar22;\n  ulong uVar23;\n  ulong uVar24;\n  int iVar25;\n  ulong uVar26;\n  int *piVar27;\n  int *piVar28;\n  undefined1 auVar29 [16];\n  char local_da;\n  char local_d9;\n  long local_d8;\n  undefined1 local_d0 [8];\n  long local_c8 [19];\n  \n  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));\n  iVar20 = 2 - (uint)(param_5 == '\0');\n  if ((int)param_2 == 0) {\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);\n  iVar3 = *piVar9;\n  if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }\n  uVar4 = piVar9[1];\n  if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)" identifier (parameter_list "(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char param_5" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined8 uVar6;\n  size_t __n;\n  long lVar7;\n  char cVar8;\n  int *piVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  long lVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  long lVar17;\n  void *pvVar18;\n  undefined8 uVar19;\n  int iVar20;\n  ulong uVar21;\n  ulong uVar22;\n  ulong uVar23;\n  ulong uVar24;\n  int iVar25;\n  ulong uVar26;\n  int *piVar27;\n  int *piVar28;\n  undefined1 auVar29 [16];\n  char local_da;\n  char local_d9;\n  long local_d8;\n  undefined1 local_d0 [8];\n  long local_c8 [19];\n  \n  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));\n  iVar20 = 2 - (uint)(param_5 == '\0');\n  if ((int)param_2 == 0) {\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);\n  iVar3 = *piVar9;\n  if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }\n  uVar4 = piVar9[1];\n  if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long *plVar12;" (sized_type_specifier "long" long) (pointer_declarator "*plVar12" * identifier) ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "void *pvVar18;" primitive_type (pointer_declarator "*pvVar18" * identifier) ;) (declaration "undefined8 uVar19;" type_identifier identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "ulong uVar23;" type_identifier identifier ;) (declaration "ulong uVar24;" type_identifier identifier ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "ulong uVar26;" type_identifier identifier ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "undefined1 auVar29 [16];" type_identifier (array_declarator "auVar29 [16]" identifier [ number_literal ]) ;) (declaration "char local_da;" primitive_type identifier ;) (declaration "char local_d9;" primitive_type identifier ;) (declaration "long local_d8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 local_d0 [8];" type_identifier (array_declarator "local_d0 [8]" identifier [ number_literal ]) ;) (declaration "long local_c8 [19];" (sized_type_specifier "long" long) (array_declarator "local_c8 [19]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));" (assignment_expression "iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" identifier = (pointer_expression "*(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" * (cast_expression "(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" ( (binary_expression "param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc)" (binary_expression "param_3 + 8" identifier + number_literal) + (parenthesized_expression "(-(ulong)(param_5 == '\0') & 0xfffffffffffffffc)" ( (binary_expression "-(ulong)(param_5 == '\0') & 0xfffffffffffffffc" (unary_expression "-(ulong)(param_5 == '\0')" - (call_expression "(ulong)(param_5 == '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) & number_literal) ))) ))))) ;) (expression_statement "iVar20 = 2 - (uint)(param_5 == '\0');" (assignment_expression "iVar20 = 2 - (uint)(param_5 == '\0')" identifier = (binary_expression "2 - (uint)(param_5 == '\0')" number_literal - (call_expression "(uint)(param_5 == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))))) ;) (if_statement "if ((int)param_2 == 0) {\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }" if (parenthesized_expression "((int)param_2 == 0)" ( (binary_expression "(int)param_2 == 0" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }" { (expression_statement "FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");" (call_expression "FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index")" identifier (argument_list "("../../gold/dwp.cc",0x476,"sized_read_unit_index")" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""sized_read_unit_index"" " string_content ") ))) ;) })) (expression_statement "piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);" (assignment_expression "piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" identifier = (cast_expression "(int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" identifier (argument_list "(param_1[1],param_2,&local_d8,&local_da,0)" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "&local_d8" & identifier) , (pointer_expression "&local_da" & identifier) , number_literal ))))) ;) (expression_statement "iVar3 = *piVar9;" (assignment_expression "iVar3 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }" if (parenthesized_expression "(iVar3 != 2)" ( (binary_expression "iVar3 != 2" identifier != number_literal) )) (compound_statement "{\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }" { (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" ( (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" * (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" * (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)param_1[1] + 0x80)" ( (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" * (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" ( identifier , (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) , (binary_expression "param_2 & 0xffffffff" identifier & number_literal) ))) ;) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar19 = gettext("%s: section %s has unsupported version number %d");" (assignment_expression "uVar19 = gettext("%s: section %s has unsupported version number %d")" identifier = (call_expression "gettext("%s: section %s has unsupported version number %d")" identifier (argument_list "("%s: section %s has unsupported version number %d")" ( (string_literal ""%s: section %s has unsupported version number %d"" " string_content ") )))) ;) (expression_statement "FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);" (call_expression "FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3)" identifier (argument_list "(uVar19,uVar6,local_c8[0],iVar3)" ( identifier , identifier , (subscript_expression "local_c8[0]" identifier [ number_literal ]) , identifier ))) ;) })) (expression_statement "uVar4 = piVar9[1];" (assignment_expression "uVar4 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }" if (parenthesized_expression "((uVar4 != 0) && (piVar9[2] != 0))" ( (binary_expression "(uVar4 != 0) && (piVar9[2] != 0)" (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar9[2] != 0)" ( (binary_expression "piVar9[2] != 0" (subscript_expression "piVar9[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }" { (if_statement "if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }" { (expression_statement "FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");" (call_expression "FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index")" identifier (argument_list "("../../gold/dwp.cc",0x490,"sized_read_unit_index")" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""sized_read_unit_index"" " string_content ") ))) ;) })) (expression_statement "uVar10 = (ulong)(piVar9[2] * uVar4);" (assignment_expression "uVar10 = (ulong)(piVar9[2] * uVar4)" identifier = (call_expression "(ulong)(piVar9[2] * uVar4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(piVar9[2] * uVar4)" ( (binary_expression "piVar9[2] * uVar4" (subscript_expression "piVar9[2]" identifier [ number_literal ]) * identifier) )))) ;) (expression_statement "uVar5 = piVar9[3];" (assignment_expression "uVar5 = piVar9[3]" identifier = (subscript_expression "piVar9[3]" identifier [ number_literal ])) ;) (expression_statement "uVar22 = (ulong)uVar5;" (assignment_expression "uVar22 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "piVar28 = piVar9 + 4;" (assignment_expression "piVar28 = piVar9 + 4" identifier = (binary_expression "piVar9 + 4" identifier + number_literal)) ;) (expression_statement "piVar1 = piVar28 + uVar22 * 2;" (assignment_expression "piVar1 = piVar28 + uVar22 * 2" identifier = (binary_expression "piVar28 + uVar22 * 2" identifier + (binary_expression "uVar22 * 2" identifier * number_literal))) ;) (expression_statement "uVar23 = (ulong)uVar4;" (assignment_expression "uVar23 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }" if (parenthesized_expression "((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2)" ( (binary_expression "(int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2" (cast_expression "(int *)((long)piVar9 + local_d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)piVar9 + local_d8)" ( (binary_expression "(long)piVar9 + local_d8" (cast_expression "(long)piVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) < (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 * 2" (binary_expression "piVar1 + uVar22 + uVar23" (binary_expression "piVar1 + uVar22" identifier + identifier) + identifier) + (binary_expression "uVar10 * 2" identifier * number_literal))) )) (compound_statement "{\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }" { (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" ( (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" * (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" * (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)param_1[1] + 0x80)" ( (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" * (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" ( identifier , (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) , (binary_expression "param_2 & 0xffffffff" identifier & number_literal) ))) ;) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar19 = gettext("%s: section %s is corrupt");" (assignment_expression "uVar19 = gettext("%s: section %s is corrupt")" identifier = (call_expression "gettext("%s: section %s is corrupt")" identifier (argument_list "("%s: section %s is corrupt")" ( (string_literal ""%s: section %s is corrupt"" " string_content ") )))) ;) (expression_statement "FUN_001781e0(uVar19,uVar6,local_c8[0]);" (call_expression "FUN_001781e0(uVar19,uVar6,local_c8[0])" identifier (argument_list "(uVar19,uVar6,local_c8[0])" ( identifier , identifier , (subscript_expression "local_c8[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "plVar11 = local_c8;" (assignment_expression "plVar11 = local_c8" identifier = identifier) ;) (do_statement "do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);" do (compound_statement "{\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    }" { (expression_statement "*plVar11 = 0;" (assignment_expression "*plVar11 = 0" (pointer_expression "*plVar11" * identifier) = number_literal) ;) (expression_statement "plVar12 = plVar11 + 2;" (assignment_expression "plVar12 = plVar11 + 2" identifier = (binary_expression "plVar11 + 2" identifier + number_literal)) ;) (expression_statement "plVar11[1] = 0;" (assignment_expression "plVar11[1] = 0" (subscript_expression "plVar11[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar11 = plVar12;" (assignment_expression "plVar11 = plVar12" identifier = identifier) ;) }) while (parenthesized_expression "(local_c8 + 0x12 != plVar12)" ( (binary_expression "local_c8 + 0x12 != plVar12" (binary_expression "local_c8 + 0x12" identifier + number_literal) != identifier) )) ;) (expression_statement "uVar26 = 3;" (assignment_expression "uVar26 = 3" identifier = number_literal) ;) (do_statement "do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);" do (compound_statement "{\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    }" { (while_statement "while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }" while (parenthesized_expression "(iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0)" ( (comma_expression "iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0" (assignment_expression "iVar3 = *(int *)(param_3 + uVar26 * 4)" identifier = (pointer_expression "*(int *)(param_3 + uVar26 * 4)" * (cast_expression "(int *)(param_3 + uVar26 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + uVar26 * 4)" ( (binary_expression "param_3 + uVar26 * 4" identifier + (binary_expression "uVar26 * 4" identifier * number_literal)) ))))) , (binary_expression "iVar3 == 0" identifier == number_literal)) )) (compound_statement "{\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }" { (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar26 == 9) goto LAB_001620d1;" if (parenthesized_expression "(uVar26 == 9)" ( (binary_expression "uVar26 == 9" identifier == number_literal) )) (goto_statement "goto LAB_001620d1;" goto statement_identifier ;)) })) (expression_statement "iVar25 = (int)uVar26;" (assignment_expression "iVar25 = (int)uVar26" identifier = (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar21 = uVar26 & 0xffffffff;" (assignment_expression "uVar21 = uVar26 & 0xffffffff" identifier = (binary_expression "uVar26 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);" (assignment_expression "auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21)" identifier = (call_expression "FUN_00152a20(param_1,param_4,iVar3,uVar21)" identifier (argument_list "(param_1,param_4,iVar3,uVar21)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "local_c8[(long)iVar25 * 2] = auVar29._0_8_;" (assignment_expression "local_c8[(long)iVar25 * 2] = auVar29._0_8_" (subscript_expression "local_c8[(long)iVar25 * 2]" identifier [ (binary_expression "(long)iVar25 * 2" (cast_expression "(long)iVar25" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) ]) = (field_expression "auVar29._0_8_" identifier . field_identifier)) ;) (expression_statement "local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;" (assignment_expression "local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_" (subscript_expression "local_c8[(long)iVar25 * 2 + 1]" identifier [ (binary_expression "(long)iVar25 * 2 + 1" (binary_expression "(long)iVar25 * 2" (cast_expression "(long)iVar25" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) + number_literal) ]) = (field_expression "auVar29._8_8_" identifier . field_identifier)) ;) }) while (parenthesized_expression "(uVar26 != 9)" ( (binary_expression "uVar26 != 9" identifier != number_literal) )) ;) (labeled_statement "LAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);" statement_identifier : (expression_statement "lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);" (assignment_expression "lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0)" identifier = (call_expression "FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0)" identifier (argument_list "(param_1[1],iVar2,local_d0,&local_d9,0)" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , identifier , (pointer_expression "&local_d9" & identifier) , number_literal )))) ;)) (if_statement "if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }" { (expression_statement "piVar27 = piVar1;" (assignment_expression "piVar27 = piVar1" identifier = identifier) ;) (do_statement "do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);" do (compound_statement "{\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      }" { (while_statement "while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }" while (parenthesized_expression "(iVar2 = *piVar27, iVar2 == 0)" ( (comma_expression "iVar2 = *piVar27, iVar2 == 0" (assignment_expression "iVar2 = *piVar27" identifier = (pointer_expression "*piVar27" * identifier)) , (binary_expression "iVar2 == 0" identifier == number_literal)) )) (compound_statement "{\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }" { (labeled_statement "LAB_0016216d:\n          piVar28 = piVar28 + 2;" statement_identifier : (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;)) (expression_statement "piVar27 = piVar27 + 1;" (assignment_expression "piVar27 = piVar27 + 1" identifier = (binary_expression "piVar27 + 1" identifier + number_literal)) ;) (if_statement "if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;" if (parenthesized_expression "(piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1)" ( (binary_expression "piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1" identifier == (binary_expression "piVar1 + (ulong)(uVar5 - 1) + 1" (binary_expression "piVar1 + (ulong)(uVar5 - 1)" identifier + (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 - 1)" ( (binary_expression "uVar5 - 1" identifier - number_literal) )))) + number_literal)) )) (goto_statement "goto LAB_00162290;" goto statement_identifier ;)) })) (expression_statement "uVar6 = *(undefined8 *)piVar28;" (assignment_expression "uVar6 = *(undefined8 *)piVar28" identifier = (pointer_expression "*(undefined8 *)piVar28" * (cast_expression "(undefined8 *)piVar28" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }" if (parenthesized_expression "(param_5 != '\0')" ( (binary_expression "param_5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }" { (expression_statement "*(undefined8 *)(param_4 + 0x208) = uVar6;" (assignment_expression "*(undefined8 *)(param_4 + 0x208) = uVar6" (pointer_expression "*(undefined8 *)(param_4 + 0x208)" * (cast_expression "(undefined8 *)(param_4 + 0x208)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x208)" ( (binary_expression "param_4 + 0x208" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);" (assignment_expression "cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210)" identifier = (call_expression "FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210)" identifier (argument_list "(param_4 + 0x1d0,uVar6,param_4 + 0x210)" ( (binary_expression "param_4 + 0x1d0" identifier + number_literal) , identifier , (binary_expression "param_4 + 0x210" identifier + number_literal) )))) ;) (if_statement "if (cVar8 != '\0') goto LAB_0016216d;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0016216d;" goto statement_identifier ;)) })) (expression_statement "puVar14 = (undefined8 *)FUN_002d9490(0x98);" (assignment_expression "puVar14 = (undefined8 *)FUN_002d9490(0x98)" identifier = (cast_expression "(undefined8 *)FUN_002d9490(0x98)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d9490(0x98)" identifier (argument_list "(0x98)" ( number_literal ))))) ;) (expression_statement "puVar15 = puVar14 + 1;" (assignment_expression "puVar15 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);" do (compound_statement "{\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        }" { (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "puVar16 = puVar15 + 2;" (assignment_expression "puVar16 = puVar15 + 2" identifier = (binary_expression "puVar15 + 2" identifier + number_literal)) ;) (expression_statement "puVar15[1] = 0;" (assignment_expression "puVar15[1] = 0" (subscript_expression "puVar15[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" identifier = identifier) ;) }) while (parenthesized_expression "(puVar16 != puVar14 + 0x13)" ( (binary_expression "puVar16 != puVar14 + 0x13" identifier != (binary_expression "puVar14 + 0x13" identifier + number_literal)) )) ;) (expression_statement "*puVar14 = uVar6;" (assignment_expression "*puVar14 = uVar6" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "uVar26 = (ulong)((iVar2 + -1) * uVar4);" (assignment_expression "uVar26 = (ulong)((iVar2 + -1) * uVar4)" identifier = (call_expression "(ulong)((iVar2 + -1) * uVar4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((iVar2 + -1) * uVar4)" ( (binary_expression "(iVar2 + -1) * uVar4" (parenthesized_expression "(iVar2 + -1)" ( (binary_expression "iVar2 + -1" identifier + number_literal) )) * identifier) )))) ;) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);" do (compound_statement "{\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        }" { (expression_statement "uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];" (assignment_expression "uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17]" identifier = (cast_expression "(ulong)(uint)piVar1[uVar22 + lVar17]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)piVar1[uVar22 + lVar17]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar1[uVar22 + lVar17]" identifier [ (binary_expression "uVar22 + lVar17" identifier + identifier) ])))) ;) (expression_statement "uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);" (assignment_expression "uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" identifier = (pointer_expression "*(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" * (cast_expression "(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" ( (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17" (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 + uVar26" (binary_expression "piVar1 + uVar22 + uVar23 + uVar10" (binary_expression "piVar1 + uVar22 + uVar23" (binary_expression "piVar1 + uVar22" identifier + identifier) + identifier) + identifier) + identifier) + identifier) ))))) ;) (expression_statement "lVar7 = uVar26 + lVar17;" (assignment_expression "lVar7 = uVar26 + lVar17" identifier = (binary_expression "uVar26 + lVar17" identifier + identifier)) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];" (assignment_expression "puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2]" (subscript_expression "puVar14[uVar24 * 2 + 1]" identifier [ (binary_expression "uVar24 * 2 + 1" (binary_expression "uVar24 * 2" identifier * number_literal) + number_literal) ]) = (binary_expression "(ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2]" (cast_expression "(ulong)(uint)piVar1[uVar22 + uVar23 + lVar7]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)piVar1[uVar22 + uVar23 + lVar7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar1[uVar22 + uVar23 + lVar7]" identifier [ (binary_expression "uVar22 + uVar23 + lVar7" (binary_expression "uVar22 + uVar23" identifier + identifier) + identifier) ]))) + (subscript_expression "local_c8[uVar24 * 2]" identifier [ (binary_expression "uVar24 * 2" identifier * number_literal) ]))) ;) (expression_statement "puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;" (assignment_expression "puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff" (subscript_expression "puVar14[uVar24 * 2 + 2]" identifier [ (binary_expression "uVar24 * 2 + 2" (binary_expression "uVar24 * 2" identifier * number_literal) + number_literal) ]) = (binary_expression "uVar21 & 0xffffffff" identifier & number_literal)) ;) }) while (parenthesized_expression "((uint)lVar17 <= uVar4)" ( (binary_expression "(uint)lVar17 <= uVar4" (cast_expression "(uint)lVar17" ( (type_descriptor "uint" type_identifier) ) identifier) <= identifier) )) ;) (expression_statement "plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;" (assignment_expression "plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2" identifier = (binary_expression "puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2" (binary_expression "puVar14 + 1" identifier + number_literal) + (binary_expression "(2 - (ulong)(param_5 == '\0')) * 2" (parenthesized_expression "(2 - (ulong)(param_5 == '\0'))" ( (binary_expression "2 - (ulong)(param_5 == '\0')" number_literal - (call_expression "(ulong)(param_5 == '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) * number_literal))) ;) (expression_statement "lVar17 = *plVar11;" (assignment_expression "lVar17 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (expression_statement "__n = plVar11[1];" (assignment_expression "__n = plVar11[1]" identifier = (subscript_expression "plVar11[1]" identifier [ number_literal ])) ;) (if_statement "if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }" if (parenthesized_expression "(param_5 != '\0')" ( (binary_expression "param_5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }" { (expression_statement "pvVar18 = (void *)thunk_FUN_002d9490(__n);" (assignment_expression "pvVar18 = (void *)thunk_FUN_002d9490(__n)" identifier = (cast_expression "(void *)thunk_FUN_002d9490(__n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d9490(__n)" identifier (argument_list "(__n)" ( identifier ))))) ;) (expression_statement "pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);" (assignment_expression "pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n)" identifier = (call_expression "memcpy(pvVar18,(void *)(lVar13 + lVar17),__n)" identifier (argument_list "(pvVar18,(void *)(lVar13 + lVar17),__n)" ( identifier , (cast_expression "(void *)(lVar13 + lVar17)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar17)" ( (binary_expression "lVar13 + lVar17" identifier + identifier) ))) , identifier )))) ;) (expression_statement "lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);" (assignment_expression "lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1)" identifier = (call_expression "FUN_001527a0(param_4,iVar20,pvVar18,__n,1)" identifier (argument_list "(param_4,iVar20,pvVar18,__n,1)" ( identifier , identifier , identifier , identifier , number_literal )))) ;) (expression_statement "*plVar11 = lVar17;" (assignment_expression "*plVar11 = lVar17" (pointer_expression "*plVar11" * identifier) = identifier) ;) (expression_statement "FUN_00153210(param_4,puVar14);" (call_expression "FUN_00153210(param_4,puVar14)" identifier (argument_list "(param_4,puVar14)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_0016216d;" goto statement_identifier ;) })) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" identifier = (binary_expression "piVar28 + 2" identifier + number_literal)) ;) (expression_statement "piVar27 = piVar27 + 1;" (assignment_expression "piVar27 = piVar27 + 1" identifier = (binary_expression "piVar27 + 1" identifier + number_literal)) ;) (expression_statement "lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);" (assignment_expression "lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" identifier = (call_expression "FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" identifier (argument_list "(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" ( identifier , identifier , (cast_expression "(void *)(lVar13 + lVar17)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + lVar17)" ( (binary_expression "lVar13 + lVar17" identifier + identifier) ))) , identifier , number_literal )))) ;) (expression_statement "*plVar11 = lVar17;" (assignment_expression "*plVar11 = lVar17" (pointer_expression "*plVar11" * identifier) = identifier) ;) (expression_statement "FUN_00153090(param_4,puVar14);" (call_expression "FUN_00153090(param_4,puVar14)" identifier (argument_list "(param_4,puVar14)" ( identifier , identifier ))) ;) }) while (parenthesized_expression "(piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1)" ( (binary_expression "piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1" identifier != (binary_expression "piVar1 + (ulong)(uVar5 - 1) + 1" (binary_expression "piVar1 + (ulong)(uVar5 - 1)" identifier + (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 - 1)" ( (binary_expression "uVar5 - 1" identifier - number_literal) )))) + number_literal)) )) ;) })) (labeled_statement "LAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }" statement_identifier : (if_statement "if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }" if (parenthesized_expression "(local_da != '\0')" ( (binary_expression "local_da != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      thunk_FUN_002dac60(piVar9);\n    }" { (expression_statement "thunk_FUN_002dac60(piVar9);" (call_expression "thunk_FUN_002dac60(piVar9)" identifier (argument_list "(piVar9)" ( identifier ))) ;) }))) (if_statement "if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }" if (parenthesized_expression "((local_d9 != '\0') && (lVar13 != 0))" ( (binary_expression "(local_d9 != '\0') && (lVar13 != 0)" (parenthesized_expression "(local_d9 != '\0')" ( (binary_expression "local_d9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(lVar13 != 0)" ( (binary_expression "lVar13 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      thunk_FUN_002dac60(lVar13);\n    }" { (expression_statement "thunk_FUN_002dac60(lVar13);" (call_expression "thunk_FUN_002dac60(lVar13)" identifier (argument_list "(lVar13)" ( identifier ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )))) & LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))))) ;) (if_statement if (parenthesized_expression ( (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 ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT & LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) < (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + (binary_expression IDENT * LIT))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT & LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT) ]) = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT) + LIT) ]) = (field_expression IDENT . field_identifier)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , (pointer_expression & IDENT) , LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT == LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (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 = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + IDENT) ])))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + IDENT) + IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT + IDENT) + IDENT) ]))) + (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (binary_expression IDENT & LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression LIT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )))) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT)) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined8 uVar6;\n  size_t __n;\n  long lVar7;\n  char cVar8;\n  int *piVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  long lVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  long lVar17;\n  void *pvVar18;\n  undefined8 uVar19;\n  int iVar20;\n  ulong uVar21;\n  ulong uVar22;\n  ulong uVar23;\n  ulong uVar24;\n  int iVar25;\n  ulong uVar26;\n  int *piVar27;\n  int *piVar28;\n  undefined1 auVar29 [16];\n  char local_da;\n  char local_d9;\n  long local_d8;\n  undefined1 local_d0 [8];\n  long local_c8 [19];\n  \n  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));\n  iVar20 = 2 - (uint)(param_5 == '\0');\n  if ((int)param_2 == 0) {\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);\n  iVar3 = *piVar9;\n  if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }\n  uVar4 = piVar9[1];\n  if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00161f50(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)" (identifier "FUN_00161f50") (parameter_list "(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "char param_5" (primitive_type "char") (identifier "param_5")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  undefined8 uVar6;\n  size_t __n;\n  long lVar7;\n  char cVar8;\n  int *piVar9;\n  ulong uVar10;\n  long *plVar11;\n  long *plVar12;\n  long lVar13;\n  undefined8 *puVar14;\n  undefined8 *puVar15;\n  undefined8 *puVar16;\n  long lVar17;\n  void *pvVar18;\n  undefined8 uVar19;\n  int iVar20;\n  ulong uVar21;\n  ulong uVar22;\n  ulong uVar23;\n  ulong uVar24;\n  int iVar25;\n  ulong uVar26;\n  int *piVar27;\n  int *piVar28;\n  undefined1 auVar29 [16];\n  char local_da;\n  char local_d9;\n  long local_d8;\n  undefined1 local_d0 [8];\n  long local_c8 [19];\n  \n  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));\n  iVar20 = 2 - (uint)(param_5 == '\0');\n  if ((int)param_2 == 0) {\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }\n  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);\n  iVar3 = *piVar9;\n  if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }\n  uVar4 = piVar9[1];\n  if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "char cVar8;" (primitive_type "char") (identifier "cVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "long *plVar11;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar11" (* "*") (identifier "plVar11")) (; ";")) (declaration "long *plVar12;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar12" (* "*") (identifier "plVar12")) (; ";")) (declaration "long lVar13;" (sized_type_specifier "long" (long "long")) (identifier "lVar13") (; ";")) (declaration "undefined8 *puVar14;" (type_identifier "undefined8") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined8 *puVar15;" (type_identifier "undefined8") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "undefined8 *puVar16;" (type_identifier "undefined8") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "long lVar17;" (sized_type_specifier "long" (long "long")) (identifier "lVar17") (; ";")) (declaration "void *pvVar18;" (primitive_type "void") (pointer_declarator "*pvVar18" (* "*") (identifier "pvVar18")) (; ";")) (declaration "undefined8 uVar19;" (type_identifier "undefined8") (identifier "uVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "ulong uVar21;" (type_identifier "ulong") (identifier "uVar21") (; ";")) (declaration "ulong uVar22;" (type_identifier "ulong") (identifier "uVar22") (; ";")) (declaration "ulong uVar23;" (type_identifier "ulong") (identifier "uVar23") (; ";")) (declaration "ulong uVar24;" (type_identifier "ulong") (identifier "uVar24") (; ";")) (declaration "int iVar25;" (primitive_type "int") (identifier "iVar25") (; ";")) (declaration "ulong uVar26;" (type_identifier "ulong") (identifier "uVar26") (; ";")) (declaration "int *piVar27;" (primitive_type "int") (pointer_declarator "*piVar27" (* "*") (identifier "piVar27")) (; ";")) (declaration "int *piVar28;" (primitive_type "int") (pointer_declarator "*piVar28" (* "*") (identifier "piVar28")) (; ";")) (declaration "undefined1 auVar29 [16];" (type_identifier "undefined1") (array_declarator "auVar29 [16]" (identifier "auVar29") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "char local_da;" (primitive_type "char") (identifier "local_da") (; ";")) (declaration "char local_d9;" (primitive_type "char") (identifier "local_d9") (; ";")) (declaration "long local_d8;" (sized_type_specifier "long" (long "long")) (identifier "local_d8") (; ";")) (declaration "undefined1 local_d0 [8];" (type_identifier "undefined1") (array_declarator "local_d0 [8]" (identifier "local_d0") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "long local_c8 [19];" (sized_type_specifier "long" (long "long")) (array_declarator "local_c8 [19]" (identifier "local_c8") ([ "[") (number_literal "19") (] "]")) (; ";")) (expression_statement "iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));" (assignment_expression "iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" (* "*") (cast_expression "(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc))" (( "(") (binary_expression "param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc)" (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) (+ "+") (parenthesized_expression "(-(ulong)(param_5 == '\0') & 0xfffffffffffffffc)" (( "(") (binary_expression "-(ulong)(param_5 == '\0') & 0xfffffffffffffffc" (unary_expression "-(ulong)(param_5 == '\0')" (- "-") (call_expression "(ulong)(param_5 == '\0')" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_5 == '\0')" (( "(") (binary_expression "param_5 == '\0'" (identifier "param_5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (& "&") (number_literal "0xfffffffffffffffc")) () ")"))) () ")"))))) (; ";")) (expression_statement "iVar20 = 2 - (uint)(param_5 == '\0');" (assignment_expression "iVar20 = 2 - (uint)(param_5 == '\0')" (identifier "iVar20") (= "=") (binary_expression "2 - (uint)(param_5 == '\0')" (number_literal "2") (- "-") (call_expression "(uint)(param_5 == '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_5 == '\0')" (( "(") (binary_expression "param_5 == '\0'" (identifier "param_5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))))) (; ";")) (if_statement "if ((int)param_2 == 0) {\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }" (if "if") (parenthesized_expression "((int)param_2 == 0)" (( "(") (binary_expression "(int)param_2 == 0" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");" (call_expression "FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index")" (identifier "FUN_0017c650") (argument_list "("../../gold/dwp.cc",0x476,"sized_read_unit_index")" (( "(") (string_literal ""../../gold/dwp.cc"" (" """) (string_content "../../gold/dwp.cc") (" """)) (, ",") (number_literal "0x476") (, ",") (string_literal ""sized_read_unit_index"" (" """) (string_content "sized_read_unit_index") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);" (assignment_expression "piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" (identifier "piVar9") (= "=") (cast_expression "(int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0)" (identifier "FUN_001bd870") (argument_list "(param_1[1],param_2,&local_d8,&local_da,0)" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "param_2") (, ",") (pointer_expression "&local_d8" (& "&") (identifier "local_d8")) (, ",") (pointer_expression "&local_da" (& "&") (identifier "local_da")) (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "iVar3 = *piVar9;" (assignment_expression "iVar3 = *piVar9" (identifier "iVar3") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (if_statement "if (iVar3 != 2) {\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }" (if "if") (parenthesized_expression "(iVar3 != 2)" (( "(") (binary_expression "iVar3 != 2" (identifier "iVar3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n    uVar6 = *param_1;\n    uVar19 = gettext("%s: section %s has unsupported version number %d");\n                    \n                    \n    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);\n  }" ({ "{") (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" (( "(") (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" (* "*") (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" (* "*") (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)param_1[1] + 0x80)" (( "(") (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" (* "*") (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (argument_list "(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" (( "(") (identifier "local_c8") (, ",") (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "param_2 & 0xffffffff" (identifier "param_2") (& "&") (number_literal "0xffffffff")) () ")"))) (; ";")) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" (identifier "uVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar19 = gettext("%s: section %s has unsupported version number %d");" (assignment_expression "uVar19 = gettext("%s: section %s has unsupported version number %d")" (identifier "uVar19") (= "=") (call_expression "gettext("%s: section %s has unsupported version number %d")" (identifier "gettext") (argument_list "("%s: section %s has unsupported version number %d")" (( "(") (string_literal ""%s: section %s has unsupported version number %d"" (" """) (string_content "%s: section %s has unsupported version number %d") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);" (call_expression "FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3)" (identifier "FUN_001781e0") (argument_list "(uVar19,uVar6,local_c8[0],iVar3)" (( "(") (identifier "uVar19") (, ",") (identifier "uVar6") (, ",") (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "iVar3") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = piVar9[1];" (assignment_expression "uVar4 = piVar9[1]" (identifier "uVar4") (= "=") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((uVar4 != 0) && (piVar9[2] != 0)) {\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }" (if "if") (parenthesized_expression "((uVar4 != 0) && (piVar9[2] != 0))" (( "(") (binary_expression "(uVar4 != 0) && (piVar9[2] != 0)" (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar9[2] != 0)" (( "(") (binary_expression "piVar9[2] != 0" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }\n    uVar10 = (ulong)(piVar9[2] * uVar4);\n    uVar5 = piVar9[3];\n    uVar22 = (ulong)uVar5;\n    piVar28 = piVar9 + 4;\n    piVar1 = piVar28 + uVar22 * 2;\n    uVar23 = (ulong)uVar4;\n    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }\n    plVar11 = local_c8;\n    do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);\n    uVar26 = 3;\n    do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);\nLAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);\n    if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }\nLAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }\n    if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }\n  }" ({ "{") (if_statement "if (iVar2 == 0) {\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");" (call_expression "FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index")" (identifier "FUN_0017c650") (argument_list "("../../gold/dwp.cc",0x490,"sized_read_unit_index")" (( "(") (string_literal ""../../gold/dwp.cc"" (" """) (string_content "../../gold/dwp.cc") (" """)) (, ",") (number_literal "0x490") (, ",") (string_literal ""sized_read_unit_index"" (" """) (string_content "sized_read_unit_index") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar10 = (ulong)(piVar9[2] * uVar4);" (assignment_expression "uVar10 = (ulong)(piVar9[2] * uVar4)" (identifier "uVar10") (= "=") (call_expression "(ulong)(piVar9[2] * uVar4)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(piVar9[2] * uVar4)" (( "(") (binary_expression "piVar9[2] * uVar4" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (* "*") (identifier "uVar4")) () ")")))) (; ";")) (expression_statement "uVar5 = piVar9[3];" (assignment_expression "uVar5 = piVar9[3]" (identifier "uVar5") (= "=") (subscript_expression "piVar9[3]" (identifier "piVar9") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar22 = (ulong)uVar5;" (assignment_expression "uVar22 = (ulong)uVar5" (identifier "uVar22") (= "=") (cast_expression "(ulong)uVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "piVar28 = piVar9 + 4;" (assignment_expression "piVar28 = piVar9 + 4" (identifier "piVar28") (= "=") (binary_expression "piVar9 + 4" (identifier "piVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar1 = piVar28 + uVar22 * 2;" (assignment_expression "piVar1 = piVar28 + uVar22 * 2" (identifier "piVar1") (= "=") (binary_expression "piVar28 + uVar22 * 2" (identifier "piVar28") (+ "+") (binary_expression "uVar22 * 2" (identifier "uVar22") (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar23 = (ulong)uVar4;" (assignment_expression "uVar23 = (ulong)uVar4" (identifier "uVar23") (= "=") (cast_expression "(ulong)uVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar4"))) (; ";")) (if_statement "if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }" (if "if") (parenthesized_expression "((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2)" (( "(") (binary_expression "(int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2" (cast_expression "(int *)((long)piVar9 + local_d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)piVar9 + local_d8)" (( "(") (binary_expression "(long)piVar9 + local_d8" (cast_expression "(long)piVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "piVar9")) (+ "+") (identifier "local_d8")) () ")"))) (< "<") (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 * 2" (binary_expression "piVar1 + uVar22 + uVar23" (binary_expression "piVar1 + uVar22" (identifier "piVar1") (+ "+") (identifier "uVar22")) (+ "+") (identifier "uVar23")) (+ "+") (binary_expression "uVar10 * 2" (identifier "uVar10") (* "*") (number_literal "2")))) () ")")) (compound_statement "{\n      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);\n      uVar6 = *param_1;\n      uVar19 = gettext("%s: section %s is corrupt");\n                    \n                    \n      FUN_001781e0(uVar19,uVar6,local_c8[0]);\n    }" ({ "{") (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" (( "(") (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" (* "*") (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" (* "*") (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)param_1[1] + 0x80)" (( "(") (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" (* "*") (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (argument_list "(local_c8,(long *)param_1[1],param_2 & 0xffffffff)" (( "(") (identifier "local_c8") (, ",") (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "param_2 & 0xffffffff" (identifier "param_2") (& "&") (number_literal "0xffffffff")) () ")"))) (; ";")) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" (identifier "uVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar19 = gettext("%s: section %s is corrupt");" (assignment_expression "uVar19 = gettext("%s: section %s is corrupt")" (identifier "uVar19") (= "=") (call_expression "gettext("%s: section %s is corrupt")" (identifier "gettext") (argument_list "("%s: section %s is corrupt")" (( "(") (string_literal ""%s: section %s is corrupt"" (" """) (string_content "%s: section %s is corrupt") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001781e0(uVar19,uVar6,local_c8[0]);" (call_expression "FUN_001781e0(uVar19,uVar6,local_c8[0])" (identifier "FUN_001781e0") (argument_list "(uVar19,uVar6,local_c8[0])" (( "(") (identifier "uVar19") (, ",") (identifier "uVar6") (, ",") (subscript_expression "local_c8[0]" (identifier "local_c8") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "plVar11 = local_c8;" (assignment_expression "plVar11 = local_c8" (identifier "plVar11") (= "=") (identifier "local_c8")) (; ";")) (do_statement "do {\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    } while (local_c8 + 0x12 != plVar12);" (do "do") (compound_statement "{\n      *plVar11 = 0;\n      plVar12 = plVar11 + 2;\n      plVar11[1] = 0;\n      plVar11 = plVar12;\n    }" ({ "{") (expression_statement "*plVar11 = 0;" (assignment_expression "*plVar11 = 0" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar12 = plVar11 + 2;" (assignment_expression "plVar12 = plVar11 + 2" (identifier "plVar12") (= "=") (binary_expression "plVar11 + 2" (identifier "plVar11") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "plVar11[1] = 0;" (assignment_expression "plVar11[1] = 0" (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar11 = plVar12;" (assignment_expression "plVar11 = plVar12" (identifier "plVar11") (= "=") (identifier "plVar12")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_c8 + 0x12 != plVar12)" (( "(") (binary_expression "local_c8 + 0x12 != plVar12" (binary_expression "local_c8 + 0x12" (identifier "local_c8") (+ "+") (number_literal "0x12")) (!= "!=") (identifier "plVar12")) () ")")) (; ";")) (expression_statement "uVar26 = 3;" (assignment_expression "uVar26 = 3" (identifier "uVar26") (= "=") (number_literal "3")) (; ";")) (do_statement "do {\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    } while (uVar26 != 9);" (do "do") (compound_statement "{\n      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }\n      iVar25 = (int)uVar26;\n      uVar21 = uVar26 & 0xffffffff;\n      uVar26 = uVar26 + 1;\n      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);\n      local_c8[(long)iVar25 * 2] = auVar29._0_8_;\n      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;\n    }" ({ "{") (while_statement "while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }" (while "while") (parenthesized_expression "(iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0)" (( "(") (comma_expression "iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0" (assignment_expression "iVar3 = *(int *)(param_3 + uVar26 * 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_3 + uVar26 * 4)" (* "*") (cast_expression "(int *)(param_3 + uVar26 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + uVar26 * 4)" (( "(") (binary_expression "param_3 + uVar26 * 4" (identifier "param_3") (+ "+") (binary_expression "uVar26 * 4" (identifier "uVar26") (* "*") (number_literal "4"))) () ")"))))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        uVar26 = uVar26 + 1;\n        if (uVar26 == 9) goto LAB_001620d1;\n      }" ({ "{") (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar26 == 9) goto LAB_001620d1;" (if "if") (parenthesized_expression "(uVar26 == 9)" (( "(") (binary_expression "uVar26 == 9" (identifier "uVar26") (== "==") (number_literal "9")) () ")")) (goto_statement "goto LAB_001620d1;" (goto "goto") (statement_identifier "LAB_001620d1") (; ";"))) (} "}"))) (expression_statement "iVar25 = (int)uVar26;" (assignment_expression "iVar25 = (int)uVar26" (identifier "iVar25") (= "=") (cast_expression "(int)uVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar26"))) (; ";")) (expression_statement "uVar21 = uVar26 & 0xffffffff;" (assignment_expression "uVar21 = uVar26 & 0xffffffff" (identifier "uVar21") (= "=") (binary_expression "uVar26 & 0xffffffff" (identifier "uVar26") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);" (assignment_expression "auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21)" (identifier "auVar29") (= "=") (call_expression "FUN_00152a20(param_1,param_4,iVar3,uVar21)" (identifier "FUN_00152a20") (argument_list "(param_1,param_4,iVar3,uVar21)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") (, ",") (identifier "iVar3") (, ",") (identifier "uVar21") () ")")))) (; ";")) (expression_statement "local_c8[(long)iVar25 * 2] = auVar29._0_8_;" (assignment_expression "local_c8[(long)iVar25 * 2] = auVar29._0_8_" (subscript_expression "local_c8[(long)iVar25 * 2]" (identifier "local_c8") ([ "[") (binary_expression "(long)iVar25 * 2" (cast_expression "(long)iVar25" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar25")) (* "*") (number_literal "2")) (] "]")) (= "=") (field_expression "auVar29._0_8_" (identifier "auVar29") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;" (assignment_expression "local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_" (subscript_expression "local_c8[(long)iVar25 * 2 + 1]" (identifier "local_c8") ([ "[") (binary_expression "(long)iVar25 * 2 + 1" (binary_expression "(long)iVar25 * 2" (cast_expression "(long)iVar25" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar25")) (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (] "]")) (= "=") (field_expression "auVar29._8_8_" (identifier "auVar29") (. ".") (field_identifier "_8_8_"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar26 != 9)" (( "(") (binary_expression "uVar26 != 9" (identifier "uVar26") (!= "!=") (number_literal "9")) () ")")) (; ";")) (labeled_statement "LAB_001620d1:\n    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);" (statement_identifier "LAB_001620d1") (: ":") (expression_statement "lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);" (assignment_expression "lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0)" (identifier "lVar13") (= "=") (call_expression "FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0)" (identifier "FUN_001bd870") (argument_list "(param_1[1],iVar2,local_d0,&local_d9,0)" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "iVar2") (, ",") (identifier "local_d0") (, ",") (pointer_expression "&local_d9" (& "&") (identifier "local_d9")) (, ",") (number_literal "0") () ")")))) (; ";"))) (if_statement "if (uVar5 != 0) {\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }" (if "if") (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar27 = piVar1;\n      do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);\n    }" ({ "{") (expression_statement "piVar27 = piVar1;" (assignment_expression "piVar27 = piVar1" (identifier "piVar27") (= "=") (identifier "piVar1")) (; ";")) (do_statement "do {\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);" (do "do") (compound_statement "{\n        while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }\n        uVar6 = *(undefined8 *)piVar28;\n        if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }\n        puVar14 = (undefined8 *)FUN_002d9490(0x98);\n        puVar15 = puVar14 + 1;\n        do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);\n        *puVar14 = uVar6;\n        uVar26 = (ulong)((iVar2 + -1) * uVar4);\n        lVar17 = 0;\n        do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);\n        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;\n        lVar17 = *plVar11;\n        __n = plVar11[1];\n        if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }\n        piVar28 = piVar28 + 2;\n        piVar27 = piVar27 + 1;\n        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);\n        *plVar11 = lVar17;\n        FUN_00153090(param_4,puVar14);\n      }" ({ "{") (while_statement "while (iVar2 = *piVar27, iVar2 == 0) {\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }" (while "while") (parenthesized_expression "(iVar2 = *piVar27, iVar2 == 0)" (( "(") (comma_expression "iVar2 = *piVar27, iVar2 == 0" (assignment_expression "iVar2 = *piVar27" (identifier "iVar2") (= "=") (pointer_expression "*piVar27" (* "*") (identifier "piVar27"))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\nLAB_0016216d:\n          piVar28 = piVar28 + 2;\n          piVar27 = piVar27 + 1;\n          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;\n        }" ({ "{") (labeled_statement "LAB_0016216d:\n          piVar28 = piVar28 + 2;" (statement_identifier "LAB_0016216d") (: ":") (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" (identifier "piVar28") (= "=") (binary_expression "piVar28 + 2" (identifier "piVar28") (+ "+") (number_literal "2"))) (; ";"))) (expression_statement "piVar27 = piVar27 + 1;" (assignment_expression "piVar27 = piVar27 + 1" (identifier "piVar27") (= "=") (binary_expression "piVar27 + 1" (identifier "piVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;" (if "if") (parenthesized_expression "(piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1)" (( "(") (binary_expression "piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1" (identifier "piVar27") (== "==") (binary_expression "piVar1 + (ulong)(uVar5 - 1) + 1" (binary_expression "piVar1 + (ulong)(uVar5 - 1)" (identifier "piVar1") (+ "+") (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar5 - 1)" (( "(") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) () ")")) (goto_statement "goto LAB_00162290;" (goto "goto") (statement_identifier "LAB_00162290") (; ";"))) (} "}"))) (expression_statement "uVar6 = *(undefined8 *)piVar28;" (assignment_expression "uVar6 = *(undefined8 *)piVar28" (identifier "uVar6") (= "=") (pointer_expression "*(undefined8 *)piVar28" (* "*") (cast_expression "(undefined8 *)piVar28" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar28")))) (; ";")) (if_statement "if (param_5 != '\0') {\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }" (if "if") (parenthesized_expression "(param_5 != '\0')" (( "(") (binary_expression "param_5 != '\0'" (identifier "param_5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          *(undefined8 *)(param_4 + 0x208) = uVar6;\n          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);\n          if (cVar8 != '\0') goto LAB_0016216d;\n        }" ({ "{") (expression_statement "*(undefined8 *)(param_4 + 0x208) = uVar6;" (assignment_expression "*(undefined8 *)(param_4 + 0x208) = uVar6" (pointer_expression "*(undefined8 *)(param_4 + 0x208)" (* "*") (cast_expression "(undefined8 *)(param_4 + 0x208)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x208)" (( "(") (binary_expression "param_4 + 0x208" (identifier "param_4") (+ "+") (number_literal "0x208")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);" (assignment_expression "cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210)" (identifier "cVar8") (= "=") (call_expression "FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210)" (identifier "FUN_00151b80") (argument_list "(param_4 + 0x1d0,uVar6,param_4 + 0x210)" (( "(") (binary_expression "param_4 + 0x1d0" (identifier "param_4") (+ "+") (number_literal "0x1d0")) (, ",") (identifier "uVar6") (, ",") (binary_expression "param_4 + 0x210" (identifier "param_4") (+ "+") (number_literal "0x210")) () ")")))) (; ";")) (if_statement "if (cVar8 != '\0') goto LAB_0016216d;" (if "if") (parenthesized_expression "(cVar8 != '\0')" (( "(") (binary_expression "cVar8 != '\0'" (identifier "cVar8") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0016216d;" (goto "goto") (statement_identifier "LAB_0016216d") (; ";"))) (} "}"))) (expression_statement "puVar14 = (undefined8 *)FUN_002d9490(0x98);" (assignment_expression "puVar14 = (undefined8 *)FUN_002d9490(0x98)" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)FUN_002d9490(0x98)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d9490(0x98)" (identifier "FUN_002d9490") (argument_list "(0x98)" (( "(") (number_literal "0x98") () ")"))))) (; ";")) (expression_statement "puVar15 = puVar14 + 1;" (assignment_expression "puVar15 = puVar14 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        } while (puVar16 != puVar14 + 0x13);" (do "do") (compound_statement "{\n          *puVar15 = 0;\n          puVar16 = puVar15 + 2;\n          puVar15[1] = 0;\n          puVar15 = puVar16;\n        }" ({ "{") (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16 = puVar15 + 2;" (assignment_expression "puVar16 = puVar15 + 2" (identifier "puVar16") (= "=") (binary_expression "puVar15 + 2" (identifier "puVar15") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar15[1] = 0;" (assignment_expression "puVar15[1] = 0" (subscript_expression "puVar15[1]" (identifier "puVar15") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" (identifier "puVar15") (= "=") (identifier "puVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar16 != puVar14 + 0x13)" (( "(") (binary_expression "puVar16 != puVar14 + 0x13" (identifier "puVar16") (!= "!=") (binary_expression "puVar14 + 0x13" (identifier "puVar14") (+ "+") (number_literal "0x13"))) () ")")) (; ";")) (expression_statement "*puVar14 = uVar6;" (assignment_expression "*puVar14 = uVar6" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar26 = (ulong)((iVar2 + -1) * uVar4);" (assignment_expression "uVar26 = (ulong)((iVar2 + -1) * uVar4)" (identifier "uVar26") (= "=") (call_expression "(ulong)((iVar2 + -1) * uVar4)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((iVar2 + -1) * uVar4)" (( "(") (binary_expression "(iVar2 + -1) * uVar4" (parenthesized_expression "(iVar2 + -1)" (( "(") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1")) () ")")) (* "*") (identifier "uVar4")) () ")")))) (; ";")) (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" (identifier "lVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        } while ((uint)lVar17 <= uVar4);" (do "do") (compound_statement "{\n          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];\n          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);\n          lVar7 = uVar26 + lVar17;\n          lVar17 = lVar17 + 1;\n          puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];\n          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;\n        }" ({ "{") (expression_statement "uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];" (assignment_expression "uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17]" (identifier "uVar24") (= "=") (cast_expression "(ulong)(uint)piVar1[uVar22 + lVar17]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(uint)piVar1[uVar22 + lVar17]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar1[uVar22 + lVar17]" (identifier "piVar1") ([ "[") (binary_expression "uVar22 + lVar17" (identifier "uVar22") (+ "+") (identifier "lVar17")) (] "]"))))) (; ";")) (expression_statement "uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);" (assignment_expression "uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" (identifier "uVar21") (= "=") (pointer_expression "*(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" (* "*") (cast_expression "(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17)" (( "(") (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17" (binary_expression "piVar1 + uVar22 + uVar23 + uVar10 + uVar26" (binary_expression "piVar1 + uVar22 + uVar23 + uVar10" (binary_expression "piVar1 + uVar22 + uVar23" (binary_expression "piVar1 + uVar22" (identifier "piVar1") (+ "+") (identifier "uVar22")) (+ "+") (identifier "uVar23")) (+ "+") (identifier "uVar10")) (+ "+") (identifier "uVar26")) (+ "+") (identifier "lVar17")) () ")"))))) (; ";")) (expression_statement "lVar7 = uVar26 + lVar17;" (assignment_expression "lVar7 = uVar26 + lVar17" (identifier "lVar7") (= "=") (binary_expression "uVar26 + lVar17" (identifier "uVar26") (+ "+") (identifier "lVar17"))) (; ";")) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];" (assignment_expression "puVar14[uVar24 * 2 + 1] =\n               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2]" (subscript_expression "puVar14[uVar24 * 2 + 1]" (identifier "puVar14") ([ "[") (binary_expression "uVar24 * 2 + 1" (binary_expression "uVar24 * 2" (identifier "uVar24") (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "(ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2]" (cast_expression "(ulong)(uint)piVar1[uVar22 + uVar23 + lVar7]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(uint)piVar1[uVar22 + uVar23 + lVar7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar1[uVar22 + uVar23 + lVar7]" (identifier "piVar1") ([ "[") (binary_expression "uVar22 + uVar23 + lVar7" (binary_expression "uVar22 + uVar23" (identifier "uVar22") (+ "+") (identifier "uVar23")) (+ "+") (identifier "lVar7")) (] "]")))) (+ "+") (subscript_expression "local_c8[uVar24 * 2]" (identifier "local_c8") ([ "[") (binary_expression "uVar24 * 2" (identifier "uVar24") (* "*") (number_literal "2")) (] "]")))) (; ";")) (expression_statement "puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;" (assignment_expression "puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff" (subscript_expression "puVar14[uVar24 * 2 + 2]" (identifier "puVar14") ([ "[") (binary_expression "uVar24 * 2 + 2" (binary_expression "uVar24 * 2" (identifier "uVar24") (* "*") (number_literal "2")) (+ "+") (number_literal "2")) (] "]")) (= "=") (binary_expression "uVar21 & 0xffffffff" (identifier "uVar21") (& "&") (number_literal "0xffffffff"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uint)lVar17 <= uVar4)" (( "(") (binary_expression "(uint)lVar17 <= uVar4" (cast_expression "(uint)lVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar17")) (<= "<=") (identifier "uVar4")) () ")")) (; ";")) (expression_statement "plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;" (assignment_expression "plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2" (identifier "plVar11") (= "=") (binary_expression "puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2" (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1")) (+ "+") (binary_expression "(2 - (ulong)(param_5 == '\0')) * 2" (parenthesized_expression "(2 - (ulong)(param_5 == '\0'))" (( "(") (binary_expression "2 - (ulong)(param_5 == '\0')" (number_literal "2") (- "-") (call_expression "(ulong)(param_5 == '\0')" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_5 == '\0')" (( "(") (binary_expression "param_5 == '\0'" (identifier "param_5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) (* "*") (number_literal "2")))) (; ";")) (expression_statement "lVar17 = *plVar11;" (assignment_expression "lVar17 = *plVar11" (identifier "lVar17") (= "=") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) (; ";")) (expression_statement "__n = plVar11[1];" (assignment_expression "__n = plVar11[1]" (identifier "__n") (= "=") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (param_5 != '\0') {\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }" (if "if") (parenthesized_expression "(param_5 != '\0')" (( "(") (binary_expression "param_5 != '\0'" (identifier "param_5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          pvVar18 = (void *)thunk_FUN_002d9490(__n);\n          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);\n          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);\n          *plVar11 = lVar17;\n          FUN_00153210(param_4,puVar14);\n          goto LAB_0016216d;\n        }" ({ "{") (expression_statement "pvVar18 = (void *)thunk_FUN_002d9490(__n);" (assignment_expression "pvVar18 = (void *)thunk_FUN_002d9490(__n)" (identifier "pvVar18") (= "=") (cast_expression "(void *)thunk_FUN_002d9490(__n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002d9490(__n)" (identifier "thunk_FUN_002d9490") (argument_list "(__n)" (( "(") (identifier "__n") () ")"))))) (; ";")) (expression_statement "pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);" (assignment_expression "pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n)" (identifier "pvVar18") (= "=") (call_expression "memcpy(pvVar18,(void *)(lVar13 + lVar17),__n)" (identifier "memcpy") (argument_list "(pvVar18,(void *)(lVar13 + lVar17),__n)" (( "(") (identifier "pvVar18") (, ",") (cast_expression "(void *)(lVar13 + lVar17)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar17)" (( "(") (binary_expression "lVar13 + lVar17" (identifier "lVar13") (+ "+") (identifier "lVar17")) () ")"))) (, ",") (identifier "__n") () ")")))) (; ";")) (expression_statement "lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);" (assignment_expression "lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1)" (identifier "lVar17") (= "=") (call_expression "FUN_001527a0(param_4,iVar20,pvVar18,__n,1)" (identifier "FUN_001527a0") (argument_list "(param_4,iVar20,pvVar18,__n,1)" (( "(") (identifier "param_4") (, ",") (identifier "iVar20") (, ",") (identifier "pvVar18") (, ",") (identifier "__n") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*plVar11 = lVar17;" (assignment_expression "*plVar11 = lVar17" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (= "=") (identifier "lVar17")) (; ";")) (expression_statement "FUN_00153210(param_4,puVar14);" (call_expression "FUN_00153210(param_4,puVar14)" (identifier "FUN_00153210") (argument_list "(param_4,puVar14)" (( "(") (identifier "param_4") (, ",") (identifier "puVar14") () ")"))) (; ";")) (goto_statement "goto LAB_0016216d;" (goto "goto") (statement_identifier "LAB_0016216d") (; ";")) (} "}"))) (expression_statement "piVar28 = piVar28 + 2;" (assignment_expression "piVar28 = piVar28 + 2" (identifier "piVar28") (= "=") (binary_expression "piVar28 + 2" (identifier "piVar28") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar27 = piVar27 + 1;" (assignment_expression "piVar27 = piVar27 + 1" (identifier "piVar27") (= "=") (binary_expression "piVar27 + 1" (identifier "piVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);" (assignment_expression "lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" (identifier "lVar17") (= "=") (call_expression "FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" (identifier "FUN_001527a0") (argument_list "(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1)" (( "(") (identifier "param_4") (, ",") (identifier "iVar20") (, ",") (cast_expression "(void *)(lVar13 + lVar17)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + lVar17)" (( "(") (binary_expression "lVar13 + lVar17" (identifier "lVar13") (+ "+") (identifier "lVar17")) () ")"))) (, ",") (identifier "__n") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*plVar11 = lVar17;" (assignment_expression "*plVar11 = lVar17" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (= "=") (identifier "lVar17")) (; ";")) (expression_statement "FUN_00153090(param_4,puVar14);" (call_expression "FUN_00153090(param_4,puVar14)" (identifier "FUN_00153090") (argument_list "(param_4,puVar14)" (( "(") (identifier "param_4") (, ",") (identifier "puVar14") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1)" (( "(") (binary_expression "piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1" (identifier "piVar27") (!= "!=") (binary_expression "piVar1 + (ulong)(uVar5 - 1) + 1" (binary_expression "piVar1 + (ulong)(uVar5 - 1)" (identifier "piVar1") (+ "+") (call_expression "(ulong)(uVar5 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar5 - 1)" (( "(") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00162290:\n    if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }" (statement_identifier "LAB_00162290") (: ":") (if_statement "if (local_da != '\0') {\n      thunk_FUN_002dac60(piVar9);\n    }" (if "if") (parenthesized_expression "(local_da != '\0')" (( "(") (binary_expression "local_da != '\0'" (identifier "local_da") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      thunk_FUN_002dac60(piVar9);\n    }" ({ "{") (expression_statement "thunk_FUN_002dac60(piVar9);" (call_expression "thunk_FUN_002dac60(piVar9)" (identifier "thunk_FUN_002dac60") (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")"))) (; ";")) (} "}")))) (if_statement "if ((local_d9 != '\0') && (lVar13 != 0)) {\n      thunk_FUN_002dac60(lVar13);\n    }" (if "if") (parenthesized_expression "((local_d9 != '\0') && (lVar13 != 0))" (( "(") (binary_expression "(local_d9 != '\0') && (lVar13 != 0)" (parenthesized_expression "(local_d9 != '\0')" (( "(") (binary_expression "local_d9 != '\0'" (identifier "local_d9") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(lVar13 != 0)" (( "(") (binary_expression "lVar13 != 0" (identifier "lVar13") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      thunk_FUN_002dac60(lVar13);\n    }" ({ "{") (expression_statement "thunk_FUN_002dac60(lVar13);" (call_expression "thunk_FUN_002dac60(lVar13)" (identifier "thunk_FUN_002dac60") (argument_list "(lVar13)" (( "(") (identifier "lVar13") () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DW_SECT": Some values do not have unique names */
/* DWARF original prototype: void sized_read_unit_index<false>(Dwo_file * this, uint shndx, uint *
   debug_shndx, Dwp_output_file * output_file, bool is_tu_index) */

void __thiscall
gold::type_1::function_1<false>
          (type_1 *this,type_2 var_1,type_2 *var_17,type_3 *output_file,bool is_tu_index
          )

{
  long var_26;
  uint64_t *var_21;
  uint64_t *puVar3;
  type_2 *puVar4;
  type_2 var_7;
  type_2 var_4;
  type_2 var_19;
  uint64_t signature;
  type_4 var_27;
  char *pcVar9;
  long var_12;
  long var_14;
  uint64_t uVar12;
  bool bVar13;
  type_2 *var_8;
  long var_11;
  type_5 *var_16;
  type_6 *var_30;
  type_7 *var_24;
  type_5 *var_15;
  type_8 sVar19;
  void *__dest;
  type_6 *contents;
  char *pcVar20;
  type_4 var_10;
  type_9 section_id;
  uint64_t *var_20;
  long var_25;
  uint64_t *var_9;
  type_5 SVar25;
  bool var_35;
  bool var_37;
  type_10 var_13;
  type_10 info_len;
  type_5 sections [9];
  
  var_7 = *(type_2 *)((long)var_17 + (-(type_4)!is_tu_index & 0xfffffffffffffffc) + 8);
  if (var_1 == 0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/dwp.cc",0x476,"sized_read_unit_index");
  }
  var_8 = (type_2 *)Object::var_3
                              (&this->obj_->super_Object,var_1,&var_13,&var_35,
                               (uint64_t *)0x0);
  var_4 = *var_8;
  if (var_4 != 2) {
    (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(type_4)var_1);
    pcVar9 = this->name_;
    pcVar20 = (char *)var_5("%s: section %s has unsupported version number %d");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */
    var_6(pcVar20,pcVar9,sections[0].offset,(type_4)var_4);
  }
  var_4 = var_8[1];
  if ((var_4 != 0) && (var_8[2] != 0)) {
    if (var_7 == 0) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/dwp.cc",0x490,"sized_read_unit_index");
    }
    var_19 = var_8[3];
    var_10 = (type_4)var_19;
    var_9 = (uint64_t *)(var_8 + 4);
    var_11 = (type_4)(var_8[2] * var_4) * 4;
    puVar3 = var_9 + var_10;
    var_12 = (type_4)var_4 * 4 + var_10 * 4;
    var_14 = var_11 + var_12;
    if ((long)var_8 + var_13 < (type_4)((long)puVar3 + var_11 + var_14)) {
      (*(this->obj_->super_Object)._vptr_Object[0x10])(sections,this->obj_,(type_4)var_1);
      pcVar9 = this->name_;
      pcVar20 = (char *)var_5("%s: section %s is corrupt");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */
      var_6(pcVar20,pcVar9,sections[0].offset);
    }
    var_15 = sections;
    do {
      var_15->offset = 0;
      var_16 = var_15 + 1;
      var_15->size = 0;
      var_15 = var_16;
    } while ((type_5 *)&stack0xffffffffffffffc8 != var_16);
    var_11 = 3;
    do {
      while (puVar4 = var_17 + var_11, *puVar4 == 0) {
        var_11 = var_11 + 1;
        if (var_11 == 9) goto LAB_001620d1;
      }
      section_id = (type_9)var_11;
      var_11 = var_11 + 1;
      SVar25 = var_18(this,output_file,*puVar4,section_id);
      sections[(int)section_id].offset = SVar25.offset;
      sections[(int)section_id].size = SVar25.size;
    } while (var_11 != 9);
LAB_001620d1:
    var_30 = Object::var_3
                        (&this->obj_->super_Object,var_7,&info_len,&var_37,(uint64_t *)0x0);
    if (var_19 != 0) {
      var_21 = (uint64_t *)((long)puVar3 + (type_4)(var_19 - 1) * 4 + 4);
      var_20 = puVar3;
      do {
        while (uVar12 = *var_20, (type_2)uVar12 == 0) {
LAB_0016216d:
          var_9 = var_9 + 1;
          var_20 = (uint64_t *)((long)var_20 + 4);
          if (var_20 == var_21) goto LAB_00162290;
        }
        signature = *var_9;
        if (is_tu_index) {
          output_file->last_type_sig_ = signature;
          bVar13 = type_3::Dwp_index::var_22
                             (&output_file->tu_index_,signature,&output_file->last_tu_slot_);
          if (bVar13) goto LAB_0016216d;
        }
        var_24 = (type_7 *)var_23(0x98);
        var_15 = var_24->sections;
        do {
          var_15->offset = 0;
          var_16 = var_15 + 1;
          var_15->size = 0;
          var_15 = var_16;
        } while ((type_7 *)var_16 != var_24 + 1);
        var_24->signature = signature;
        var_25 = (type_4)(((type_2)uVar12 - 1) * var_4) * 4;
        var_11 = 0;
        do {
          var_7 = *(type_2 *)((long)puVar3 + var_11 * 4 + var_10 * 4);
          var_27 = *(type_4 *)((long)puVar3 + var_11 * 4 + var_25 + var_14);
          var_26 = var_11 * 4;
          var_11 = var_11 + 1;
          var_24->sections[var_7].offset =
               (type_4)*(type_2 *)((long)puVar3 + var_26 + var_25 + var_12) + sections[var_7].offset;
          var_24->sections[var_7].size = var_27 & 0xffffffff;
        } while ((type_2)var_11 <= var_4);
        var_15 = var_24->sections + (2 - (type_4)!is_tu_index);
        var_11 = var_15->offset;
        var_27 = var_15->size;
        if (is_tu_index) {
          __dest = var_28(var_27);
          contents = (type_6 *)var_29(__dest,var_30 + var_11,var_27);
          sVar19 = type_3::var_31
                             (output_file,var_32 - !is_tu_index,contents,var_27,1);
          var_15->offset = sVar19;
          Dwp_output_file::var_33(output_file,var_24);
          goto LAB_0016216d;
        }
        var_9 = var_9 + 1;
        var_20 = (uint64_t *)((long)var_20 + 4);
        sVar19 = type_3::var_31
                           (output_file,var_32 - !is_tu_index,var_30 + var_11,var_27,1);
        var_15->offset = sVar19;
        Dwp_output_file::var_34(output_file,var_24);
      } while (var_20 != var_21);
    }
LAB_00162290:
    if (var_35 != false) {
      var_36(var_8);
    }
    if ((var_37 != false) && (var_30 != (type_6 *)0x0)) {
      var_36(var_30);
    }
  }
  return;
}


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

void MASKED(undefined8 *param_1,ulong param_2,long param_3,long param_4,char param_5)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  undefined8 uVar6;
  size_t __n;
  long lVar7;
  char cVar8;
  int *piVar9;
  ulong uVar10;
  long *plVar11;
  long *plVar12;
  long lVar13;
  undefined8 *puVar14;
  undefined8 *puVar15;
  undefined8 *puVar16;
  long lVar17;
  void *pvVar18;
  undefined8 uVar19;
  int iVar20;
  ulong uVar21;
  ulong uVar22;
  ulong uVar23;
  ulong uVar24;
  int iVar25;
  ulong uVar26;
  int *piVar27;
  int *piVar28;
  undefined1 auVar29 [16];
  char local_da;
  char local_d9;
  long local_d8;
  undefined1 local_d0 [8];
  long local_c8 [19];
  
  iVar2 = *(int *)(param_3 + 8 + (-(ulong)(param_5 == '\0') & 0xfffffffffffffffc));
  iVar20 = 2 - (uint)(param_5 == '\0');
  if ((int)param_2 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/dwp.cc",0x476,"sized_read_unit_index");
  }
  piVar9 = (int *)FUN_001bd870(param_1[1],param_2,&local_d8,&local_da,0);
  iVar3 = *piVar9;
  if (iVar3 != 2) {
    (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);
    uVar6 = *param_1;
    uVar19 = gettext("%s: section %s has unsupported version number %d");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0016240e to 00162412 has its CatchHandler @ 00162418 */
    FUN_001781e0(uVar19,uVar6,local_c8[0],iVar3);
  }
  uVar4 = piVar9[1];
  if ((uVar4 != 0) && (piVar9[2] != 0)) {
    if (iVar2 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/dwp.cc",0x490,"sized_read_unit_index");
    }
    uVar10 = (ulong)(piVar9[2] * uVar4);
    uVar5 = piVar9[3];
    uVar22 = (ulong)uVar5;
    piVar28 = piVar9 + 4;
    piVar1 = piVar28 + uVar22 * 2;
    uVar23 = (ulong)uVar4;
    if ((int *)((long)piVar9 + local_d8) < piVar1 + uVar22 + uVar23 + uVar10 * 2) {
      (**(code **)(*(long *)param_1[1] + 0x80))(local_c8,(long *)param_1[1],param_2 & 0xffffffff);
      uVar6 = *param_1;
      uVar19 = gettext("%s: section %s is corrupt");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001623b2 to 001623b6 has its CatchHandler @ 00162413 */
      FUN_001781e0(uVar19,uVar6,local_c8[0]);
    }
    plVar11 = local_c8;
    do {
      *plVar11 = 0;
      plVar12 = plVar11 + 2;
      plVar11[1] = 0;
      plVar11 = plVar12;
    } while (local_c8 + 0x12 != plVar12);
    uVar26 = 3;
    do {
      while (iVar3 = *(int *)(param_3 + uVar26 * 4), iVar3 == 0) {
        uVar26 = uVar26 + 1;
        if (uVar26 == 9) goto LAB_001620d1;
      }
      iVar25 = (int)uVar26;
      uVar21 = uVar26 & 0xffffffff;
      uVar26 = uVar26 + 1;
      auVar29 = FUN_00152a20(param_1,param_4,iVar3,uVar21);
      local_c8[(long)iVar25 * 2] = auVar29._0_8_;
      local_c8[(long)iVar25 * 2 + 1] = auVar29._8_8_;
    } while (uVar26 != 9);
LAB_001620d1:
    lVar13 = FUN_001bd870(param_1[1],iVar2,local_d0,&local_d9,0);
    if (uVar5 != 0) {
      piVar27 = piVar1;
      do {
        while (iVar2 = *piVar27, iVar2 == 0) {
LAB_0016216d:
          piVar28 = piVar28 + 2;
          piVar27 = piVar27 + 1;
          if (piVar27 == piVar1 + (ulong)(uVar5 - 1) + 1) goto LAB_00162290;
        }
        uVar6 = *(undefined8 *)piVar28;
        if (param_5 != '\0') {
          *(undefined8 *)(param_4 + 0x208) = uVar6;
          cVar8 = FUN_00151b80(param_4 + 0x1d0,uVar6,param_4 + 0x210);
          if (cVar8 != '\0') goto LAB_0016216d;
        }
        puVar14 = (undefined8 *)FUN_002d9490(0x98);
        puVar15 = puVar14 + 1;
        do {
          *puVar15 = 0;
          puVar16 = puVar15 + 2;
          puVar15[1] = 0;
          puVar15 = puVar16;
        } while (puVar16 != puVar14 + 0x13);
        *puVar14 = uVar6;
        uVar26 = (ulong)((iVar2 + -1) * uVar4);
        lVar17 = 0;
        do {
          uVar24 = (ulong)(uint)piVar1[uVar22 + lVar17];
          uVar21 = *(ulong *)(piVar1 + uVar22 + uVar23 + uVar10 + uVar26 + lVar17);
          lVar7 = uVar26 + lVar17;
          lVar17 = lVar17 + 1;
          puVar14[uVar24 * 2 + 1] =
               (ulong)(uint)piVar1[uVar22 + uVar23 + lVar7] + local_c8[uVar24 * 2];
          puVar14[uVar24 * 2 + 2] = uVar21 & 0xffffffff;
        } while ((uint)lVar17 <= uVar4);
        plVar11 = puVar14 + 1 + (2 - (ulong)(param_5 == '\0')) * 2;
        lVar17 = *plVar11;
        __n = plVar11[1];
        if (param_5 != '\0') {
          pvVar18 = (void *)thunk_FUN_002d9490(__n);
          pvVar18 = memcpy(pvVar18,(void *)(lVar13 + lVar17),__n);
          lVar17 = FUN_001527a0(param_4,iVar20,pvVar18,__n,1);
          *plVar11 = lVar17;
          FUN_00153210(param_4,puVar14);
          goto LAB_0016216d;
        }
        piVar28 = piVar28 + 2;
        piVar27 = piVar27 + 1;
        lVar17 = FUN_001527a0(param_4,iVar20,(void *)(lVar13 + lVar17),__n,1);
        *plVar11 = lVar17;
        FUN_00153090(param_4,puVar14);
      } while (piVar27 != piVar1 + (ulong)(uVar5 - 1) + 1);
    }
LAB_00162290:
    if (local_da != '\0') {
      thunk_FUN_002dac60(piVar9);
    }
    if ((local_d9 != '\0') && (lVar13 != 0)) {
      thunk_FUN_002dac60(lVar13);
    }
  }
  return;
}

