
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_segment * set_phdrs_clause_addresses(Script_sections * this,
   Layout * layout, uint64_t dot_alignment) */

Output_segment * __thiscall
gold::Script_sections::set_phdrs_clause_addresses
          (Script_sections *this,Layout *layout,uint64_t dot_alignment)

{
  Output_segment *this_00;
  _func_int_varargs *p_Var1;
  byte bVar2;
  Output_section *pOVar3;
  Phdrs_element *pPVar4;
  size_t sizeof_headers;
  char *pcVar5;
  char *format;
  int iVar6;
  uint uVar7;
  Phdrs_elements *pPVar8;
  uint extraout_EDX;
  uint uVar9;
  pointer ppPVar10;
  bool bVar11;
  uint64_t uVar12;
  uint local_4c;
  uint local_48;
  uint local_44;
  uint local_40;
  uint local_34;
  uint local_30;
  uint local_2c;
  uint local_28;
  Output_segment *local_24;
  
  pPVar8 = this->phdrs_elements_;
  ppPVar10 = (pPVar8->
             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).
             _M_impl._M_start;
  if (ppPVar10 ==
      (pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).
      _M_impl._M_finish) {
    local_24 = (Output_segment *)0x0;
  }
  else {
    local_24 = (Output_segment *)0x0;
    do {
      while( true ) {
        local_30 = (uint)(dot_alignment >> 0x20);
        local_34 = (uint)dot_alignment;
        pPVar4 = *ppPVar10;
        this_00 = pPVar4->segment_;
        if (pPVar4->is_flags_valid_ != false) {
          this_00->flags_ = pPVar4->flags_;
        }
        if (this_00->type_ == 1) break;
        if (pPVar4->load_address_ != (Expression *)0x0) {
          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");
          gold_error(pcVar5);
          pPVar8 = this->phdrs_elements_;
        }
LAB_0015d4da:
        ppPVar10 = ppPVar10 + 1;
        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>
            )._M_impl._M_finish == ppPVar10) {
          return local_24;
        }
      }
      uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);
      if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {
        this_00->min_p_align_ = dot_alignment;
      }
      pOVar3 = Output_segment::section_with_lowest_load_address(this_00);
      if (pOVar3 == (Output_section *)0x0) {
        *(undefined4 *)&this_00->vaddr_ = 0;
        pPVar8 = this->phdrs_elements_;
        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;
        *(undefined4 *)&this_00->paddr_ = 0;
        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;
        this_00->field_0x19c = this_00->field_0x19c | 2;
        goto LAB_0015d4da;
      }
      if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/output.h",0xc5,"address");
      }
      local_4c = (uint)(pOVar3->super_Output_data).address_;
      local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);
      p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];
      if (p_Var1 == Output_section::do_has_load_address) {
        bVar2 = (byte)pOVar3->field_0x90 >> 7;
      }
      else {
        iVar6 = (*p_Var1)(pOVar3);
        bVar2 = (byte)iVar6;
      }
      local_44 = local_4c;
      local_40 = local_48;
      if (bVar2 != 0) {
        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];
        if (p_Var1 == Output_section::do_load_address) {
          if (-1 < (char)pOVar3->field_0x90) {
                    /* WARNING: Subroutine does not return */
            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");
          }
          local_44 = (uint)pOVar3->load_address_;
          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);
        }
        else {
          local_44 = (*p_Var1)(pOVar3);
          local_40 = extraout_EDX;
        }
      }
      pPVar4 = *ppPVar10;
      if (pPVar4->load_address_ != (Expression *)0x0) {
        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];
        if (p_Var1 == Output_section::do_has_load_address) {
          bVar2 = (byte)pOVar3->field_0x90 >> 7;
        }
        else {
          iVar6 = (*p_Var1)(pOVar3);
          bVar2 = (byte)iVar6;
        }
        if (bVar2 != 0) {
          pcVar5 = pOVar3->name_;
          format = (char *)gettext("PHDRS load address overrides section %s load address");
          gold_warning(format,pcVar5);
        }
        pPVar4 = *ppPVar10;
        if (pPVar4->load_address_ == (Expression *)0x0) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");
        }
        local_44 = (uint)pPVar4->load_address_value_;
        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);
      }
      if (pPVar4->includes_filehdr_ == false) {
        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;
      }
      else if (pPVar4->includes_phdrs_ == false) {
LAB_0015d714:
        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");
        gold_error(pcVar5);
      }
      else {
        sizeof_headers = total_header_size(this,layout);
        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);
        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);
        uVar7 = local_40;
        if (local_48 < local_40 || bVar11) {
          uVar7 = local_48;
        }
        local_28 = (uint)(uVar12 >> 0x20);
        uVar9 = local_44;
        if (local_48 < local_40 || bVar11) {
          uVar9 = local_4c;
        }
        local_2c = (uint)uVar12;
        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {
          pcVar5 = (char *)gettext(
                                  "sections loaded on first page without room for file and program headers are not supported"
                                  );
          gold_error(pcVar5);
        }
        else {
          bVar11 = local_44 < local_2c;
          local_44 = local_44 - local_2c;
          local_40 = (local_40 - local_28) - (uint)bVar11;
          bVar11 = local_4c < local_2c;
          local_4c = local_4c - local_2c;
          local_48 = (local_48 - local_28) - (uint)bVar11;
        }
        bVar11 = local_24 != (Output_segment *)0x0;
        local_24 = this_00;
        if (bVar11) {
          pcVar5 = (char *)gettext(
                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
                                  );
          gold_error(pcVar5);
        }
      }
      ppPVar10 = ppPVar10 + 1;
      this_00->field_0x19c = this_00->field_0x19c | 2;
      *(uint *)((int)&this_00->vaddr_ + 4) = local_48;
      *(uint *)&this_00->vaddr_ = local_4c;
      *(uint *)((int)&this_00->paddr_ + 4) = local_40;
      pPVar8 = this->phdrs_elements_;
      *(uint *)&this_00->paddr_ = local_44;
    } while ((pPVar8->
             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).
             _M_impl._M_finish != ppPVar10);
  }
  return local_24;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)

{
  uint *puVar1;
  int iVar2;
  uint uVar3;
  longlong lVar4;
  longlong lVar5;
  byte bVar6;
  int *piVar7;
  int iVar8;
  undefined4 uVar9;
  uint uVar10;
  uint uVar11;
  int *piVar12;
  bool bVar13;
  longlong lVar14;
  longlong lVar15;
  uint local_4c;
  uint local_48;
  uint local_44;
  uint local_40;
  int local_24;
  
  piVar7 = *(int **)(param_1 + 0x10);
  piVar12 = (int *)*piVar7;
  if (piVar12 == (int *)piVar7[1]) {
    local_24 = 0;
  }
  else {
    local_24 = 0;
    do {
      while( true ) {
        iVar8 = *piVar12;
        iVar2 = *(int *)(iVar8 + 0x30);
        if (*(char *)(iVar8 + 0x1e) != '\0') {
          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);
        }
        if (*(int *)(iVar2 + 0x194) == 1) break;
        if (*(int *)(iVar8 + 0x24) != 0) {
          uVar9 = gettext("may only specify load address for PT_LOAD segment");
          FUN_000654b0(uVar9);
          piVar7 = *(int **)(param_1 + 0x10);
        }
LAB_0015d4da:
        piVar12 = piVar12 + 1;
        if ((int *)piVar7[1] == piVar12) {
          return local_24;
        }
      }
      if (*(uint *)(iVar2 + 0x180) < param_4 ||
          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {
        *(uint *)(iVar2 + 0x17c) = param_3;
        *(uint *)(iVar2 + 0x180) = param_4;
      }
      piVar7 = (int *)FUN_000f1580(iVar2);
      if (piVar7 == (int *)0x0) {
        *(undefined4 *)(iVar2 + 0x15c) = 0;
        piVar7 = *(int **)(param_1 + 0x10);
        *(undefined4 *)(iVar2 + 0x160) = 0;
        *(undefined4 *)(iVar2 + 0x164) = 0;
        *(undefined4 *)(iVar2 + 0x168) = 0;
        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;
        goto LAB_0015d4da;
      }
      if ((*(byte *)(piVar7 + 7) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00069d00("../../gold/output.h",0xc5,"address");
      }
      puVar1 = (uint *)(piVar7 + 1);
      local_4c = *puVar1;
      local_48 = piVar7[2];
      lVar5 = *(longlong *)puVar1;
      lVar15 = *(longlong *)puVar1;
      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {
        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;
      }
      else {
        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);
      }
      if (bVar6 != 0) {
        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {
          if (-1 < (char)piVar7[0x24]) {
                    /* WARNING: Subroutine does not return */
            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");
          }
          lVar15 = *(longlong *)(piVar7 + 0xd);
        }
        else {
          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);
        }
      }
      iVar8 = *piVar12;
      if (*(int *)(iVar8 + 0x24) != 0) {
        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {
          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;
        }
        else {
          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);
        }
        if (bVar6 != 0) {
          iVar8 = piVar7[8];
          uVar9 = gettext("PHDRS load address overrides section %s load address");
          FUN_000654e0(uVar9,iVar8);
        }
        iVar8 = *piVar12;
        if (*(int *)(iVar8 + 0x24) == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");
        }
        lVar15 = *(longlong *)(iVar8 + 0x28);
      }
      local_40 = (uint)((ulonglong)lVar15 >> 0x20);
      local_44 = (uint)lVar15;
      if (*(char *)(iVar8 + 0x1c) == '\0') {
        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;
      }
      else if (*(char *)(iVar8 + 0x1d) == '\0') {
LAB_0015d714:
        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");
        FUN_000654b0(uVar9);
      }
      else {
        uVar9 = FUN_0015ce10(param_1,param_2);
        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);
        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);
        uVar10 = (uint)lVar14;
        lVar4 = lVar15;
        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {
          lVar4 = lVar5;
        }
        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);
        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {
          uVar9 = gettext(
                         "sections loaded on first page without room for file and program headers are not supported"
                         );
          FUN_000654b0(uVar9);
        }
        else {
          lVar15 = lVar15 - lVar14;
          bVar13 = local_4c < uVar10;
          local_4c = local_4c - uVar10;
          local_48 = (local_48 - uVar11) - (uint)bVar13;
        }
        bVar13 = local_24 != 0;
        local_24 = iVar2;
        if (bVar13) {
          uVar9 = gettext(
                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
                         );
          FUN_000654b0(uVar9);
        }
      }
      piVar12 = piVar12 + 1;
      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;
      *(uint *)(iVar2 + 0x160) = local_48;
      *(uint *)(iVar2 + 0x15c) = local_4c;
      piVar7 = *(int **)(param_1 + 0x10);
      *(longlong *)(iVar2 + 0x164) = lVar15;
    } while ((int *)piVar7[1] != piVar12);
  }
  return local_24;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x000559ea
ADD ESI,0x231ba8
PUSH EBX
SUB ESP,0x3c
MOV EAX,dword ptr [ESP + 0x58]
MOV EDI,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x18],EAX
MOV EDX,dword ptr [EDI + 0x10]
MOV EAX,dword ptr [ESP + 0x5c]
MOV dword ptr [ESP + 0x10],ESI
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EDX]
CMP EAX,dword ptr [EDX + 0x4]
JZ 0x0015d846
MOV EBP,EAX
LEA EAX,[ESI + 0xffd15930]
MOV dword ptr [ESP + 0x28],0x0
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[ESI + 0xfff084fc]
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x0015d4e6
MOV ECX,dword ptr [EAX + 0x24]
TEST ECX,ECX
JZ 0x0015d4da
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x1c]
LEA EAX,[ESI + 0xfff08490]
MOV EBX,ESI
PUSH EAX
CALL 0x000293b0
MOV dword ptr [ESP],EAX
CALL 0x000654b0
MOV EDX,dword ptr [EDI + 0x10]
ADD ESP,0x10
ADD EBP,0x4
CMP dword ptr [EDX + 0x4],EBP
JZ 0x0015d6fd
MOV EAX,dword ptr [EBP]
CMP byte ptr [EAX + 0x1e],0x0
MOV ESI,dword ptr [EAX + 0x30]
JZ 0x0015d4fb
MOV ECX,dword ptr [EAX + 0x20]
MOV dword ptr [ESI + 0x198],ECX
CMP dword ptr [ESI + 0x194],0x1
JNZ 0x0015d4b0
MOV EAX,dword ptr [ESI + 0x180]
MOV EDX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x18]
CMP dword ptr [ESI + 0x17c],ECX
SBB EAX,EDX
JNC 0x0015d528
MOV dword ptr [ESI + 0x17c],ECX
MOV dword ptr [ESI + 0x180],EDX
SUB ESP,0xc
PUSH ESI
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x000f1580
ADD ESP,0x10
MOV EBX,EAX
TEST EAX,EAX
JZ 0x0015d790
TEST byte ptr [EAX + 0x1c],0x1
JZ 0x0015d853
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EBX + 0x8]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [EBX]
MOV dword ptr [ESP + 0x4],EDX
MOV EAX,dword ptr [EAX + 0x10]
CMP EAX,dword ptr [ESP + 0x14]
JNZ 0x0015d7d0
MOVZX EAX,byte ptr [EBX + 0x90]
SHR AL,0x7
TEST AL,AL
JZ 0x0015d738
MOV EAX,dword ptr [EBX]
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x14]
LEA EDX,[ECX + 0xffd15bf0]
CMP EAX,EDX
JNZ 0x0015d830
CMP byte ptr [EBX + 0x90],0x0
JNS 0x0015d891
MOV EAX,dword ptr [EBX + 0x34]
MOV EDX,dword ptr [EBX + 0x38]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],EDX
MOV EAX,dword ptr [EBP]
MOV EDX,dword ptr [EAX + 0x24]
TEST EDX,EDX
JZ 0x0015d5f3
MOV EAX,dword ptr [EBX]
MOV EAX,dword ptr [EAX + 0x10]
CMP EAX,dword ptr [ESP + 0x14]
JNZ 0x0015d7f0
MOVZX EAX,byte ptr [EBX + 0x90]
SHR AL,0x7
TEST AL,AL
JNZ 0x0015d750
MOV EAX,dword ptr [EBP]
MOV EDX,dword ptr [EAX + 0x24]
TEST EDX,EDX
JZ 0x0015d872
MOV ECX,dword ptr [EAX + 0x28]
MOV EBX,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0x8],ECX
MOV dword ptr [ESP + 0xc],EBX
CMP byte ptr [EAX + 0x1c],0x0
MOVZX EDX,byte ptr [EAX + 0x1d]
JZ 0x0015d710
TEST DL,DL
JZ 0x0015d714
SUB ESP,0x8
PUSH dword ptr [ESP + 0x5c]
PUSH EDI
CALL 0x0015ce10
ADD ESP,0x10
PUSH EAX
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x10]
PUSH EDI
CALL 0x0015cea0
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x34],EDX
MOV EDX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV EBX,EAX
MOV EAX,dword ptr [ESP]
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x4]
CMP EAX,EBX
MOV EAX,EDX
MOV EDX,dword ptr [ESP + 0x4]
SBB EAX,ECX
MOV EAX,dword ptr [ESP]
CMOVC ECX,EDX
MOV EDX,dword ptr [ESP + 0x24]
CMOVC EBX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CMP EBX,EAX
SBB ECX,EDX
JC 0x0015d800
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x24]
SUB dword ptr [ESP + 0x8],EAX
SBB dword ptr [ESP + 0xc],EDX
SUB dword ptr [ESP],EAX
SBB dword ptr [ESP + 0x4],EDX
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x0015d7e0
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xfff08598]
PUSH EAX
MOV dword ptr [ESP + 0x20],EBX
CALL 0x000293b0
MOV EBX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP],EAX
CALL 0x000654b0
ADD ESP,0x10
MOV dword ptr [ESP + 0x28],ESI
LEA ESI,[ESI]
NOP
MOV EDX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP]
ADD EBP,0x4
OR byte ptr [ESI + 0x19c],0x2
MOV dword ptr [ESI + 0x160],EDX
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x15c],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [ESI + 0x168],EDX
MOV EDX,dword ptr [EDI + 0x10]
MOV dword ptr [ESI + 0x164],EAX
CMP dword ptr [EDX + 0x4],EBP
JNZ 0x0015d4e6
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
TEST DL,DL
JZ 0x0015d6c0
SUB ESP,0xc
PUSH dword ptr [ESP + 0x38]
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x000293b0
MOV EBX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP],EAX
CALL 0x000654b0
ADD ESP,0x10
JMP 0x0015d6c0
MOV EAX,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],EDX
JMP 0x0015d5ac
MOV EDX,dword ptr [EBX + 0x20]
SUB ESP,0xc
MOV dword ptr [ESP + 0x14],EDX
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xfff084c4]
PUSH EAX
MOV dword ptr [ESP + 0x20],EBX
CALL 0x000293b0
POP ECX
POP EBX
MOV EDX,dword ptr [ESP + 0x10]
PUSH EDX
PUSH EAX
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x000654e0
ADD ESP,0x10
JMP 0x0015d5d7
MOV dword ptr [ESI + 0x15c],0x0
MOV EDX,dword ptr [EDI + 0x10]
MOV dword ptr [ESI + 0x160],0x0
MOV dword ptr [ESI + 0x164],0x0
MOV dword ptr [ESI + 0x168],0x0
OR byte ptr [ESI + 0x19c],0x2
JMP 0x0015d4da
SUB ESP,0xc
PUSH EBX
CALL EAX
ADD ESP,0x10
JMP 0x0015d572
MOV dword ptr [ESP + 0x28],ESI
JMP 0x0015d6c0
SUB ESP,0xc
PUSH EBX
CALL EAX
ADD ESP,0x10
JMP 0x0015d5cf
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x1c]
LEA EAX,[EBX + 0xfff0853c]
PUSH EAX
MOV dword ptr [ESP + 0x20],EBX
CALL 0x000293b0
MOV EBX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP],EAX
CALL 0x000654b0
ADD ESP,0x10
JMP 0x0015d682
SUB ESP,0xc
PUSH EBX
CALL EAX
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EDX
ADD ESP,0x10
JMP 0x0015d5ac
MOV dword ptr [ESP + 0x28],0x0
JMP 0x0015d6fd
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xfff08a38]
PUSH EAX
LEA EAX,[EBX + 0xffef8eac]
PUSH 0xc5
PUSH EAX
CALL 0x00069d00
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xfff0885c]
PUSH EAX
LEA EAX,[EBX + 0xfff08093]
PUSH 0xc6b
PUSH EAX
CALL 0x00069d00
SUB ESP,0x4
MOV EBX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xfff089fc]
PUSH EAX
LEA EAX,[EBX + 0xffef8eac]
PUSH 0x107b
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nint FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  longlong lVar4;\n  longlong lVar5;\n  byte bVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  bool bVar13;\n  longlong lVar14;\n  longlong lVar15;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  int local_24;\n  \n  piVar7 = *(int **)(param_1 + 0x10);\n  piVar12 = (int *)*piVar7;\n  if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }\n  return local_24;\n}\n\n" comment (function_definition "int FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  longlong lVar4;\n  longlong lVar5;\n  byte bVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  bool bVar13;\n  longlong lVar14;\n  longlong lVar15;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  int local_24;\n  \n  piVar7 = *(int **)(param_1 + 0x10);\n  piVar12 = (int *)*piVar7;\n  if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }\n  return local_24;\n}" primitive_type (function_declarator "FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,uint param_3,uint param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  longlong lVar4;\n  longlong lVar5;\n  byte bVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  bool bVar13;\n  longlong lVar14;\n  longlong lVar15;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  int local_24;\n  \n  piVar7 = *(int **)(param_1 + 0x10);\n  piVar12 = (int *)*piVar7;\n  if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }\n  return local_24;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "longlong lVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "longlong lVar14;" type_identifier identifier ;) (declaration "longlong lVar15;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar12 = (int *)*piVar7;" (assignment_expression "piVar12 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (if_statement "if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" if (parenthesized_expression "(piVar12 == (int *)piVar7[1])" ( (binary_expression "piVar12 == (int *)piVar7[1]" identifier == (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    local_24 = 0;\n  }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" else (compound_statement "{\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);" do (compound_statement "{\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    }" { (while_statement "while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }" { (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "iVar2 = *(int *)(iVar8 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x30)" identifier = (pointer_expression "*(int *)(iVar8 + 0x30)" * (cast_expression "(int *)(iVar8 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30)" ( (binary_expression "iVar8 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }" if (parenthesized_expression "(*(char *)(iVar8 + 0x1e) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x1e) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x1e)" * (cast_expression "(char *)(iVar8 + 0x1e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1e)" ( (binary_expression "iVar8 + 0x1e" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }" { (expression_statement "*(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);" (assignment_expression "*(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20)" (pointer_expression "*(undefined4 *)(iVar2 + 0x198)" * (cast_expression "(undefined4 *)(iVar2 + 0x198)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x198)" ( (binary_expression "iVar2 + 0x198" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" * (cast_expression "(undefined4 *)(iVar8 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(iVar2 + 0x194) == 1) break;" if (parenthesized_expression "(*(int *)(iVar2 + 0x194) == 1)" ( (binary_expression "*(int *)(iVar2 + 0x194) == 1" (pointer_expression "*(int *)(iVar2 + 0x194)" * (cast_expression "(int *)(iVar2 + 0x194)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x194)" ( (binary_expression "iVar2 + 0x194" identifier + number_literal) )))) == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }" if (parenthesized_expression "(*(int *)(iVar8 + 0x24) != 0)" ( (binary_expression "*(int *)(iVar8 + 0x24) != 0" (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }" { (expression_statement "uVar9 = gettext("may only specify load address for PT_LOAD segment");" (assignment_expression "uVar9 = gettext("may only specify load address for PT_LOAD segment")" identifier = (call_expression "gettext("may only specify load address for PT_LOAD segment")" identifier (argument_list "("may only specify load address for PT_LOAD segment")" ( (string_literal ""may only specify load address for PT_LOAD segment"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_0015d4da:\n        piVar12 = piVar12 + 1;" statement_identifier : (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;)) (if_statement "if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }" if (parenthesized_expression "((int *)piVar7[1] == piVar12)" ( (binary_expression "(int *)piVar7[1] == piVar12" (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n          return local_24;\n        }" { (return_statement "return local_24;" return identifier ;) })) })) (if_statement "if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }" if (parenthesized_expression "(*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3))" ( (binary_expression "*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (binary_expression "*(uint *)(iVar2 + 0x180) < param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" * (cast_expression "(uint *)(iVar2 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x180)" ( (binary_expression "iVar2 + 0x180" identifier + number_literal) )))) < identifier) || (binary_expression "*(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (binary_expression "*(uint *)(iVar2 + 0x180) - param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" * (cast_expression "(uint *)(iVar2 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x180)" ( (binary_expression "iVar2 + 0x180" identifier + number_literal) )))) - identifier) < (call_expression "(uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar2 + 0x17c) < param_3)" ( (binary_expression "*(uint *)(iVar2 + 0x17c) < param_3" (pointer_expression "*(uint *)(iVar2 + 0x17c)" * (cast_expression "(uint *)(iVar2 + 0x17c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x17c)" ( (binary_expression "iVar2 + 0x17c" identifier + number_literal) )))) < identifier) ))))) )) (compound_statement "{\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }" { (expression_statement "*(uint *)(iVar2 + 0x17c) = param_3;" (assignment_expression "*(uint *)(iVar2 + 0x17c) = param_3" (pointer_expression "*(uint *)(iVar2 + 0x17c)" * (cast_expression "(uint *)(iVar2 + 0x17c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x17c)" ( (binary_expression "iVar2 + 0x17c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar2 + 0x180) = param_4;" (assignment_expression "*(uint *)(iVar2 + 0x180) = param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" * (cast_expression "(uint *)(iVar2 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x180)" ( (binary_expression "iVar2 + 0x180" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar7 = (int *)FUN_000f1580(iVar2);" (assignment_expression "piVar7 = (int *)FUN_000f1580(iVar2)" identifier = (cast_expression "(int *)FUN_000f1580(iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000f1580(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))))) ;) (if_statement "if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }" { (expression_statement "*(undefined4 *)(iVar2 + 0x15c) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x15c) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x15c)" * (cast_expression "(undefined4 *)(iVar2 + 0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x15c)" ( (binary_expression "iVar2 + 0x15c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x160) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x160) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x160)" * (cast_expression "(undefined4 *)(iVar2 + 0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x160)" ( (binary_expression "iVar2 + 0x160" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x164) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x164) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x164)" * (cast_expression "(undefined4 *)(iVar2 + 0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x164)" ( (binary_expression "iVar2 + 0x164" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x168) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x168) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x168)" * (cast_expression "(undefined4 *)(iVar2 + 0x168)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x168)" ( (binary_expression "iVar2 + 0x168" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" * (cast_expression "(byte *)(iVar2 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x19c)" ( (binary_expression "iVar2 + 0x19c" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" * (cast_expression "(byte *)(iVar2 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x19c)" ( (binary_expression "iVar2 + 0x19c" identifier + number_literal) )))) | number_literal)) ;) (goto_statement "goto LAB_0015d4da;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }" if (parenthesized_expression "((*(byte *)(piVar7 + 7) & 1) == 0)" ( (binary_expression "(*(byte *)(piVar7 + 7) & 1) == 0" (parenthesized_expression "(*(byte *)(piVar7 + 7) & 1)" ( (binary_expression "*(byte *)(piVar7 + 7) & 1" (pointer_expression "*(byte *)(piVar7 + 7)" * (cast_expression "(byte *)(piVar7 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 7)" ( (binary_expression "piVar7 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }" { comment (expression_statement "FUN_00069d00("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00069d00("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "puVar1 = (uint *)(piVar7 + 1);" (assignment_expression "puVar1 = (uint *)(piVar7 + 1)" identifier = (cast_expression "(uint *)(piVar7 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 1)" ( (binary_expression "piVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "local_4c = *puVar1;" (assignment_expression "local_4c = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "local_48 = piVar7[2];" (assignment_expression "local_48 = piVar7[2]" identifier = (subscript_expression "piVar7[2]" identifier [ number_literal ])) ;) (expression_statement "lVar5 = *(longlong *)puVar1;" (assignment_expression "lVar5 = *(longlong *)puVar1" identifier = (pointer_expression "*(longlong *)puVar1" * (cast_expression "(longlong *)puVar1" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "lVar15 = *(longlong *)puVar1;" (assignment_expression "lVar15 = *(longlong *)puVar1" identifier = (pointer_expression "*(longlong *)puVar1" * (cast_expression "(longlong *)puVar1" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" if (parenthesized_expression "(*(code **)(*piVar7 + 0x10) == FUN_000a4930)" ( (binary_expression "*(code **)(*piVar7 + 0x10) == FUN_000a4930" (pointer_expression "*(code **)(*piVar7 + 0x10)" * (cast_expression "(code **)(*piVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x10)" ( (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }" { (expression_statement "bVar6 = *(byte *)(piVar7 + 0x24) >> 7;" (assignment_expression "bVar6 = *(byte *)(piVar7 + 0x24) >> 7" identifier = (binary_expression "*(byte *)(piVar7 + 0x24) >> 7" (pointer_expression "*(byte *)(piVar7 + 0x24)" * (cast_expression "(byte *)(piVar7 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 0x24)" ( (binary_expression "piVar7 + 0x24" identifier + number_literal) )))) >> number_literal)) ;) }) (else_clause "else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" else (compound_statement "{\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" { (expression_statement "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);" (assignment_expression "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7)" identifier = (call_expression "(**(code **)(*piVar7 + 0x10))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x10))" ( (pointer_expression "**(code **)(*piVar7 + 0x10)" * (pointer_expression "*(code **)(*piVar7 + 0x10)" * (cast_expression "(code **)(*piVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x10)" ( (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "(piVar7)" ( identifier )))) ;) }))) (if_statement "if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }" { (if_statement "if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" if (parenthesized_expression "(*(code **)(*piVar7 + 0x14) == FUN_000a4bf0)" ( (binary_expression "*(code **)(*piVar7 + 0x14) == FUN_000a4bf0" (pointer_expression "*(code **)(*piVar7 + 0x14)" * (cast_expression "(code **)(*piVar7 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x14)" ( (binary_expression "*piVar7 + 0x14" (pointer_expression "*piVar7" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n          if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }" { (if_statement "if (-1 < (char)piVar7[0x24]) {\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }" if (parenthesized_expression "(-1 < (char)piVar7[0x24])" ( (binary_expression "-1 < (char)piVar7[0x24]" number_literal < (cast_expression "(char)piVar7[0x24]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar7[0x24]" identifier [ number_literal ]))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }" { comment (expression_statement "FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_00069d00("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "lVar15 = *(longlong *)(piVar7 + 0xd);" (assignment_expression "lVar15 = *(longlong *)(piVar7 + 0xd)" identifier = (pointer_expression "*(longlong *)(piVar7 + 0xd)" * (cast_expression "(longlong *)(piVar7 + 0xd)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 0xd)" ( (binary_expression "piVar7 + 0xd" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" else (compound_statement "{\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" { (expression_statement "lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);" (assignment_expression "lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7)" identifier = (call_expression "(**(code **)(*piVar7 + 0x14))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x14))" ( (pointer_expression "**(code **)(*piVar7 + 0x14)" * (pointer_expression "*(code **)(*piVar7 + 0x14)" * (cast_expression "(code **)(*piVar7 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x14)" ( (binary_expression "*piVar7 + 0x14" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "(piVar7)" ( identifier )))) ;) }))) })) (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (if_statement "if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }" if (parenthesized_expression "(*(int *)(iVar8 + 0x24) != 0)" ( (binary_expression "*(int *)(iVar8 + 0x24) != 0" (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }" { (if_statement "if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" if (parenthesized_expression "(*(code **)(*piVar7 + 0x10) == FUN_000a4930)" ( (binary_expression "*(code **)(*piVar7 + 0x10) == FUN_000a4930" (pointer_expression "*(code **)(*piVar7 + 0x10)" * (cast_expression "(code **)(*piVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x10)" ( (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }" { (expression_statement "bVar6 = *(byte *)(piVar7 + 0x24) >> 7;" (assignment_expression "bVar6 = *(byte *)(piVar7 + 0x24) >> 7" identifier = (binary_expression "*(byte *)(piVar7 + 0x24) >> 7" (pointer_expression "*(byte *)(piVar7 + 0x24)" * (cast_expression "(byte *)(piVar7 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 0x24)" ( (binary_expression "piVar7 + 0x24" identifier + number_literal) )))) >> number_literal)) ;) }) (else_clause "else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" else (compound_statement "{\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" { (expression_statement "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);" (assignment_expression "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7)" identifier = (call_expression "(**(code **)(*piVar7 + 0x10))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x10))" ( (pointer_expression "**(code **)(*piVar7 + 0x10)" * (pointer_expression "*(code **)(*piVar7 + 0x10)" * (cast_expression "(code **)(*piVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x10)" ( (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "(piVar7)" ( identifier )))) ;) }))) (if_statement "if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }" { (expression_statement "iVar8 = piVar7[8];" (assignment_expression "iVar8 = piVar7[8]" identifier = (subscript_expression "piVar7[8]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = gettext("PHDRS load address overrides section %s load address");" (assignment_expression "uVar9 = gettext("PHDRS load address overrides section %s load address")" identifier = (call_expression "gettext("PHDRS load address overrides section %s load address")" identifier (argument_list "("PHDRS load address overrides section %s load address")" ( (string_literal ""PHDRS load address overrides section %s load address"" " string_content ") )))) ;) (expression_statement "FUN_000654e0(uVar9,iVar8);" (call_expression "FUN_000654e0(uVar9,iVar8)" identifier (argument_list "(uVar9,iVar8)" ( identifier , identifier ))) ;) })) (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (if_statement "if (*(int *)(iVar8 + 0x24) == 0) {\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }" if (parenthesized_expression "(*(int *)(iVar8 + 0x24) == 0)" ( (binary_expression "*(int *)(iVar8 + 0x24) == 0" (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }" { comment (expression_statement "FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");" (call_expression "FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address")" identifier (argument_list "("../../gold/script-sections.cc",0xc6b,"load_address")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""load_address"" " string_content ") ))) ;) })) (expression_statement "lVar15 = *(longlong *)(iVar8 + 0x28);" (assignment_expression "lVar15 = *(longlong *)(iVar8 + 0x28)" identifier = (pointer_expression "*(longlong *)(iVar8 + 0x28)" * (cast_expression "(longlong *)(iVar8 + 0x28)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) ))))) ;) })) (expression_statement "local_40 = (uint)((ulonglong)lVar15 >> 0x20);" (assignment_expression "local_40 = (uint)((ulonglong)lVar15 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar15 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_44 = (uint)lVar15;" (assignment_expression "local_44 = (uint)lVar15" identifier = (cast_expression "(uint)lVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" if (parenthesized_expression "(*(char *)(iVar8 + 0x1c) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0x1c) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x1c)" * (cast_expression "(char *)(iVar8 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }" { (if_statement "if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;" if (parenthesized_expression "(*(char *)(iVar8 + 0x1d) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x1d) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x1d)" * (cast_expression "(char *)(iVar8 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1d)" ( (binary_expression "iVar8 + 0x1d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0015d714;" goto statement_identifier ;)) }) (else_clause "else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" else (if_statement "if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" if (parenthesized_expression "(*(char *)(iVar8 + 0x1d) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0x1d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x1d)" * (cast_expression "(char *)(iVar8 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1d)" ( (binary_expression "iVar8 + 0x1d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }" { (labeled_statement "LAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");" statement_identifier : (expression_statement "uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");" (assignment_expression "uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported")" identifier = (call_expression "gettext("using only one of FILEHDR and PHDRS is not currently supported")" identifier (argument_list "("using only one of FILEHDR and PHDRS is not currently supported")" ( (string_literal ""using only one of FILEHDR and PHDRS is not currently supported"" " string_content ") )))) ;)) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) }) (else_clause "else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" else (compound_statement "{\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" { (expression_statement "uVar9 = FUN_0015ce10(param_1,param_2);" (assignment_expression "uVar9 = FUN_0015ce10(param_1,param_2)" identifier = (call_expression "FUN_0015ce10(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (expression_statement "lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);" (assignment_expression "lVar14 = FUN_0015cea0(param_1,lVar15,uVar9)" identifier = (call_expression "FUN_0015cea0(param_1,lVar15,uVar9)" identifier (argument_list "(param_1,lVar15,uVar9)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar11 = (uint)((ulonglong)lVar14 >> 0x20);" (assignment_expression "uVar11 = (uint)((ulonglong)lVar14 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar14 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar14 >> 0x20)" ( (binary_expression "(ulonglong)lVar14 >> 0x20" (cast_expression "(ulonglong)lVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = (uint)lVar14;" (assignment_expression "uVar10 = (uint)lVar14" identifier = (cast_expression "(uint)lVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "lVar4 = lVar15;" (assignment_expression "lVar4 = lVar15" identifier = identifier) ;) (if_statement "if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }" if (parenthesized_expression "(local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44))" ( (binary_expression "local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)" (binary_expression "local_48 < local_40" identifier < identifier) || (binary_expression "local_48 - local_40 < (uint)(local_4c < local_44)" (binary_expression "local_48 - local_40" identifier - identifier) < (call_expression "(uint)(local_4c < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_4c < local_44)" ( (binary_expression "local_4c < local_44" identifier < identifier) ))))) )) (compound_statement "{\n          lVar4 = lVar5;\n        }" { (expression_statement "lVar4 = lVar5;" (assignment_expression "lVar4 = lVar5" identifier = identifier) ;) })) (expression_statement "uVar3 = (uint)((ulonglong)lVar4 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar4 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" if (parenthesized_expression "(uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10))" ( (binary_expression "uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)" (binary_expression "uVar3 < uVar11" identifier < identifier) || (binary_expression "uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)" (binary_expression "uVar3 - uVar11" identifier - identifier) < (call_expression "(uint)((uint)lVar4 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)lVar4 < uVar10)" ( (binary_expression "(uint)lVar4 < uVar10" (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) ))))) )) (compound_statement "{\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" { (expression_statement "uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );" (assignment_expression "uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" identifier = (call_expression "gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" identifier (argument_list "(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" ( (string_literal ""sections loaded on first page without room for file and program headers are not supported"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) }) (else_clause "else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" else (compound_statement "{\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" { (expression_statement "lVar15 = lVar15 - lVar14;" (assignment_expression "lVar15 = lVar15 - lVar14" identifier = (binary_expression "lVar15 - lVar14" identifier - identifier)) ;) (expression_statement "bVar13 = local_4c < uVar10;" (assignment_expression "bVar13 = local_4c < uVar10" identifier = (binary_expression "local_4c < uVar10" identifier < identifier)) ;) (expression_statement "local_4c = local_4c - uVar10;" (assignment_expression "local_4c = local_4c - uVar10" identifier = (binary_expression "local_4c - uVar10" identifier - identifier)) ;) (expression_statement "local_48 = (local_48 - uVar11) - (uint)bVar13;" (assignment_expression "local_48 = (local_48 - uVar11) - (uint)bVar13" identifier = (binary_expression "(local_48 - uVar11) - (uint)bVar13" (parenthesized_expression "(local_48 - uVar11)" ( (binary_expression "local_48 - uVar11" identifier - identifier) )) - (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "bVar13 = local_24 != 0;" (assignment_expression "bVar13 = local_24 != 0" identifier = (binary_expression "local_24 != 0" identifier != number_literal)) ;) (expression_statement "local_24 = iVar2;" (assignment_expression "local_24 = iVar2" identifier = identifier) ;) (if_statement "if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" { (expression_statement "uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );" (assignment_expression "uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" identifier = (call_expression "gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" identifier (argument_list "(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" ( (string_literal ""using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) })) }))))) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" * (cast_expression "(byte *)(iVar2 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x19c)" ( (binary_expression "iVar2 + 0x19c" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" * (cast_expression "(byte *)(iVar2 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x19c)" ( (binary_expression "iVar2 + 0x19c" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(uint *)(iVar2 + 0x160) = local_48;" (assignment_expression "*(uint *)(iVar2 + 0x160) = local_48" (pointer_expression "*(uint *)(iVar2 + 0x160)" * (cast_expression "(uint *)(iVar2 + 0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x160)" ( (binary_expression "iVar2 + 0x160" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar2 + 0x15c) = local_4c;" (assignment_expression "*(uint *)(iVar2 + 0x15c) = local_4c" (pointer_expression "*(uint *)(iVar2 + 0x15c)" * (cast_expression "(uint *)(iVar2 + 0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x15c)" ( (binary_expression "iVar2 + 0x15c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(longlong *)(iVar2 + 0x164) = lVar15;" (assignment_expression "*(longlong *)(iVar2 + 0x164) = lVar15" (pointer_expression "*(longlong *)(iVar2 + 0x164)" * (cast_expression "(longlong *)(iVar2 + 0x164)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x164)" ( (binary_expression "iVar2 + 0x164" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "((int *)piVar7[1] != piVar12)" ( (binary_expression "(int *)piVar7[1] != piVar12" (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) != identifier) )) ;) }))) (return_statement "return local_24;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Output_segment * set_phdrs_clause_addresses(Script_sections * this,\n   Layout * layout, uint64_t dot_alignment) */\n\nOutput_segment * __thiscall\ngold::Script_sections::set_phdrs_clause_addresses\n          (Script_sections *this,Layout *layout,uint64_t dot_alignment)\n\n{\n  Output_segment *this_00;\n  _func_int_varargs *p_Var1;\n  byte bVar2;\n  Output_section *pOVar3;\n  Phdrs_element *pPVar4;\n  size_t sizeof_headers;\n  char *pcVar5;\n  char *format;\n  int iVar6;\n  uint uVar7;\n  Phdrs_elements *pPVar8;\n  uint extraout_EDX;\n  uint uVar9;\n  pointer ppPVar10;\n  bool bVar11;\n  uint64_t uVar12;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  Output_segment *local_24;\n  \n  pPVar8 = this->phdrs_elements_;\n  ppPVar10 = (pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_start;\n  if (ppPVar10 ==\n      (pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n      _M_impl._M_finish) {\n    local_24 = (Output_segment *)0x0;\n  }\n  else {\n    local_24 = (Output_segment *)0x0;\n    do {\n      while( true ) {\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }\n      uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {\n        this_00->min_p_align_ = dot_alignment;\n      }\n      pOVar3 = Output_segment::section_with_lowest_load_address(this_00);\n      if (pOVar3 == (Output_section *)0x0) {\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }\n      if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      local_4c = (uint)(pOVar3->super_Output_data).address_;\n      local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);\n      p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n      if (p_Var1 == Output_section::do_has_load_address) {\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }\n      else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }\n      local_44 = local_4c;\n      local_40 = local_48;\n      if (bVar2 != 0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }\n      pPVar4 = *ppPVar10;\n      if (pPVar4->load_address_ != (Expression *)0x0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }\n      if (pPVar4->includes_filehdr_ == false) {\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }\n      else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }\n      ppPVar10 = ppPVar10 + 1;\n      this_00->field_0x19c = this_00->field_0x19c | 2;\n      *(uint *)((int)&this_00->vaddr_ + 4) = local_48;\n      *(uint *)&this_00->vaddr_ = local_4c;\n      *(uint *)((int)&this_00->paddr_ + 4) = local_40;\n      pPVar8 = this->phdrs_elements_;\n      *(uint *)&this_00->paddr_ = local_44;\n    } while ((pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish != ppPVar10);\n  }\n  return local_24;\n}\n\n" comment comment comment (ERROR "Output_segment * __thiscall\ngold::Script_sections::set_phdrs_clause_addresses\n          (Script_sections *this,Layout *layout,uint64_t dot_alignment)" (binary_expression "Output_segment * __thiscall\ngold::Script_sections::set_phdrs_clause_addresses\n          (Script_sections *this,Layout *layout,uint64_t dot_alignment)" identifier * (call_expression "__thiscall\ngold::Script_sections::set_phdrs_clause_addresses\n          (Script_sections *this,Layout *layout,uint64_t dot_alignment)" identifier (ERROR "gold::Script_sections::set_phdrs_clause_addresses" identifier : : identifier : : identifier) (argument_list "(Script_sections *this,Layout *layout,uint64_t dot_alignment)" ( (binary_expression "Script_sections *this" identifier * identifier) , (binary_expression "Layout *layout" identifier * identifier) , (ERROR "uint64_t" identifier) identifier ))))) (compound_statement "{\n  Output_segment *this_00;\n  _func_int_varargs *p_Var1;\n  byte bVar2;\n  Output_section *pOVar3;\n  Phdrs_element *pPVar4;\n  size_t sizeof_headers;\n  char *pcVar5;\n  char *format;\n  int iVar6;\n  uint uVar7;\n  Phdrs_elements *pPVar8;\n  uint extraout_EDX;\n  uint uVar9;\n  pointer ppPVar10;\n  bool bVar11;\n  uint64_t uVar12;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_34;\n  uint local_30;\n  uint local_2c;\n  uint local_28;\n  Output_segment *local_24;\n  \n  pPVar8 = this->phdrs_elements_;\n  ppPVar10 = (pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_start;\n  if (ppPVar10 ==\n      (pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n      _M_impl._M_finish) {\n    local_24 = (Output_segment *)0x0;\n  }\n  else {\n    local_24 = (Output_segment *)0x0;\n    do {\n      while( true ) {\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }\n      uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {\n        this_00->min_p_align_ = dot_alignment;\n      }\n      pOVar3 = Output_segment::section_with_lowest_load_address(this_00);\n      if (pOVar3 == (Output_section *)0x0) {\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }\n      if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      local_4c = (uint)(pOVar3->super_Output_data).address_;\n      local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);\n      p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n      if (p_Var1 == Output_section::do_has_load_address) {\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }\n      else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }\n      local_44 = local_4c;\n      local_40 = local_48;\n      if (bVar2 != 0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }\n      pPVar4 = *ppPVar10;\n      if (pPVar4->load_address_ != (Expression *)0x0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }\n      if (pPVar4->includes_filehdr_ == false) {\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }\n      else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }\n      ppPVar10 = ppPVar10 + 1;\n      this_00->field_0x19c = this_00->field_0x19c | 2;\n      *(uint *)((int)&this_00->vaddr_ + 4) = local_48;\n      *(uint *)&this_00->vaddr_ = local_4c;\n      *(uint *)((int)&this_00->paddr_ + 4) = local_40;\n      pPVar8 = this->phdrs_elements_;\n      *(uint *)&this_00->paddr_ = local_44;\n    } while ((pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish != ppPVar10);\n  }\n  return local_24;\n}" { (declaration "Output_segment *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "_func_int_varargs *p_Var1;" type_identifier (pointer_declarator "*p_Var1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "Output_section *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "Phdrs_element *pPVar4;" type_identifier (pointer_declarator "*pPVar4" * identifier) ;) (declaration "size_t sizeof_headers;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "Phdrs_elements *pPVar8;" type_identifier (pointer_declarator "*pPVar8" * identifier) ;) (declaration "uint extraout_EDX;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "pointer ppPVar10;" type_identifier identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "uint64_t uVar12;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "Output_segment *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (expression_statement "pPVar8 = this->phdrs_elements_;" (assignment_expression "pPVar8 = this->phdrs_elements_" identifier = (field_expression "this->phdrs_elements_" identifier -> field_identifier)) ;) (expression_statement "ppPVar10 = (pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_start;" (assignment_expression "ppPVar10 = (pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_start" identifier = (field_expression "(pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_start" (field_expression "(pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl" (parenthesized_expression "(pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>)" ( (ERROR "pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::" (comma_expression "pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std" (binary_expression "pPVar8->\n             super__Vector_base<gold::Phdrs_element*" (binary_expression "pPVar8->\n             super__Vector_base<gold" (field_expression "pPVar8->\n             super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Phdrs_element*>_>" (binary_expression "Phdrs_element*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (ppPVar10 ==\n      (pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n      _M_impl._M_finish) {\n    local_24 = (Output_segment *)0x0;\n  }\n  else {\n    local_24 = (Output_segment *)0x0;\n    do {\n      while( true ) {\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }\n      uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {\n        this_00->min_p_align_ = dot_alignment;\n      }\n      pOVar3 = Output_segment::section_with_lowest_load_address(this_00);\n      if (pOVar3 == (Output_section *)0x0) {\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }\n      if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      local_4c = (uint)(pOVar3->super_Output_data).address_;\n      local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);\n      p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n      if (p_Var1 == Output_section::do_has_load_address) {\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }\n      else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }\n      local_44 = local_4c;\n      local_40 = local_48;\n      if (bVar2 != 0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }\n      pPVar4 = *ppPVar10;\n      if (pPVar4->load_address_ != (Expression *)0x0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }\n      if (pPVar4->includes_filehdr_ == false) {\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }\n      else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }\n      ppPVar10 = ppPVar10 + 1;\n      this_00->field_0x19c = this_00->field_0x19c | 2;\n      *(uint *)((int)&this_00->vaddr_ + 4) = local_48;\n      *(uint *)&this_00->vaddr_ = local_4c;\n      *(uint *)((int)&this_00->paddr_ + 4) = local_40;\n      pPVar8 = this->phdrs_elements_;\n      *(uint *)&this_00->paddr_ = local_44;\n    } while ((pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish != ppPVar10);\n  }" if (parenthesized_expression "(ppPVar10 ==\n      (pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n      _M_impl._M_finish)" ( (binary_expression "ppPVar10 ==\n      (pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n      _M_impl._M_finish" identifier == (field_expression "(pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n      _M_impl._M_finish" (field_expression "(pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n      _M_impl" (parenthesized_expression "(pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>)" ( (binary_expression "pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>" (binary_expression "pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_" (binary_expression "pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold" (binary_expression "pPVar8->super__Vector_base<gold::Phdrs_element*,_std" (binary_expression "pPVar8->super__Vector_base<gold" (field_expression "pPVar8->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n    local_24 = (Output_segment *)0x0;\n  }" { (expression_statement "local_24 = (Output_segment *)0x0;" (assignment_expression "local_24 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_24 = (Output_segment *)0x0;\n    do {\n      while( true ) {\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }\n      uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {\n        this_00->min_p_align_ = dot_alignment;\n      }\n      pOVar3 = Output_segment::section_with_lowest_load_address(this_00);\n      if (pOVar3 == (Output_section *)0x0) {\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }\n      if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      local_4c = (uint)(pOVar3->super_Output_data).address_;\n      local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);\n      p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n      if (p_Var1 == Output_section::do_has_load_address) {\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }\n      else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }\n      local_44 = local_4c;\n      local_40 = local_48;\n      if (bVar2 != 0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }\n      pPVar4 = *ppPVar10;\n      if (pPVar4->load_address_ != (Expression *)0x0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }\n      if (pPVar4->includes_filehdr_ == false) {\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }\n      else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }\n      ppPVar10 = ppPVar10 + 1;\n      this_00->field_0x19c = this_00->field_0x19c | 2;\n      *(uint *)((int)&this_00->vaddr_ + 4) = local_48;\n      *(uint *)&this_00->vaddr_ = local_4c;\n      *(uint *)((int)&this_00->paddr_ + 4) = local_40;\n      pPVar8 = this->phdrs_elements_;\n      *(uint *)&this_00->paddr_ = local_44;\n    } while ((pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish != ppPVar10);\n  }" else (compound_statement "{\n    local_24 = (Output_segment *)0x0;\n    do {\n      while( true ) {\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }\n      uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {\n        this_00->min_p_align_ = dot_alignment;\n      }\n      pOVar3 = Output_segment::section_with_lowest_load_address(this_00);\n      if (pOVar3 == (Output_section *)0x0) {\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }\n      if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      local_4c = (uint)(pOVar3->super_Output_data).address_;\n      local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);\n      p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n      if (p_Var1 == Output_section::do_has_load_address) {\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }\n      else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }\n      local_44 = local_4c;\n      local_40 = local_48;\n      if (bVar2 != 0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }\n      pPVar4 = *ppPVar10;\n      if (pPVar4->load_address_ != (Expression *)0x0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }\n      if (pPVar4->includes_filehdr_ == false) {\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }\n      else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }\n      ppPVar10 = ppPVar10 + 1;\n      this_00->field_0x19c = this_00->field_0x19c | 2;\n      *(uint *)((int)&this_00->vaddr_ + 4) = local_48;\n      *(uint *)&this_00->vaddr_ = local_4c;\n      *(uint *)((int)&this_00->paddr_ + 4) = local_40;\n      pPVar8 = this->phdrs_elements_;\n      *(uint *)&this_00->paddr_ = local_44;\n    } while ((pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish != ppPVar10);\n  }" { (expression_statement "local_24 = (Output_segment *)0x0;" (assignment_expression "local_24 = (Output_segment *)0x0" identifier = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      while( true ) {\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }\n      uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {\n        this_00->min_p_align_ = dot_alignment;\n      }\n      pOVar3 = Output_segment::section_with_lowest_load_address(this_00);\n      if (pOVar3 == (Output_section *)0x0) {\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }\n      if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      local_4c = (uint)(pOVar3->super_Output_data).address_;\n      local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);\n      p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n      if (p_Var1 == Output_section::do_has_load_address) {\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }\n      else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }\n      local_44 = local_4c;\n      local_40 = local_48;\n      if (bVar2 != 0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }\n      pPVar4 = *ppPVar10;\n      if (pPVar4->load_address_ != (Expression *)0x0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }\n      if (pPVar4->includes_filehdr_ == false) {\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }\n      else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }\n      ppPVar10 = ppPVar10 + 1;\n      this_00->field_0x19c = this_00->field_0x19c | 2;\n      *(uint *)((int)&this_00->vaddr_ + 4) = local_48;\n      *(uint *)&this_00->vaddr_ = local_4c;\n      *(uint *)((int)&this_00->paddr_ + 4) = local_40;\n      pPVar8 = this->phdrs_elements_;\n      *(uint *)&this_00->paddr_ = local_44;\n    } while ((pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish != ppPVar10);" do (compound_statement "{\n      while( true ) {\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }\n      uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);\n      if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {\n        this_00->min_p_align_ = dot_alignment;\n      }\n      pOVar3 = Output_segment::section_with_lowest_load_address(this_00);\n      if (pOVar3 == (Output_section *)0x0) {\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }\n      if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      local_4c = (uint)(pOVar3->super_Output_data).address_;\n      local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);\n      p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n      if (p_Var1 == Output_section::do_has_load_address) {\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }\n      else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }\n      local_44 = local_4c;\n      local_40 = local_48;\n      if (bVar2 != 0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }\n      pPVar4 = *ppPVar10;\n      if (pPVar4->load_address_ != (Expression *)0x0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }\n      if (pPVar4->includes_filehdr_ == false) {\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }\n      else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }\n      ppPVar10 = ppPVar10 + 1;\n      this_00->field_0x19c = this_00->field_0x19c | 2;\n      *(uint *)((int)&this_00->vaddr_ + 4) = local_48;\n      *(uint *)&this_00->vaddr_ = local_4c;\n      *(uint *)((int)&this_00->paddr_ + 4) = local_40;\n      pPVar8 = this->phdrs_elements_;\n      *(uint *)&this_00->paddr_ = local_44;\n    }" { (while_statement "while( true ) {\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        local_30 = (uint)(dot_alignment >> 0x20);\n        local_34 = (uint)dot_alignment;\n        pPVar4 = *ppPVar10;\n        this_00 = pPVar4->segment_;\n        if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }\n        if (this_00->type_ == 1) break;\n        if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }\nLAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;\n        if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }\n      }" { (expression_statement "local_30 = (uint)(dot_alignment >> 0x20);" (assignment_expression "local_30 = (uint)(dot_alignment >> 0x20)" identifier = (call_expression "(uint)(dot_alignment >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(dot_alignment >> 0x20)" ( (binary_expression "dot_alignment >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_34 = (uint)dot_alignment;" (assignment_expression "local_34 = (uint)dot_alignment" identifier = (cast_expression "(uint)dot_alignment" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pPVar4 = *ppPVar10;" (assignment_expression "pPVar4 = *ppPVar10" identifier = (pointer_expression "*ppPVar10" * identifier)) ;) (expression_statement "this_00 = pPVar4->segment_;" (assignment_expression "this_00 = pPVar4->segment_" identifier = (field_expression "pPVar4->segment_" identifier -> field_identifier)) ;) (if_statement "if (pPVar4->is_flags_valid_ != false) {\n          this_00->flags_ = pPVar4->flags_;\n        }" if (parenthesized_expression "(pPVar4->is_flags_valid_ != false)" ( (binary_expression "pPVar4->is_flags_valid_ != false" (field_expression "pPVar4->is_flags_valid_" identifier -> field_identifier) != false) )) (compound_statement "{\n          this_00->flags_ = pPVar4->flags_;\n        }" { (expression_statement "this_00->flags_ = pPVar4->flags_;" (assignment_expression "this_00->flags_ = pPVar4->flags_" (field_expression "this_00->flags_" identifier -> field_identifier) = (field_expression "pPVar4->flags_" identifier -> field_identifier)) ;) })) (if_statement "if (this_00->type_ == 1) break;" if (parenthesized_expression "(this_00->type_ == 1)" ( (binary_expression "this_00->type_ == 1" (field_expression "this_00->type_" identifier -> field_identifier) == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (pPVar4->load_address_ != (Expression *)0x0) {\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }" if (parenthesized_expression "(pPVar4->load_address_ != (Expression *)0x0)" ( (binary_expression "pPVar4->load_address_ != (Expression *)0x0" (field_expression "pPVar4->load_address_" identifier -> field_identifier) != (cast_expression "(Expression *)0x0" ( (type_descriptor "Expression *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");\n          gold_error(pcVar5);\n          pPVar8 = this->phdrs_elements_;\n        }" { (expression_statement "pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment");" (assignment_expression "pcVar5 = (char *)gettext("may only specify load address for PT_LOAD segment")" identifier = (cast_expression "(char *)gettext("may only specify load address for PT_LOAD segment")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("may only specify load address for PT_LOAD segment")" identifier (argument_list "("may only specify load address for PT_LOAD segment")" ( (string_literal ""may only specify load address for PT_LOAD segment"" " string_content ") ))))) ;) (expression_statement "gold_error(pcVar5);" (call_expression "gold_error(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "pPVar8 = this->phdrs_elements_;" (assignment_expression "pPVar8 = this->phdrs_elements_" identifier = (field_expression "this->phdrs_elements_" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_0015d4da:\n        ppPVar10 = ppPVar10 + 1;" statement_identifier : (expression_statement "ppPVar10 = ppPVar10 + 1;" (assignment_expression "ppPVar10 = ppPVar10 + 1" identifier = (binary_expression "ppPVar10 + 1" identifier + number_literal)) ;)) (if_statement "if ((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10) {\n          return local_24;\n        }" if (parenthesized_expression "((pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10)" ( (binary_expression "(pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish == ppPVar10" (field_expression "(pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl._M_finish" (field_expression "(pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )._M_impl" (parenthesized_expression "(pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>\n            )" ( (binary_expression "pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>" (binary_expression "pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_" (binary_expression "pPVar8->super__Vector_base<gold::Phdrs_element*,_std::allocator<gold" (binary_expression "pPVar8->super__Vector_base<gold::Phdrs_element*,_std" (binary_expression "pPVar8->super__Vector_base<gold" (field_expression "pPVar8->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) == identifier) )) (compound_statement "{\n          return local_24;\n        }" { (return_statement "return local_24;" return identifier ;) })) })) (expression_statement "uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4);" (assignment_expression "uVar7 = *(uint *)((int)&this_00->min_p_align_ + 4)" identifier = (pointer_expression "*(uint *)((int)&this_00->min_p_align_ + 4)" * (cast_expression "(uint *)((int)&this_00->min_p_align_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->min_p_align_ + 4)" ( (binary_expression "(int)&this_00->min_p_align_ + 4" (cast_expression "(int)&this_00->min_p_align_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->min_p_align_" & (field_expression "this_00->min_p_align_" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)) {\n        this_00->min_p_align_ = dot_alignment;\n      }" if (parenthesized_expression "(uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34))" ( (binary_expression "uVar7 < local_30 || uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)" (binary_expression "uVar7 < local_30" identifier < identifier) || (binary_expression "uVar7 - local_30 < (uint)((uint)this_00->min_p_align_ < local_34)" (binary_expression "uVar7 - local_30" identifier - identifier) < (call_expression "(uint)((uint)this_00->min_p_align_ < local_34)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)this_00->min_p_align_ < local_34)" ( (binary_expression "(uint)this_00->min_p_align_ < local_34" (cast_expression "(uint)this_00->min_p_align_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this_00->min_p_align_" identifier -> field_identifier)) < identifier) ))))) )) (compound_statement "{\n        this_00->min_p_align_ = dot_alignment;\n      }" { (expression_statement "this_00->min_p_align_ = dot_alignment;" (assignment_expression "this_00->min_p_align_ = dot_alignment" (field_expression "this_00->min_p_align_" identifier -> field_identifier) = identifier) ;) })) (ERROR "pOVar3 = Output_segment::" (assignment_expression "pOVar3 = Output_segment" identifier = identifier) : :) (expression_statement "section_with_lowest_load_address(this_00);" (call_expression "section_with_lowest_load_address(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;) (if_statement "if (pOVar3 == (Output_section *)0x0) {\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }" if (parenthesized_expression "(pOVar3 == (Output_section *)0x0)" ( (binary_expression "pOVar3 == (Output_section *)0x0" identifier == (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(undefined4 *)&this_00->vaddr_ = 0;\n        pPVar8 = this->phdrs_elements_;\n        *(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;\n        *(undefined4 *)&this_00->paddr_ = 0;\n        *(undefined4 *)((int)&this_00->paddr_ + 4) = 0;\n        this_00->field_0x19c = this_00->field_0x19c | 2;\n        goto LAB_0015d4da;\n      }" { (expression_statement "*(undefined4 *)&this_00->vaddr_ = 0;" (assignment_expression "*(undefined4 *)&this_00->vaddr_ = 0" (pointer_expression "*(undefined4 *)&this_00->vaddr_" * (cast_expression "(undefined4 *)&this_00->vaddr_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_00->vaddr_" & (field_expression "this_00->vaddr_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pPVar8 = this->phdrs_elements_;" (assignment_expression "pPVar8 = this->phdrs_elements_" identifier = (field_expression "this->phdrs_elements_" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&this_00->vaddr_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this_00->vaddr_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this_00->vaddr_ + 4)" * (cast_expression "(undefined4 *)((int)&this_00->vaddr_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->vaddr_ + 4)" ( (binary_expression "(int)&this_00->vaddr_ + 4" (cast_expression "(int)&this_00->vaddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->vaddr_" & (field_expression "this_00->vaddr_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&this_00->paddr_ = 0;" (assignment_expression "*(undefined4 *)&this_00->paddr_ = 0" (pointer_expression "*(undefined4 *)&this_00->paddr_" * (cast_expression "(undefined4 *)&this_00->paddr_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_00->paddr_" & (field_expression "this_00->paddr_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this_00->paddr_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this_00->paddr_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this_00->paddr_ + 4)" * (cast_expression "(undefined4 *)((int)&this_00->paddr_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->paddr_ + 4)" ( (binary_expression "(int)&this_00->paddr_ + 4" (cast_expression "(int)&this_00->paddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->paddr_" & (field_expression "this_00->paddr_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "this_00->field_0x19c = this_00->field_0x19c | 2;" (assignment_expression "this_00->field_0x19c = this_00->field_0x19c | 2" (field_expression "this_00->field_0x19c" identifier -> field_identifier) = (binary_expression "this_00->field_0x19c | 2" (field_expression "this_00->field_0x19c" identifier -> field_identifier) | number_literal)) ;) (goto_statement "goto LAB_0015d4da;" goto statement_identifier ;) })) (if_statement "if (((pOVar3->super_Output_data).field_0x1c & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }" if (parenthesized_expression "(((pOVar3->super_Output_data).field_0x1c & 1) == 0)" ( (binary_expression "((pOVar3->super_Output_data).field_0x1c & 1) == 0" (parenthesized_expression "((pOVar3->super_Output_data).field_0x1c & 1)" ( (binary_expression "(pOVar3->super_Output_data).field_0x1c & 1" (field_expression "(pOVar3->super_Output_data).field_0x1c" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "local_4c = (uint)(pOVar3->super_Output_data).address_;" (assignment_expression "local_4c = (uint)(pOVar3->super_Output_data).address_" identifier = (field_expression "(uint)(pOVar3->super_Output_data).address_" (call_expression "(uint)(pOVar3->super_Output_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4);" (assignment_expression "local_48 = *(uint *)((int)&(pOVar3->super_Output_data).address_ + 4)" identifier = (pointer_expression "*(uint *)((int)&(pOVar3->super_Output_data).address_ + 4)" * (cast_expression "(uint *)((int)&(pOVar3->super_Output_data).address_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar3->super_Output_data).address_ + 4)" ( (binary_expression "(int)&(pOVar3->super_Output_data).address_ + 4" (cast_expression "(int)&(pOVar3->super_Output_data).address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar3->super_Output_data).address_" & (field_expression "(pOVar3->super_Output_data).address_" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];" (assignment_expression "p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4]" identifier = (subscript_expression "(pOVar3->super_Output_data)._vptr_Output_data[4]" (field_expression "(pOVar3->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var1 == Output_section::do_has_load_address) {\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }\n      else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }" if (parenthesized_expression "(p_Var1 == Output_section::do_has_load_address)" ( (binary_expression "p_Var1 == Output_section" identifier == identifier) (ERROR "::do_has_load_address" : : identifier) )) (compound_statement "{\n        bVar2 = (byte)pOVar3->field_0x90 >> 7;\n      }" { (expression_statement "bVar2 = (byte)pOVar3->field_0x90 >> 7;" (assignment_expression "bVar2 = (byte)pOVar3->field_0x90 >> 7" identifier = (binary_expression "(byte)pOVar3->field_0x90 >> 7" (cast_expression "(byte)pOVar3->field_0x90" ( (type_descriptor "byte" type_identifier) ) (field_expression "pOVar3->field_0x90" identifier -> field_identifier)) >> number_literal)) ;) }) (else_clause "else {\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }" else (compound_statement "{\n        iVar6 = (*p_Var1)(pOVar3);\n        bVar2 = (byte)iVar6;\n      }" { (expression_statement "iVar6 = (*p_Var1)(pOVar3);" (assignment_expression "iVar6 = (*p_Var1)(pOVar3)" identifier = (call_expression "(*p_Var1)(pOVar3)" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "(pOVar3)" ( identifier )))) ;) (expression_statement "bVar2 = (byte)iVar6;" (assignment_expression "bVar2 = (byte)iVar6" identifier = (cast_expression "(byte)iVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "local_44 = local_4c;" (assignment_expression "local_44 = local_4c" identifier = identifier) ;) (expression_statement "local_40 = local_48;" (assignment_expression "local_40 = local_48" identifier = identifier) ;) (if_statement "if (bVar2 != 0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];\n        if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }\n      }" { (expression_statement "p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5];" (assignment_expression "p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[5]" identifier = (subscript_expression "(pOVar3->super_Output_data)._vptr_Output_data[5]" (field_expression "(pOVar3->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var1 == Output_section::do_load_address) {\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }\n        else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }" if (parenthesized_expression "(p_Var1 == Output_section::do_load_address)" ( (binary_expression "p_Var1 == Output_section" identifier == identifier) (ERROR "::do_load_address" : : identifier) )) (compound_statement "{\n          if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }\n          local_44 = (uint)pOVar3->load_address_;\n          local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);\n        }" { (if_statement "if (-1 < (char)pOVar3->field_0x90) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }" if (parenthesized_expression "(-1 < (char)pOVar3->field_0x90)" ( (binary_expression "-1 < (char)pOVar3->field_0x90" number_literal < (cast_expression "(char)pOVar3->field_0x90" ( (type_descriptor "char" primitive_type) ) (field_expression "pOVar3->field_0x90" identifier -> field_identifier))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");\n          }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address");" (call_expression "do_gold_unreachable("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "local_44 = (uint)pOVar3->load_address_;" (assignment_expression "local_44 = (uint)pOVar3->load_address_" identifier = (cast_expression "(uint)pOVar3->load_address_" ( (type_descriptor "uint" type_identifier) ) (field_expression "pOVar3->load_address_" identifier -> field_identifier))) ;) (expression_statement "local_40 = *(uint *)((int)&pOVar3->load_address_ + 4);" (assignment_expression "local_40 = *(uint *)((int)&pOVar3->load_address_ + 4)" identifier = (pointer_expression "*(uint *)((int)&pOVar3->load_address_ + 4)" * (cast_expression "(uint *)((int)&pOVar3->load_address_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pOVar3->load_address_ + 4)" ( (binary_expression "(int)&pOVar3->load_address_ + 4" (cast_expression "(int)&pOVar3->load_address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar3->load_address_" & (field_expression "pOVar3->load_address_" identifier -> field_identifier))) + number_literal) ))))) ;) }) (else_clause "else {\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }" else (compound_statement "{\n          local_44 = (*p_Var1)(pOVar3);\n          local_40 = extraout_EDX;\n        }" { (expression_statement "local_44 = (*p_Var1)(pOVar3);" (assignment_expression "local_44 = (*p_Var1)(pOVar3)" identifier = (call_expression "(*p_Var1)(pOVar3)" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "(pOVar3)" ( identifier )))) ;) (expression_statement "local_40 = extraout_EDX;" (assignment_expression "local_40 = extraout_EDX" identifier = identifier) ;) }))) })) (expression_statement "pPVar4 = *ppPVar10;" (assignment_expression "pPVar4 = *ppPVar10" identifier = (pointer_expression "*ppPVar10" * identifier)) ;) (if_statement "if (pPVar4->load_address_ != (Expression *)0x0) {\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }" if (parenthesized_expression "(pPVar4->load_address_ != (Expression *)0x0)" ( (binary_expression "pPVar4->load_address_ != (Expression *)0x0" (field_expression "pPVar4->load_address_" identifier -> field_identifier) != (cast_expression "(Expression *)0x0" ( (type_descriptor "Expression *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];\n        if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }\n        if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }\n        pPVar4 = *ppPVar10;\n        if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        local_44 = (uint)pPVar4->load_address_value_;\n        local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);\n      }" { (expression_statement "p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4];" (assignment_expression "p_Var1 = (pOVar3->super_Output_data)._vptr_Output_data[4]" identifier = (subscript_expression "(pOVar3->super_Output_data)._vptr_Output_data[4]" (field_expression "(pOVar3->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var1 == Output_section::do_has_load_address) {\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }\n        else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }" if (parenthesized_expression "(p_Var1 == Output_section::do_has_load_address)" ( (binary_expression "p_Var1 == Output_section" identifier == identifier) (ERROR "::do_has_load_address" : : identifier) )) (compound_statement "{\n          bVar2 = (byte)pOVar3->field_0x90 >> 7;\n        }" { (expression_statement "bVar2 = (byte)pOVar3->field_0x90 >> 7;" (assignment_expression "bVar2 = (byte)pOVar3->field_0x90 >> 7" identifier = (binary_expression "(byte)pOVar3->field_0x90 >> 7" (cast_expression "(byte)pOVar3->field_0x90" ( (type_descriptor "byte" type_identifier) ) (field_expression "pOVar3->field_0x90" identifier -> field_identifier)) >> number_literal)) ;) }) (else_clause "else {\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }" else (compound_statement "{\n          iVar6 = (*p_Var1)(pOVar3);\n          bVar2 = (byte)iVar6;\n        }" { (expression_statement "iVar6 = (*p_Var1)(pOVar3);" (assignment_expression "iVar6 = (*p_Var1)(pOVar3)" identifier = (call_expression "(*p_Var1)(pOVar3)" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "(pOVar3)" ( identifier )))) ;) (expression_statement "bVar2 = (byte)iVar6;" (assignment_expression "bVar2 = (byte)iVar6" identifier = (cast_expression "(byte)iVar6" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (if_statement "if (bVar2 != 0) {\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          pcVar5 = pOVar3->name_;\n          format = (char *)gettext("PHDRS load address overrides section %s load address");\n          gold_warning(format,pcVar5);\n        }" { (expression_statement "pcVar5 = pOVar3->name_;" (assignment_expression "pcVar5 = pOVar3->name_" identifier = (field_expression "pOVar3->name_" identifier -> field_identifier)) ;) (expression_statement "format = (char *)gettext("PHDRS load address overrides section %s load address");" (assignment_expression "format = (char *)gettext("PHDRS load address overrides section %s load address")" identifier = (cast_expression "(char *)gettext("PHDRS load address overrides section %s load address")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("PHDRS load address overrides section %s load address")" identifier (argument_list "("PHDRS load address overrides section %s load address")" ( (string_literal ""PHDRS load address overrides section %s load address"" " string_content ") ))))) ;) (expression_statement "gold_warning(format,pcVar5);" (call_expression "gold_warning(format,pcVar5)" identifier (argument_list "(format,pcVar5)" ( identifier , identifier ))) ;) })) (expression_statement "pPVar4 = *ppPVar10;" (assignment_expression "pPVar4 = *ppPVar10" identifier = (pointer_expression "*ppPVar10" * identifier)) ;) (if_statement "if (pPVar4->load_address_ == (Expression *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }" if (parenthesized_expression "(pPVar4->load_address_ == (Expression *)0x0)" ( (binary_expression "pPVar4->load_address_ == (Expression *)0x0" (field_expression "pPVar4->load_address_" identifier -> field_identifier) == (cast_expression "(Expression *)0x0" ( (type_descriptor "Expression *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address");" (call_expression "do_gold_unreachable("../../gold/script-sections.cc",0xc6b,"load_address")" identifier (argument_list "("../../gold/script-sections.cc",0xc6b,"load_address")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""load_address"" " string_content ") ))) ;) })) (expression_statement "local_44 = (uint)pPVar4->load_address_value_;" (assignment_expression "local_44 = (uint)pPVar4->load_address_value_" identifier = (cast_expression "(uint)pPVar4->load_address_value_" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPVar4->load_address_value_" identifier -> field_identifier))) ;) (expression_statement "local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4);" (assignment_expression "local_40 = *(uint *)((int)&pPVar4->load_address_value_ + 4)" identifier = (pointer_expression "*(uint *)((int)&pPVar4->load_address_value_ + 4)" * (cast_expression "(uint *)((int)&pPVar4->load_address_value_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar4->load_address_value_ + 4)" ( (binary_expression "(int)&pPVar4->load_address_value_ + 4" (cast_expression "(int)&pPVar4->load_address_value_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar4->load_address_value_" & (field_expression "pPVar4->load_address_value_" identifier -> field_identifier))) + number_literal) ))))) ;) })) (if_statement "if (pPVar4->includes_filehdr_ == false) {\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }\n      else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }" if (parenthesized_expression "(pPVar4->includes_filehdr_ == false)" ( (binary_expression "pPVar4->includes_filehdr_ == false" (field_expression "pPVar4->includes_filehdr_" identifier -> field_identifier) == false) )) (compound_statement "{\n        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;\n      }" { (if_statement "if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;" if (parenthesized_expression "(pPVar4->includes_phdrs_ != false)" ( (binary_expression "pPVar4->includes_phdrs_ != false" (field_expression "pPVar4->includes_phdrs_" identifier -> field_identifier) != false) )) (goto_statement "goto LAB_0015d714;" goto statement_identifier ;)) }) (else_clause "else if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }" else (if_statement "if (pPVar4->includes_phdrs_ == false) {\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }\n      else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }" if (parenthesized_expression "(pPVar4->includes_phdrs_ == false)" ( (binary_expression "pPVar4->includes_phdrs_ == false" (field_expression "pPVar4->includes_phdrs_" identifier -> field_identifier) == false) )) (compound_statement "{\nLAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        gold_error(pcVar5);\n      }" { (labeled_statement "LAB_0015d714:\n        pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");" statement_identifier : (expression_statement "pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported");" (assignment_expression "pcVar5 = (char *)gettext("using only one of FILEHDR and PHDRS is not currently supported")" identifier = (cast_expression "(char *)gettext("using only one of FILEHDR and PHDRS is not currently supported")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("using only one of FILEHDR and PHDRS is not currently supported")" identifier (argument_list "("using only one of FILEHDR and PHDRS is not currently supported")" ( (string_literal ""using only one of FILEHDR and PHDRS is not currently supported"" " string_content ") ))))) ;)) (expression_statement "gold_error(pcVar5);" (call_expression "gold_error(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) }) (else_clause "else {\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }" else (compound_statement "{\n        sizeof_headers = total_header_size(this,layout);\n        uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);\n        bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);\n        uVar7 = local_40;\n        if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }\n        local_28 = (uint)(uVar12 >> 0x20);\n        uVar9 = local_44;\n        if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }\n        local_2c = (uint)uVar12;\n        if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }\n        bVar11 = local_24 != (Output_segment *)0x0;\n        local_24 = this_00;\n        if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }\n      }" { (expression_statement "sizeof_headers = total_header_size(this,layout);" (assignment_expression "sizeof_headers = total_header_size(this,layout)" identifier = (call_expression "total_header_size(this,layout)" identifier (argument_list "(this,layout)" ( identifier , identifier )))) ;) (expression_statement "uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers);" (assignment_expression "uVar12 = header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers)" identifier = (call_expression "header_size_adjustment(this,CONCAT44(local_40,local_44),sizeof_headers)" identifier (argument_list "(this,CONCAT44(local_40,local_44),sizeof_headers)" ( identifier , (call_expression "CONCAT44(local_40,local_44)" identifier (argument_list "(local_40,local_44)" ( identifier , identifier ))) , identifier )))) ;) (expression_statement "bVar11 = local_48 - local_40 < (uint)(local_4c < local_44);" (assignment_expression "bVar11 = local_48 - local_40 < (uint)(local_4c < local_44)" identifier = (binary_expression "local_48 - local_40 < (uint)(local_4c < local_44)" (binary_expression "local_48 - local_40" identifier - identifier) < (call_expression "(uint)(local_4c < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_4c < local_44)" ( (binary_expression "local_4c < local_44" identifier < identifier) ))))) ;) (expression_statement "uVar7 = local_40;" (assignment_expression "uVar7 = local_40" identifier = identifier) ;) (if_statement "if (local_48 < local_40 || bVar11) {\n          uVar7 = local_48;\n        }" if (parenthesized_expression "(local_48 < local_40 || bVar11)" ( (binary_expression "local_48 < local_40 || bVar11" (binary_expression "local_48 < local_40" identifier < identifier) || identifier) )) (compound_statement "{\n          uVar7 = local_48;\n        }" { (expression_statement "uVar7 = local_48;" (assignment_expression "uVar7 = local_48" identifier = identifier) ;) })) (expression_statement "local_28 = (uint)(uVar12 >> 0x20);" (assignment_expression "local_28 = (uint)(uVar12 >> 0x20)" identifier = (call_expression "(uint)(uVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 >> 0x20)" ( (binary_expression "uVar12 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" identifier = identifier) ;) (if_statement "if (local_48 < local_40 || bVar11) {\n          uVar9 = local_4c;\n        }" if (parenthesized_expression "(local_48 < local_40 || bVar11)" ( (binary_expression "local_48 < local_40 || bVar11" (binary_expression "local_48 < local_40" identifier < identifier) || identifier) )) (compound_statement "{\n          uVar9 = local_4c;\n        }" { (expression_statement "uVar9 = local_4c;" (assignment_expression "uVar9 = local_4c" identifier = identifier) ;) })) (expression_statement "local_2c = (uint)uVar12;" (assignment_expression "local_2c = (uint)uVar12" identifier = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)) {\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }\n        else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }" if (parenthesized_expression "(uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c))" ( (binary_expression "uVar7 < local_28 || uVar7 - local_28 < (uint)(uVar9 < local_2c)" (binary_expression "uVar7 < local_28" identifier < identifier) || (binary_expression "uVar7 - local_28 < (uint)(uVar9 < local_2c)" (binary_expression "uVar7 - local_28" identifier - identifier) < (call_expression "(uint)(uVar9 < local_2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < local_2c)" ( (binary_expression "uVar9 < local_2c" identifier < identifier) ))))) )) (compound_statement "{\n          pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );\n          gold_error(pcVar5);\n        }" { (expression_statement "pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  );" (assignment_expression "pcVar5 = (char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  )" identifier = (cast_expression "(char *)gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  )" identifier (argument_list "(\n                                  "sections loaded on first page without room for file and program headers are not supported"\n                                  )" ( (string_literal ""sections loaded on first page without room for file and program headers are not supported"" " string_content ") ))))) ;) (expression_statement "gold_error(pcVar5);" (call_expression "gold_error(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) }) (else_clause "else {\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }" else (compound_statement "{\n          bVar11 = local_44 < local_2c;\n          local_44 = local_44 - local_2c;\n          local_40 = (local_40 - local_28) - (uint)bVar11;\n          bVar11 = local_4c < local_2c;\n          local_4c = local_4c - local_2c;\n          local_48 = (local_48 - local_28) - (uint)bVar11;\n        }" { (expression_statement "bVar11 = local_44 < local_2c;" (assignment_expression "bVar11 = local_44 < local_2c" identifier = (binary_expression "local_44 < local_2c" identifier < identifier)) ;) (expression_statement "local_44 = local_44 - local_2c;" (assignment_expression "local_44 = local_44 - local_2c" identifier = (binary_expression "local_44 - local_2c" identifier - identifier)) ;) (expression_statement "local_40 = (local_40 - local_28) - (uint)bVar11;" (assignment_expression "local_40 = (local_40 - local_28) - (uint)bVar11" identifier = (binary_expression "(local_40 - local_28) - (uint)bVar11" (parenthesized_expression "(local_40 - local_28)" ( (binary_expression "local_40 - local_28" identifier - identifier) )) - (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "bVar11 = local_4c < local_2c;" (assignment_expression "bVar11 = local_4c < local_2c" identifier = (binary_expression "local_4c < local_2c" identifier < identifier)) ;) (expression_statement "local_4c = local_4c - local_2c;" (assignment_expression "local_4c = local_4c - local_2c" identifier = (binary_expression "local_4c - local_2c" identifier - identifier)) ;) (expression_statement "local_48 = (local_48 - local_28) - (uint)bVar11;" (assignment_expression "local_48 = (local_48 - local_28) - (uint)bVar11" identifier = (binary_expression "(local_48 - local_28) - (uint)bVar11" (parenthesized_expression "(local_48 - local_28)" ( (binary_expression "local_48 - local_28" identifier - identifier) )) - (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "bVar11 = local_24 != (Output_segment *)0x0;" (assignment_expression "bVar11 = local_24 != (Output_segment *)0x0" identifier = (binary_expression "local_24 != (Output_segment *)0x0" identifier != (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "local_24 = this_00;" (assignment_expression "local_24 = this_00" identifier = identifier) ;) (if_statement "if (bVar11) {\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n          pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );\n          gold_error(pcVar5);\n        }" { (expression_statement "pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  );" (assignment_expression "pcVar5 = (char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  )" identifier = (cast_expression "(char *)gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  )" identifier (argument_list "(\n                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                                  )" ( (string_literal ""using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"" " string_content ") ))))) ;) (expression_statement "gold_error(pcVar5);" (call_expression "gold_error(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) })) }))))) (expression_statement "ppPVar10 = ppPVar10 + 1;" (assignment_expression "ppPVar10 = ppPVar10 + 1" identifier = (binary_expression "ppPVar10 + 1" identifier + number_literal)) ;) (expression_statement "this_00->field_0x19c = this_00->field_0x19c | 2;" (assignment_expression "this_00->field_0x19c = this_00->field_0x19c | 2" (field_expression "this_00->field_0x19c" identifier -> field_identifier) = (binary_expression "this_00->field_0x19c | 2" (field_expression "this_00->field_0x19c" identifier -> field_identifier) | number_literal)) ;) (expression_statement "*(uint *)((int)&this_00->vaddr_ + 4) = local_48;" (assignment_expression "*(uint *)((int)&this_00->vaddr_ + 4) = local_48" (pointer_expression "*(uint *)((int)&this_00->vaddr_ + 4)" * (cast_expression "(uint *)((int)&this_00->vaddr_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->vaddr_ + 4)" ( (binary_expression "(int)&this_00->vaddr_ + 4" (cast_expression "(int)&this_00->vaddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->vaddr_" & (field_expression "this_00->vaddr_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)&this_00->vaddr_ = local_4c;" (assignment_expression "*(uint *)&this_00->vaddr_ = local_4c" (pointer_expression "*(uint *)&this_00->vaddr_" * (cast_expression "(uint *)&this_00->vaddr_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_00->vaddr_" & (field_expression "this_00->vaddr_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(uint *)((int)&this_00->paddr_ + 4) = local_40;" (assignment_expression "*(uint *)((int)&this_00->paddr_ + 4) = local_40" (pointer_expression "*(uint *)((int)&this_00->paddr_ + 4)" * (cast_expression "(uint *)((int)&this_00->paddr_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this_00->paddr_ + 4)" ( (binary_expression "(int)&this_00->paddr_ + 4" (cast_expression "(int)&this_00->paddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this_00->paddr_" & (field_expression "this_00->paddr_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "pPVar8 = this->phdrs_elements_;" (assignment_expression "pPVar8 = this->phdrs_elements_" identifier = (field_expression "this->phdrs_elements_" identifier -> field_identifier)) ;) (expression_statement "*(uint *)&this_00->paddr_ = local_44;" (assignment_expression "*(uint *)&this_00->paddr_ = local_44" (pointer_expression "*(uint *)&this_00->paddr_" * (cast_expression "(uint *)&this_00->paddr_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_00->paddr_" & (field_expression "this_00->paddr_" identifier -> field_identifier)))) = identifier) ;) }) while (parenthesized_expression "((pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish != ppPVar10)" ( (binary_expression "(pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish != ppPVar10" (field_expression "(pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl._M_finish" (field_expression "(pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n             _M_impl" (parenthesized_expression "(pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>)" ( (binary_expression "pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>" (binary_expression "pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_" (binary_expression "pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std::allocator<gold" (binary_expression "pPVar8->\n             super__Vector_base<gold::Phdrs_element*,_std" (binary_expression "pPVar8->\n             super__Vector_base<gold" (field_expression "pPVar8->\n             super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) != identifier) )) ;) }))) (return_statement "return local_24;" return identifier ;) }))
(translation_unit "int FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  longlong lVar4;\n  longlong lVar5;\n  byte bVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  bool bVar13;\n  longlong lVar14;\n  longlong lVar15;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  int local_24;\n  \n  piVar7 = *(int **)(param_1 + 0x10);\n  piVar12 = (int *)*piVar7;\n  if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }\n  return local_24;\n}\n\n" (function_definition "int FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  longlong lVar4;\n  longlong lVar5;\n  byte bVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  bool bVar13;\n  longlong lVar14;\n  longlong lVar15;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  int local_24;\n  \n  piVar7 = *(int **)(param_1 + 0x10);\n  piVar12 = (int *)*piVar7;\n  if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }\n  return local_24;\n}" primitive_type (function_declarator "FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,uint param_3,uint param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  longlong lVar4;\n  longlong lVar5;\n  byte bVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  bool bVar13;\n  longlong lVar14;\n  longlong lVar15;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  int local_24;\n  \n  piVar7 = *(int **)(param_1 + 0x10);\n  piVar12 = (int *)*piVar7;\n  if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }\n  return local_24;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "longlong lVar4;" type_identifier identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "longlong lVar14;" type_identifier identifier ;) (declaration "longlong lVar15;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar12 = (int *)*piVar7;" (assignment_expression "piVar12 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (if_statement "if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" if (parenthesized_expression "(piVar12 == (int *)piVar7[1])" ( (binary_expression "piVar12 == (int *)piVar7[1]" identifier == (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    local_24 = 0;\n  }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" else (compound_statement "{\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);" do (compound_statement "{\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    }" { (while_statement "while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }" { (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "iVar2 = *(int *)(iVar8 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x30)" identifier = (pointer_expression "*(int *)(iVar8 + 0x30)" * (cast_expression "(int *)(iVar8 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30)" ( (binary_expression "iVar8 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }" if (parenthesized_expression "(*(char *)(iVar8 + 0x1e) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x1e) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x1e)" * (cast_expression "(char *)(iVar8 + 0x1e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1e)" ( (binary_expression "iVar8 + 0x1e" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }" { (expression_statement "*(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);" (assignment_expression "*(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20)" (pointer_expression "*(undefined4 *)(iVar2 + 0x198)" * (cast_expression "(undefined4 *)(iVar2 + 0x198)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x198)" ( (binary_expression "iVar2 + 0x198" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" * (cast_expression "(undefined4 *)(iVar8 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(iVar2 + 0x194) == 1) break;" if (parenthesized_expression "(*(int *)(iVar2 + 0x194) == 1)" ( (binary_expression "*(int *)(iVar2 + 0x194) == 1" (pointer_expression "*(int *)(iVar2 + 0x194)" * (cast_expression "(int *)(iVar2 + 0x194)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x194)" ( (binary_expression "iVar2 + 0x194" identifier + number_literal) )))) == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }" if (parenthesized_expression "(*(int *)(iVar8 + 0x24) != 0)" ( (binary_expression "*(int *)(iVar8 + 0x24) != 0" (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }" { (expression_statement "uVar9 = gettext("may only specify load address for PT_LOAD segment");" (assignment_expression "uVar9 = gettext("may only specify load address for PT_LOAD segment")" identifier = (call_expression "gettext("may only specify load address for PT_LOAD segment")" identifier (argument_list "("may only specify load address for PT_LOAD segment")" ( (string_literal ""may only specify load address for PT_LOAD segment"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_0015d4da:\n        piVar12 = piVar12 + 1;" statement_identifier : (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;)) (if_statement "if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }" if (parenthesized_expression "((int *)piVar7[1] == piVar12)" ( (binary_expression "(int *)piVar7[1] == piVar12" (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n          return local_24;\n        }" { (return_statement "return local_24;" return identifier ;) })) })) (if_statement "if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }" if (parenthesized_expression "(*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3))" ( (binary_expression "*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (binary_expression "*(uint *)(iVar2 + 0x180) < param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" * (cast_expression "(uint *)(iVar2 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x180)" ( (binary_expression "iVar2 + 0x180" identifier + number_literal) )))) < identifier) || (binary_expression "*(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (binary_expression "*(uint *)(iVar2 + 0x180) - param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" * (cast_expression "(uint *)(iVar2 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x180)" ( (binary_expression "iVar2 + 0x180" identifier + number_literal) )))) - identifier) < (call_expression "(uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar2 + 0x17c) < param_3)" ( (binary_expression "*(uint *)(iVar2 + 0x17c) < param_3" (pointer_expression "*(uint *)(iVar2 + 0x17c)" * (cast_expression "(uint *)(iVar2 + 0x17c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x17c)" ( (binary_expression "iVar2 + 0x17c" identifier + number_literal) )))) < identifier) ))))) )) (compound_statement "{\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }" { (expression_statement "*(uint *)(iVar2 + 0x17c) = param_3;" (assignment_expression "*(uint *)(iVar2 + 0x17c) = param_3" (pointer_expression "*(uint *)(iVar2 + 0x17c)" * (cast_expression "(uint *)(iVar2 + 0x17c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x17c)" ( (binary_expression "iVar2 + 0x17c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar2 + 0x180) = param_4;" (assignment_expression "*(uint *)(iVar2 + 0x180) = param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" * (cast_expression "(uint *)(iVar2 + 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x180)" ( (binary_expression "iVar2 + 0x180" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar7 = (int *)FUN_000f1580(iVar2);" (assignment_expression "piVar7 = (int *)FUN_000f1580(iVar2)" identifier = (cast_expression "(int *)FUN_000f1580(iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000f1580(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))))) ;) (if_statement "if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }" { (expression_statement "*(undefined4 *)(iVar2 + 0x15c) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x15c) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x15c)" * (cast_expression "(undefined4 *)(iVar2 + 0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x15c)" ( (binary_expression "iVar2 + 0x15c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x160) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x160) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x160)" * (cast_expression "(undefined4 *)(iVar2 + 0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x160)" ( (binary_expression "iVar2 + 0x160" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x164) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x164) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x164)" * (cast_expression "(undefined4 *)(iVar2 + 0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x164)" ( (binary_expression "iVar2 + 0x164" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x168) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x168) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x168)" * (cast_expression "(undefined4 *)(iVar2 + 0x168)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x168)" ( (binary_expression "iVar2 + 0x168" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" * (cast_expression "(byte *)(iVar2 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x19c)" ( (binary_expression "iVar2 + 0x19c" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" * (cast_expression "(byte *)(iVar2 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x19c)" ( (binary_expression "iVar2 + 0x19c" identifier + number_literal) )))) | number_literal)) ;) (goto_statement "goto LAB_0015d4da;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }" if (parenthesized_expression "((*(byte *)(piVar7 + 7) & 1) == 0)" ( (binary_expression "(*(byte *)(piVar7 + 7) & 1) == 0" (parenthesized_expression "(*(byte *)(piVar7 + 7) & 1)" ( (binary_expression "*(byte *)(piVar7 + 7) & 1" (pointer_expression "*(byte *)(piVar7 + 7)" * (cast_expression "(byte *)(piVar7 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 7)" ( (binary_expression "piVar7 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }" { (expression_statement "FUN_00069d00("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00069d00("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "puVar1 = (uint *)(piVar7 + 1);" (assignment_expression "puVar1 = (uint *)(piVar7 + 1)" identifier = (cast_expression "(uint *)(piVar7 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 1)" ( (binary_expression "piVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "local_4c = *puVar1;" (assignment_expression "local_4c = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "local_48 = piVar7[2];" (assignment_expression "local_48 = piVar7[2]" identifier = (subscript_expression "piVar7[2]" identifier [ number_literal ])) ;) (expression_statement "lVar5 = *(longlong *)puVar1;" (assignment_expression "lVar5 = *(longlong *)puVar1" identifier = (pointer_expression "*(longlong *)puVar1" * (cast_expression "(longlong *)puVar1" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "lVar15 = *(longlong *)puVar1;" (assignment_expression "lVar15 = *(longlong *)puVar1" identifier = (pointer_expression "*(longlong *)puVar1" * (cast_expression "(longlong *)puVar1" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" if (parenthesized_expression "(*(code **)(*piVar7 + 0x10) == FUN_000a4930)" ( (binary_expression "*(code **)(*piVar7 + 0x10) == FUN_000a4930" (pointer_expression "*(code **)(*piVar7 + 0x10)" * (cast_expression "(code **)(*piVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x10)" ( (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }" { (expression_statement "bVar6 = *(byte *)(piVar7 + 0x24) >> 7;" (assignment_expression "bVar6 = *(byte *)(piVar7 + 0x24) >> 7" identifier = (binary_expression "*(byte *)(piVar7 + 0x24) >> 7" (pointer_expression "*(byte *)(piVar7 + 0x24)" * (cast_expression "(byte *)(piVar7 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 0x24)" ( (binary_expression "piVar7 + 0x24" identifier + number_literal) )))) >> number_literal)) ;) }) (else_clause "else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" else (compound_statement "{\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" { (expression_statement "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);" (assignment_expression "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7)" identifier = (call_expression "(**(code **)(*piVar7 + 0x10))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x10))" ( (pointer_expression "**(code **)(*piVar7 + 0x10)" * (pointer_expression "*(code **)(*piVar7 + 0x10)" * (cast_expression "(code **)(*piVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x10)" ( (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "(piVar7)" ( identifier )))) ;) }))) (if_statement "if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }" { (if_statement "if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" if (parenthesized_expression "(*(code **)(*piVar7 + 0x14) == FUN_000a4bf0)" ( (binary_expression "*(code **)(*piVar7 + 0x14) == FUN_000a4bf0" (pointer_expression "*(code **)(*piVar7 + 0x14)" * (cast_expression "(code **)(*piVar7 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x14)" ( (binary_expression "*piVar7 + 0x14" (pointer_expression "*piVar7" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }" { (if_statement "if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }" if (parenthesized_expression "(-1 < (char)piVar7[0x24])" ( (binary_expression "-1 < (char)piVar7[0x24]" number_literal < (cast_expression "(char)piVar7[0x24]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar7[0x24]" identifier [ number_literal ]))) )) (compound_statement "{\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }" { (expression_statement "FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_00069d00("../../gold/output.h",0x107b,"do_load_address")" identifier (argument_list "("../../gold/output.h",0x107b,"do_load_address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""do_load_address"" " string_content ") ))) ;) })) (expression_statement "lVar15 = *(longlong *)(piVar7 + 0xd);" (assignment_expression "lVar15 = *(longlong *)(piVar7 + 0xd)" identifier = (pointer_expression "*(longlong *)(piVar7 + 0xd)" * (cast_expression "(longlong *)(piVar7 + 0xd)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 0xd)" ( (binary_expression "piVar7 + 0xd" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" else (compound_statement "{\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" { (expression_statement "lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);" (assignment_expression "lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7)" identifier = (call_expression "(**(code **)(*piVar7 + 0x14))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x14))" ( (pointer_expression "**(code **)(*piVar7 + 0x14)" * (pointer_expression "*(code **)(*piVar7 + 0x14)" * (cast_expression "(code **)(*piVar7 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x14)" ( (binary_expression "*piVar7 + 0x14" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "(piVar7)" ( identifier )))) ;) }))) })) (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (if_statement "if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }" if (parenthesized_expression "(*(int *)(iVar8 + 0x24) != 0)" ( (binary_expression "*(int *)(iVar8 + 0x24) != 0" (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }" { (if_statement "if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" if (parenthesized_expression "(*(code **)(*piVar7 + 0x10) == FUN_000a4930)" ( (binary_expression "*(code **)(*piVar7 + 0x10) == FUN_000a4930" (pointer_expression "*(code **)(*piVar7 + 0x10)" * (cast_expression "(code **)(*piVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x10)" ( (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }" { (expression_statement "bVar6 = *(byte *)(piVar7 + 0x24) >> 7;" (assignment_expression "bVar6 = *(byte *)(piVar7 + 0x24) >> 7" identifier = (binary_expression "*(byte *)(piVar7 + 0x24) >> 7" (pointer_expression "*(byte *)(piVar7 + 0x24)" * (cast_expression "(byte *)(piVar7 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 0x24)" ( (binary_expression "piVar7 + 0x24" identifier + number_literal) )))) >> number_literal)) ;) }) (else_clause "else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" else (compound_statement "{\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" { (expression_statement "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);" (assignment_expression "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7)" identifier = (call_expression "(**(code **)(*piVar7 + 0x10))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x10))" ( (pointer_expression "**(code **)(*piVar7 + 0x10)" * (pointer_expression "*(code **)(*piVar7 + 0x10)" * (cast_expression "(code **)(*piVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x10)" ( (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "(piVar7)" ( identifier )))) ;) }))) (if_statement "if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }" if (parenthesized_expression "(bVar6 != 0)" ( (binary_expression "bVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }" { (expression_statement "iVar8 = piVar7[8];" (assignment_expression "iVar8 = piVar7[8]" identifier = (subscript_expression "piVar7[8]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = gettext("PHDRS load address overrides section %s load address");" (assignment_expression "uVar9 = gettext("PHDRS load address overrides section %s load address")" identifier = (call_expression "gettext("PHDRS load address overrides section %s load address")" identifier (argument_list "("PHDRS load address overrides section %s load address")" ( (string_literal ""PHDRS load address overrides section %s load address"" " string_content ") )))) ;) (expression_statement "FUN_000654e0(uVar9,iVar8);" (call_expression "FUN_000654e0(uVar9,iVar8)" identifier (argument_list "(uVar9,iVar8)" ( identifier , identifier ))) ;) })) (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (if_statement "if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }" if (parenthesized_expression "(*(int *)(iVar8 + 0x24) == 0)" ( (binary_expression "*(int *)(iVar8 + 0x24) == 0" (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }" { (expression_statement "FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");" (call_expression "FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address")" identifier (argument_list "("../../gold/script-sections.cc",0xc6b,"load_address")" ( (string_literal ""../../gold/script-sections.cc"" " string_content ") , number_literal , (string_literal ""load_address"" " string_content ") ))) ;) })) (expression_statement "lVar15 = *(longlong *)(iVar8 + 0x28);" (assignment_expression "lVar15 = *(longlong *)(iVar8 + 0x28)" identifier = (pointer_expression "*(longlong *)(iVar8 + 0x28)" * (cast_expression "(longlong *)(iVar8 + 0x28)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) ))))) ;) })) (expression_statement "local_40 = (uint)((ulonglong)lVar15 >> 0x20);" (assignment_expression "local_40 = (uint)((ulonglong)lVar15 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar15 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_44 = (uint)lVar15;" (assignment_expression "local_44 = (uint)lVar15" identifier = (cast_expression "(uint)lVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" if (parenthesized_expression "(*(char *)(iVar8 + 0x1c) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0x1c) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x1c)" * (cast_expression "(char *)(iVar8 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }" { (if_statement "if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;" if (parenthesized_expression "(*(char *)(iVar8 + 0x1d) != '\0')" ( (binary_expression "*(char *)(iVar8 + 0x1d) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x1d)" * (cast_expression "(char *)(iVar8 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1d)" ( (binary_expression "iVar8 + 0x1d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0015d714;" goto statement_identifier ;)) }) (else_clause "else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" else (if_statement "if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" if (parenthesized_expression "(*(char *)(iVar8 + 0x1d) == '\0')" ( (binary_expression "*(char *)(iVar8 + 0x1d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x1d)" * (cast_expression "(char *)(iVar8 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1d)" ( (binary_expression "iVar8 + 0x1d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }" { (labeled_statement "LAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");" statement_identifier : (expression_statement "uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");" (assignment_expression "uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported")" identifier = (call_expression "gettext("using only one of FILEHDR and PHDRS is not currently supported")" identifier (argument_list "("using only one of FILEHDR and PHDRS is not currently supported")" ( (string_literal ""using only one of FILEHDR and PHDRS is not currently supported"" " string_content ") )))) ;)) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) }) (else_clause "else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" else (compound_statement "{\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" { (expression_statement "uVar9 = FUN_0015ce10(param_1,param_2);" (assignment_expression "uVar9 = FUN_0015ce10(param_1,param_2)" identifier = (call_expression "FUN_0015ce10(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (expression_statement "lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);" (assignment_expression "lVar14 = FUN_0015cea0(param_1,lVar15,uVar9)" identifier = (call_expression "FUN_0015cea0(param_1,lVar15,uVar9)" identifier (argument_list "(param_1,lVar15,uVar9)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar11 = (uint)((ulonglong)lVar14 >> 0x20);" (assignment_expression "uVar11 = (uint)((ulonglong)lVar14 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar14 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar14 >> 0x20)" ( (binary_expression "(ulonglong)lVar14 >> 0x20" (cast_expression "(ulonglong)lVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = (uint)lVar14;" (assignment_expression "uVar10 = (uint)lVar14" identifier = (cast_expression "(uint)lVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "lVar4 = lVar15;" (assignment_expression "lVar4 = lVar15" identifier = identifier) ;) (if_statement "if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }" if (parenthesized_expression "(local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44))" ( (binary_expression "local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)" (binary_expression "local_48 < local_40" identifier < identifier) || (binary_expression "local_48 - local_40 < (uint)(local_4c < local_44)" (binary_expression "local_48 - local_40" identifier - identifier) < (call_expression "(uint)(local_4c < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_4c < local_44)" ( (binary_expression "local_4c < local_44" identifier < identifier) ))))) )) (compound_statement "{\n          lVar4 = lVar5;\n        }" { (expression_statement "lVar4 = lVar5;" (assignment_expression "lVar4 = lVar5" identifier = identifier) ;) })) (expression_statement "uVar3 = (uint)((ulonglong)lVar4 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar4 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" if (parenthesized_expression "(uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10))" ( (binary_expression "uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)" (binary_expression "uVar3 < uVar11" identifier < identifier) || (binary_expression "uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)" (binary_expression "uVar3 - uVar11" identifier - identifier) < (call_expression "(uint)((uint)lVar4 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)lVar4 < uVar10)" ( (binary_expression "(uint)lVar4 < uVar10" (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) ))))) )) (compound_statement "{\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" { (expression_statement "uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );" (assignment_expression "uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" identifier = (call_expression "gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" identifier (argument_list "(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" ( (string_literal ""sections loaded on first page without room for file and program headers are not supported"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) }) (else_clause "else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" else (compound_statement "{\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" { (expression_statement "lVar15 = lVar15 - lVar14;" (assignment_expression "lVar15 = lVar15 - lVar14" identifier = (binary_expression "lVar15 - lVar14" identifier - identifier)) ;) (expression_statement "bVar13 = local_4c < uVar10;" (assignment_expression "bVar13 = local_4c < uVar10" identifier = (binary_expression "local_4c < uVar10" identifier < identifier)) ;) (expression_statement "local_4c = local_4c - uVar10;" (assignment_expression "local_4c = local_4c - uVar10" identifier = (binary_expression "local_4c - uVar10" identifier - identifier)) ;) (expression_statement "local_48 = (local_48 - uVar11) - (uint)bVar13;" (assignment_expression "local_48 = (local_48 - uVar11) - (uint)bVar13" identifier = (binary_expression "(local_48 - uVar11) - (uint)bVar13" (parenthesized_expression "(local_48 - uVar11)" ( (binary_expression "local_48 - uVar11" identifier - identifier) )) - (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }))) (expression_statement "bVar13 = local_24 != 0;" (assignment_expression "bVar13 = local_24 != 0" identifier = (binary_expression "local_24 != 0" identifier != number_literal)) ;) (expression_statement "local_24 = iVar2;" (assignment_expression "local_24 = iVar2" identifier = identifier) ;) (if_statement "if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" { (expression_statement "uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );" (assignment_expression "uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" identifier = (call_expression "gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" identifier (argument_list "(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" ( (string_literal ""using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) })) }))))) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" * (cast_expression "(byte *)(iVar2 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x19c)" ( (binary_expression "iVar2 + 0x19c" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" * (cast_expression "(byte *)(iVar2 + 0x19c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x19c)" ( (binary_expression "iVar2 + 0x19c" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(uint *)(iVar2 + 0x160) = local_48;" (assignment_expression "*(uint *)(iVar2 + 0x160) = local_48" (pointer_expression "*(uint *)(iVar2 + 0x160)" * (cast_expression "(uint *)(iVar2 + 0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x160)" ( (binary_expression "iVar2 + 0x160" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar2 + 0x15c) = local_4c;" (assignment_expression "*(uint *)(iVar2 + 0x15c) = local_4c" (pointer_expression "*(uint *)(iVar2 + 0x15c)" * (cast_expression "(uint *)(iVar2 + 0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x15c)" ( (binary_expression "iVar2 + 0x15c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" identifier = (pointer_expression "*(int **)(param_1 + 0x10)" * (cast_expression "(int **)(param_1 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(longlong *)(iVar2 + 0x164) = lVar15;" (assignment_expression "*(longlong *)(iVar2 + 0x164) = lVar15" (pointer_expression "*(longlong *)(iVar2 + 0x164)" * (cast_expression "(longlong *)(iVar2 + 0x164)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x164)" ( (binary_expression "iVar2 + 0x164" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "((int *)piVar7[1] != piVar12)" ( (binary_expression "(int *)piVar7[1] != piVar12" (cast_expression "(int *)piVar7[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) != identifier) )) ;) }))) (return_statement "return local_24;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) || (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ))))) )) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  longlong lVar4;\n  longlong lVar5;\n  byte bVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  bool bVar13;\n  longlong lVar14;\n  longlong lVar15;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  int local_24;\n  \n  piVar7 = *(int **)(param_1 + 0x10);\n  piVar12 = (int *)*piVar7;\n  if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }\n  return local_24;\n}" (primitive_type "int") (function_declarator "FUN_0015d450(int param_1,undefined4 param_2,uint param_3,uint param_4)" (identifier "FUN_0015d450") (parameter_list "(int param_1,undefined4 param_2,uint param_3,uint param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint uVar3;\n  longlong lVar4;\n  longlong lVar5;\n  byte bVar6;\n  int *piVar7;\n  int iVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  bool bVar13;\n  longlong lVar14;\n  longlong lVar15;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  int local_24;\n  \n  piVar7 = *(int **)(param_1 + 0x10);\n  piVar12 = (int *)*piVar7;\n  if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }\n  return local_24;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "longlong lVar4;" (type_identifier "longlong") (identifier "lVar4") (; ";")) (declaration "longlong lVar5;" (type_identifier "longlong") (identifier "lVar5") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "longlong lVar14;" (type_identifier "longlong") (identifier "lVar14") (; ";")) (declaration "longlong lVar15;" (type_identifier "longlong") (identifier "lVar15") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x10)" (* "*") (cast_expression "(int **)(param_1 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "piVar12 = (int *)*piVar7;" (assignment_expression "piVar12 = (int *)*piVar7" (identifier "piVar12") (= "=") (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (if_statement "if (piVar12 == (int *)piVar7[1]) {\n    local_24 = 0;\n  }\n  else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" (if "if") (parenthesized_expression "(piVar12 == (int *)piVar7[1])" (( "(") (binary_expression "piVar12 == (int *)piVar7[1]" (identifier "piVar12") (== "==") (cast_expression "(int *)piVar7[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    local_24 = 0;\n  }" ({ "{") (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" (else "else") (compound_statement "{\n    local_24 = 0;\n    do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);\n  }" ({ "{") (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    } while ((int *)piVar7[1] != piVar12);" (do "do") (compound_statement "{\n      while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }\n      if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }\n      piVar7 = (int *)FUN_000f1580(iVar2);\n      if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }\n      if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }\n      puVar1 = (uint *)(piVar7 + 1);\n      local_4c = *puVar1;\n      local_48 = piVar7[2];\n      lVar5 = *(longlong *)puVar1;\n      lVar15 = *(longlong *)puVar1;\n      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }\n      if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }\n      iVar8 = *piVar12;\n      if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }\n      local_40 = (uint)((ulonglong)lVar15 >> 0x20);\n      local_44 = (uint)lVar15;\n      if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }\n      piVar12 = piVar12 + 1;\n      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n      *(uint *)(iVar2 + 0x160) = local_48;\n      *(uint *)(iVar2 + 0x15c) = local_4c;\n      piVar7 = *(int **)(param_1 + 0x10);\n      *(longlong *)(iVar2 + 0x164) = lVar15;\n    }" ({ "{") (while_statement "while( true ) {\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar8 = *piVar12;\n        iVar2 = *(int *)(iVar8 + 0x30);\n        if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }\n        if (*(int *)(iVar2 + 0x194) == 1) break;\n        if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }\nLAB_0015d4da:\n        piVar12 = piVar12 + 1;\n        if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }\n      }" ({ "{") (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" (identifier "iVar8") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (expression_statement "iVar2 = *(int *)(iVar8 + 0x30);" (assignment_expression "iVar2 = *(int *)(iVar8 + 0x30)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar8 + 0x30)" (* "*") (cast_expression "(int *)(iVar8 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x30)" (( "(") (binary_expression "iVar8 + 0x30" (identifier "iVar8") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar8 + 0x1e) != '\0') {\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x1e) != '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x1e) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x1e)" (* "*") (cast_expression "(char *)(iVar8 + 0x1e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x1e)" (( "(") (binary_expression "iVar8 + 0x1e" (identifier "iVar8") (+ "+") (number_literal "0x1e")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);\n        }" ({ "{") (expression_statement "*(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);" (assignment_expression "*(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20)" (pointer_expression "*(undefined4 *)(iVar2 + 0x198)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x198)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x198)" (( "(") (binary_expression "iVar2 + 0x198" (identifier "iVar2") (+ "+") (number_literal "0x198")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar2 + 0x194) == 1) break;" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 0x194) == 1)" (( "(") (binary_expression "*(int *)(iVar2 + 0x194) == 1" (pointer_expression "*(int *)(iVar2 + 0x194)" (* "*") (cast_expression "(int *)(iVar2 + 0x194)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x194)" (( "(") (binary_expression "iVar2 + 0x194" (identifier "iVar2") (+ "+") (number_literal "0x194")) () ")")))) (== "==") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (*(int *)(iVar8 + 0x24) != 0) {\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(iVar8 + 0x24) != 0" (pointer_expression "*(int *)(iVar8 + 0x24)" (* "*") (cast_expression "(int *)(iVar8 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x24)" (( "(") (binary_expression "iVar8 + 0x24" (identifier "iVar8") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar9 = gettext("may only specify load address for PT_LOAD segment");\n          FUN_000654b0(uVar9);\n          piVar7 = *(int **)(param_1 + 0x10);\n        }" ({ "{") (expression_statement "uVar9 = gettext("may only specify load address for PT_LOAD segment");" (assignment_expression "uVar9 = gettext("may only specify load address for PT_LOAD segment")" (identifier "uVar9") (= "=") (call_expression "gettext("may only specify load address for PT_LOAD segment")" (identifier "gettext") (argument_list "("may only specify load address for PT_LOAD segment")" (( "(") (string_literal ""may only specify load address for PT_LOAD segment"" (" """) (string_content "may only specify load address for PT_LOAD segment") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" (identifier "FUN_000654b0") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x10)" (* "*") (cast_expression "(int **)(param_1 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_0015d4da:\n        piVar12 = piVar12 + 1;" (statement_identifier "LAB_0015d4da") (: ":") (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if ((int *)piVar7[1] == piVar12) {\n          return local_24;\n        }" (if "if") (parenthesized_expression "((int *)piVar7[1] == piVar12)" (( "(") (binary_expression "(int *)piVar7[1] == piVar12" (cast_expression "(int *)piVar7[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) (== "==") (identifier "piVar12")) () ")")) (compound_statement "{\n          return local_24;\n        }" ({ "{") (return_statement "return local_24;" (return "return") (identifier "local_24") (; ";")) (} "}"))) (} "}"))) (if_statement "if (*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }" (if "if") (parenthesized_expression "(*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3))" (( "(") (binary_expression "*(uint *)(iVar2 + 0x180) < param_4 ||\n          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (binary_expression "*(uint *)(iVar2 + 0x180) < param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" (* "*") (cast_expression "(uint *)(iVar2 + 0x180)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x180)" (( "(") (binary_expression "iVar2 + 0x180" (identifier "iVar2") (+ "+") (number_literal "0x180")) () ")")))) (< "<") (identifier "param_4")) (|| "||") (binary_expression "*(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (binary_expression "*(uint *)(iVar2 + 0x180) - param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" (* "*") (cast_expression "(uint *)(iVar2 + 0x180)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x180)" (( "(") (binary_expression "iVar2 + 0x180" (identifier "iVar2") (+ "+") (number_literal "0x180")) () ")")))) (- "-") (identifier "param_4")) (< "<") (call_expression "(uint)(*(uint *)(iVar2 + 0x17c) < param_3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(iVar2 + 0x17c) < param_3)" (( "(") (binary_expression "*(uint *)(iVar2 + 0x17c) < param_3" (pointer_expression "*(uint *)(iVar2 + 0x17c)" (* "*") (cast_expression "(uint *)(iVar2 + 0x17c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x17c)" (( "(") (binary_expression "iVar2 + 0x17c" (identifier "iVar2") (+ "+") (number_literal "0x17c")) () ")")))) (< "<") (identifier "param_3")) () ")"))))) () ")")) (compound_statement "{\n        *(uint *)(iVar2 + 0x17c) = param_3;\n        *(uint *)(iVar2 + 0x180) = param_4;\n      }" ({ "{") (expression_statement "*(uint *)(iVar2 + 0x17c) = param_3;" (assignment_expression "*(uint *)(iVar2 + 0x17c) = param_3" (pointer_expression "*(uint *)(iVar2 + 0x17c)" (* "*") (cast_expression "(uint *)(iVar2 + 0x17c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x17c)" (( "(") (binary_expression "iVar2 + 0x17c" (identifier "iVar2") (+ "+") (number_literal "0x17c")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(uint *)(iVar2 + 0x180) = param_4;" (assignment_expression "*(uint *)(iVar2 + 0x180) = param_4" (pointer_expression "*(uint *)(iVar2 + 0x180)" (* "*") (cast_expression "(uint *)(iVar2 + 0x180)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x180)" (( "(") (binary_expression "iVar2 + 0x180" (identifier "iVar2") (+ "+") (number_literal "0x180")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (} "}"))) (expression_statement "piVar7 = (int *)FUN_000f1580(iVar2);" (assignment_expression "piVar7 = (int *)FUN_000f1580(iVar2)" (identifier "piVar7") (= "=") (cast_expression "(int *)FUN_000f1580(iVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000f1580(iVar2)" (identifier "FUN_000f1580") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))))) (; ";")) (if_statement "if (piVar7 == (int *)0x0) {\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }" (if "if") (parenthesized_expression "(piVar7 == (int *)0x0)" (( "(") (binary_expression "piVar7 == (int *)0x0" (identifier "piVar7") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(undefined4 *)(iVar2 + 0x15c) = 0;\n        piVar7 = *(int **)(param_1 + 0x10);\n        *(undefined4 *)(iVar2 + 0x160) = 0;\n        *(undefined4 *)(iVar2 + 0x164) = 0;\n        *(undefined4 *)(iVar2 + 0x168) = 0;\n        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;\n        goto LAB_0015d4da;\n      }" ({ "{") (expression_statement "*(undefined4 *)(iVar2 + 0x15c) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x15c) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x15c)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x15c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x15c)" (( "(") (binary_expression "iVar2 + 0x15c" (identifier "iVar2") (+ "+") (number_literal "0x15c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x10)" (* "*") (cast_expression "(int **)(param_1 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x160) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x160) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x160)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x160)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x160)" (( "(") (binary_expression "iVar2 + 0x160" (identifier "iVar2") (+ "+") (number_literal "0x160")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x164) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x164) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x164)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x164)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x164)" (( "(") (binary_expression "iVar2 + 0x164" (identifier "iVar2") (+ "+") (number_literal "0x164")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x168) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x168) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x168)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x168)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x168)" (( "(") (binary_expression "iVar2 + 0x168" (identifier "iVar2") (+ "+") (number_literal "0x168")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x19c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x19c)" (( "(") (binary_expression "iVar2 + 0x19c" (identifier "iVar2") (+ "+") (number_literal "0x19c")) () ")")))) (= "=") (binary_expression "*(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x19c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x19c)" (( "(") (binary_expression "iVar2 + 0x19c" (identifier "iVar2") (+ "+") (number_literal "0x19c")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_0015d4da;" (goto "goto") (statement_identifier "LAB_0015d4da") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(piVar7 + 7) & 1) == 0) {\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }" (if "if") (parenthesized_expression "((*(byte *)(piVar7 + 7) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(piVar7 + 7) & 1) == 0" (parenthesized_expression "(*(byte *)(piVar7 + 7) & 1)" (( "(") (binary_expression "*(byte *)(piVar7 + 7) & 1" (pointer_expression "*(byte *)(piVar7 + 7)" (* "*") (cast_expression "(byte *)(piVar7 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 7)" (( "(") (binary_expression "piVar7 + 7" (identifier "piVar7") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_00069d00("../../gold/output.h",0xc5,"address");\n      }" ({ "{") (expression_statement "FUN_00069d00("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00069d00("../../gold/output.h",0xc5,"address")" (identifier "FUN_00069d00") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar1 = (uint *)(piVar7 + 1);" (assignment_expression "puVar1 = (uint *)(piVar7 + 1)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(piVar7 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 1)" (( "(") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_4c = *puVar1;" (assignment_expression "local_4c = *puVar1" (identifier "local_4c") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "local_48 = piVar7[2];" (assignment_expression "local_48 = piVar7[2]" (identifier "local_48") (= "=") (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "lVar5 = *(longlong *)puVar1;" (assignment_expression "lVar5 = *(longlong *)puVar1" (identifier "lVar5") (= "=") (pointer_expression "*(longlong *)puVar1" (* "*") (cast_expression "(longlong *)puVar1" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) (; ";")) (expression_statement "lVar15 = *(longlong *)puVar1;" (assignment_expression "lVar15 = *(longlong *)puVar1" (identifier "lVar15") (= "=") (pointer_expression "*(longlong *)puVar1" (* "*") (cast_expression "(longlong *)puVar1" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) (; ";")) (if_statement "if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }\n      else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" (if "if") (parenthesized_expression "(*(code **)(*piVar7 + 0x10) == FUN_000a4930)" (( "(") (binary_expression "*(code **)(*piVar7 + 0x10) == FUN_000a4930" (pointer_expression "*(code **)(*piVar7 + 0x10)" (* "*") (cast_expression "(code **)(*piVar7 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar7 + 0x10)" (( "(") (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "0x10")) () ")")))) (== "==") (identifier "FUN_000a4930")) () ")")) (compound_statement "{\n        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n      }" ({ "{") (expression_statement "bVar6 = *(byte *)(piVar7 + 0x24) >> 7;" (assignment_expression "bVar6 = *(byte *)(piVar7 + 0x24) >> 7" (identifier "bVar6") (= "=") (binary_expression "*(byte *)(piVar7 + 0x24) >> 7" (pointer_expression "*(byte *)(piVar7 + 0x24)" (* "*") (cast_expression "(byte *)(piVar7 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 0x24)" (( "(") (binary_expression "piVar7 + 0x24" (identifier "piVar7") (+ "+") (number_literal "0x24")) () ")")))) (>> ">>") (number_literal "7"))) (; ";")) (} "}")) (else_clause "else {\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" (else "else") (compound_statement "{\n        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n      }" ({ "{") (expression_statement "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);" (assignment_expression "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7)" (identifier "bVar6") (= "=") (call_expression "(**(code **)(*piVar7 + 0x10))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x10))" (( "(") (pointer_expression "**(code **)(*piVar7 + 0x10)" (* "*") (pointer_expression "*(code **)(*piVar7 + 0x10)" (* "*") (cast_expression "(code **)(*piVar7 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar7 + 0x10)" (( "(") (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(piVar7)" (( "(") (identifier "piVar7") () ")")))) (; ";")) (} "}")))) (if_statement "if (bVar6 != 0) {\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }" (if "if") (parenthesized_expression "(bVar6 != 0)" (( "(") (binary_expression "bVar6 != 0" (identifier "bVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n      }" ({ "{") (if_statement "if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }\n        else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" (if "if") (parenthesized_expression "(*(code **)(*piVar7 + 0x14) == FUN_000a4bf0)" (( "(") (binary_expression "*(code **)(*piVar7 + 0x14) == FUN_000a4bf0" (pointer_expression "*(code **)(*piVar7 + 0x14)" (* "*") (cast_expression "(code **)(*piVar7 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar7 + 0x14)" (( "(") (binary_expression "*piVar7 + 0x14" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "0x14")) () ")")))) (== "==") (identifier "FUN_000a4bf0")) () ")")) (compound_statement "{\n          if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }\n          lVar15 = *(longlong *)(piVar7 + 0xd);\n        }" ({ "{") (if_statement "if (-1 < (char)piVar7[0x24]) {\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }" (if "if") (parenthesized_expression "(-1 < (char)piVar7[0x24])" (( "(") (binary_expression "-1 < (char)piVar7[0x24]" (number_literal "-1") (< "<") (cast_expression "(char)piVar7[0x24]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar7[0x24]" (identifier "piVar7") ([ "[") (number_literal "0x24") (] "]")))) () ")")) (compound_statement "{\n                    \n            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");\n          }" ({ "{") (expression_statement "FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");" (call_expression "FUN_00069d00("../../gold/output.h",0x107b,"do_load_address")" (identifier "FUN_00069d00") (argument_list "("../../gold/output.h",0x107b,"do_load_address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x107b") (, ",") (string_literal ""do_load_address"" (" """) (string_content "do_load_address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar15 = *(longlong *)(piVar7 + 0xd);" (assignment_expression "lVar15 = *(longlong *)(piVar7 + 0xd)" (identifier "lVar15") (= "=") (pointer_expression "*(longlong *)(piVar7 + 0xd)" (* "*") (cast_expression "(longlong *)(piVar7 + 0xd)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 0xd)" (( "(") (binary_expression "piVar7 + 0xd" (identifier "piVar7") (+ "+") (number_literal "0xd")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" (else "else") (compound_statement "{\n          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);\n        }" ({ "{") (expression_statement "lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);" (assignment_expression "lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7)" (identifier "lVar15") (= "=") (call_expression "(**(code **)(*piVar7 + 0x14))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x14))" (( "(") (pointer_expression "**(code **)(*piVar7 + 0x14)" (* "*") (pointer_expression "*(code **)(*piVar7 + 0x14)" (* "*") (cast_expression "(code **)(*piVar7 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar7 + 0x14)" (( "(") (binary_expression "*piVar7 + 0x14" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(piVar7)" (( "(") (identifier "piVar7") () ")")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" (identifier "iVar8") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (if_statement "if (*(int *)(iVar8 + 0x24) != 0) {\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(iVar8 + 0x24) != 0" (pointer_expression "*(int *)(iVar8 + 0x24)" (* "*") (cast_expression "(int *)(iVar8 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x24)" (( "(") (binary_expression "iVar8 + 0x24" (identifier "iVar8") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }\n        if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }\n        iVar8 = *piVar12;\n        if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }\n        lVar15 = *(longlong *)(iVar8 + 0x28);\n      }" ({ "{") (if_statement "if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }\n        else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" (if "if") (parenthesized_expression "(*(code **)(*piVar7 + 0x10) == FUN_000a4930)" (( "(") (binary_expression "*(code **)(*piVar7 + 0x10) == FUN_000a4930" (pointer_expression "*(code **)(*piVar7 + 0x10)" (* "*") (cast_expression "(code **)(*piVar7 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar7 + 0x10)" (( "(") (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "0x10")) () ")")))) (== "==") (identifier "FUN_000a4930")) () ")")) (compound_statement "{\n          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;\n        }" ({ "{") (expression_statement "bVar6 = *(byte *)(piVar7 + 0x24) >> 7;" (assignment_expression "bVar6 = *(byte *)(piVar7 + 0x24) >> 7" (identifier "bVar6") (= "=") (binary_expression "*(byte *)(piVar7 + 0x24) >> 7" (pointer_expression "*(byte *)(piVar7 + 0x24)" (* "*") (cast_expression "(byte *)(piVar7 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 0x24)" (( "(") (binary_expression "piVar7 + 0x24" (identifier "piVar7") (+ "+") (number_literal "0x24")) () ")")))) (>> ">>") (number_literal "7"))) (; ";")) (} "}")) (else_clause "else {\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" (else "else") (compound_statement "{\n          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);\n        }" ({ "{") (expression_statement "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);" (assignment_expression "bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7)" (identifier "bVar6") (= "=") (call_expression "(**(code **)(*piVar7 + 0x10))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x10))" (( "(") (pointer_expression "**(code **)(*piVar7 + 0x10)" (* "*") (pointer_expression "*(code **)(*piVar7 + 0x10)" (* "*") (cast_expression "(code **)(*piVar7 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar7 + 0x10)" (( "(") (binary_expression "*piVar7 + 0x10" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(piVar7)" (( "(") (identifier "piVar7") () ")")))) (; ";")) (} "}")))) (if_statement "if (bVar6 != 0) {\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }" (if "if") (parenthesized_expression "(bVar6 != 0)" (( "(") (binary_expression "bVar6 != 0" (identifier "bVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar8 = piVar7[8];\n          uVar9 = gettext("PHDRS load address overrides section %s load address");\n          FUN_000654e0(uVar9,iVar8);\n        }" ({ "{") (expression_statement "iVar8 = piVar7[8];" (assignment_expression "iVar8 = piVar7[8]" (identifier "iVar8") (= "=") (subscript_expression "piVar7[8]" (identifier "piVar7") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "uVar9 = gettext("PHDRS load address overrides section %s load address");" (assignment_expression "uVar9 = gettext("PHDRS load address overrides section %s load address")" (identifier "uVar9") (= "=") (call_expression "gettext("PHDRS load address overrides section %s load address")" (identifier "gettext") (argument_list "("PHDRS load address overrides section %s load address")" (( "(") (string_literal ""PHDRS load address overrides section %s load address"" (" """) (string_content "PHDRS load address overrides section %s load address") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654e0(uVar9,iVar8);" (call_expression "FUN_000654e0(uVar9,iVar8)" (identifier "FUN_000654e0") (argument_list "(uVar9,iVar8)" (( "(") (identifier "uVar9") (, ",") (identifier "iVar8") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" (identifier "iVar8") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (if_statement "if (*(int *)(iVar8 + 0x24) == 0) {\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 0x24) == 0)" (( "(") (binary_expression "*(int *)(iVar8 + 0x24) == 0" (pointer_expression "*(int *)(iVar8 + 0x24)" (* "*") (cast_expression "(int *)(iVar8 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x24)" (( "(") (binary_expression "iVar8 + 0x24" (identifier "iVar8") (+ "+") (number_literal "0x24")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");\n        }" ({ "{") (expression_statement "FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");" (call_expression "FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address")" (identifier "FUN_00069d00") (argument_list "("../../gold/script-sections.cc",0xc6b,"load_address")" (( "(") (string_literal ""../../gold/script-sections.cc"" (" """) (string_content "../../gold/script-sections.cc") (" """)) (, ",") (number_literal "0xc6b") (, ",") (string_literal ""load_address"" (" """) (string_content "load_address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar15 = *(longlong *)(iVar8 + 0x28);" (assignment_expression "lVar15 = *(longlong *)(iVar8 + 0x28)" (identifier "lVar15") (= "=") (pointer_expression "*(longlong *)(iVar8 + 0x28)" (* "*") (cast_expression "(longlong *)(iVar8 + 0x28)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x28)" (( "(") (binary_expression "iVar8 + 0x28" (identifier "iVar8") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_40 = (uint)((ulonglong)lVar15 >> 0x20);" (assignment_expression "local_40 = (uint)((ulonglong)lVar15 >> 0x20)" (identifier "local_40") (= "=") (call_expression "(uint)((ulonglong)lVar15 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar15 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar15")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_44 = (uint)lVar15;" (assignment_expression "local_44 = (uint)lVar15" (identifier "local_44") (= "=") (cast_expression "(uint)lVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar15"))) (; ";")) (if_statement "if (*(char *)(iVar8 + 0x1c) == '\0') {\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }\n      else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x1c) == '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x1c) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x1c)" (* "*") (cast_expression "(char *)(iVar8 + 0x1c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x1c)" (( "(") (binary_expression "iVar8 + 0x1c" (identifier "iVar8") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;\n      }" ({ "{") (if_statement "if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x1d) != '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x1d) != '\0'" (pointer_expression "*(char *)(iVar8 + 0x1d)" (* "*") (cast_expression "(char *)(iVar8 + 0x1d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x1d)" (( "(") (binary_expression "iVar8 + 0x1d" (identifier "iVar8") (+ "+") (number_literal "0x1d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0015d714;" (goto "goto") (statement_identifier "LAB_0015d714") (; ";"))) (} "}")) (else_clause "else if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" (else "else") (if_statement "if (*(char *)(iVar8 + 0x1d) == '\0') {\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }\n      else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar8 + 0x1d) == '\0')" (( "(") (binary_expression "*(char *)(iVar8 + 0x1d) == '\0'" (pointer_expression "*(char *)(iVar8 + 0x1d)" (* "*") (cast_expression "(char *)(iVar8 + 0x1d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x1d)" (( "(") (binary_expression "iVar8 + 0x1d" (identifier "iVar8") (+ "+") (number_literal "0x1d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");\n        FUN_000654b0(uVar9);\n      }" ({ "{") (labeled_statement "LAB_0015d714:\n        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");" (statement_identifier "LAB_0015d714") (: ":") (expression_statement "uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");" (assignment_expression "uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported")" (identifier "uVar9") (= "=") (call_expression "gettext("using only one of FILEHDR and PHDRS is not currently supported")" (identifier "gettext") (argument_list "("using only one of FILEHDR and PHDRS is not currently supported")" (( "(") (string_literal ""using only one of FILEHDR and PHDRS is not currently supported"" (" """) (string_content "using only one of FILEHDR and PHDRS is not currently supported") (" """)) () ")")))) (; ";"))) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" (identifier "FUN_000654b0") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" (else "else") (compound_statement "{\n        uVar9 = FUN_0015ce10(param_1,param_2);\n        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);\n        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);\n        uVar10 = (uint)lVar14;\n        lVar4 = lVar15;\n        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }\n        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);\n        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }\n        bVar13 = local_24 != 0;\n        local_24 = iVar2;\n        if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n      }" ({ "{") (expression_statement "uVar9 = FUN_0015ce10(param_1,param_2);" (assignment_expression "uVar9 = FUN_0015ce10(param_1,param_2)" (identifier "uVar9") (= "=") (call_expression "FUN_0015ce10(param_1,param_2)" (identifier "FUN_0015ce10") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);" (assignment_expression "lVar14 = FUN_0015cea0(param_1,lVar15,uVar9)" (identifier "lVar14") (= "=") (call_expression "FUN_0015cea0(param_1,lVar15,uVar9)" (identifier "FUN_0015cea0") (argument_list "(param_1,lVar15,uVar9)" (( "(") (identifier "param_1") (, ",") (identifier "lVar15") (, ",") (identifier "uVar9") () ")")))) (; ";")) (expression_statement "uVar11 = (uint)((ulonglong)lVar14 >> 0x20);" (assignment_expression "uVar11 = (uint)((ulonglong)lVar14 >> 0x20)" (identifier "uVar11") (= "=") (call_expression "(uint)((ulonglong)lVar14 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar14 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar14 >> 0x20" (cast_expression "(ulonglong)lVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar14")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar10 = (uint)lVar14;" (assignment_expression "uVar10 = (uint)lVar14" (identifier "uVar10") (= "=") (cast_expression "(uint)lVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar14"))) (; ";")) (expression_statement "lVar4 = lVar15;" (assignment_expression "lVar4 = lVar15" (identifier "lVar4") (= "=") (identifier "lVar15")) (; ";")) (if_statement "if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {\n          lVar4 = lVar5;\n        }" (if "if") (parenthesized_expression "(local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44))" (( "(") (binary_expression "local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)" (binary_expression "local_48 < local_40" (identifier "local_48") (< "<") (identifier "local_40")) (|| "||") (binary_expression "local_48 - local_40 < (uint)(local_4c < local_44)" (binary_expression "local_48 - local_40" (identifier "local_48") (- "-") (identifier "local_40")) (< "<") (call_expression "(uint)(local_4c < local_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_4c < local_44)" (( "(") (binary_expression "local_4c < local_44" (identifier "local_4c") (< "<") (identifier "local_44")) () ")"))))) () ")")) (compound_statement "{\n          lVar4 = lVar5;\n        }" ({ "{") (expression_statement "lVar4 = lVar5;" (assignment_expression "lVar4 = lVar5" (identifier "lVar4") (= "=") (identifier "lVar5")) (; ";")) (} "}"))) (expression_statement "uVar3 = (uint)((ulonglong)lVar4 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)lVar4 >> 0x20)" (identifier "uVar3") (= "=") (call_expression "(uint)((ulonglong)lVar4 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar4 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar4")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }\n        else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" (if "if") (parenthesized_expression "(uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10))" (( "(") (binary_expression "uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)" (binary_expression "uVar3 < uVar11" (identifier "uVar3") (< "<") (identifier "uVar11")) (|| "||") (binary_expression "uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)" (binary_expression "uVar3 - uVar11" (identifier "uVar3") (- "-") (identifier "uVar11")) (< "<") (call_expression "(uint)((uint)lVar4 < uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)lVar4 < uVar10)" (( "(") (binary_expression "(uint)lVar4 < uVar10" (cast_expression "(uint)lVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar4")) (< "<") (identifier "uVar10")) () ")"))))) () ")")) (compound_statement "{\n          uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" ({ "{") (expression_statement "uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         );" (assignment_expression "uVar9 = gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" (identifier "uVar9") (= "=") (call_expression "gettext(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" (identifier "gettext") (argument_list "(\n                         "sections loaded on first page without room for file and program headers are not supported"\n                         )" (( "(") (string_literal ""sections loaded on first page without room for file and program headers are not supported"" (" """) (string_content "sections loaded on first page without room for file and program headers are not supported") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" (identifier "FUN_000654b0") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" (else "else") (compound_statement "{\n          lVar15 = lVar15 - lVar14;\n          bVar13 = local_4c < uVar10;\n          local_4c = local_4c - uVar10;\n          local_48 = (local_48 - uVar11) - (uint)bVar13;\n        }" ({ "{") (expression_statement "lVar15 = lVar15 - lVar14;" (assignment_expression "lVar15 = lVar15 - lVar14" (identifier "lVar15") (= "=") (binary_expression "lVar15 - lVar14" (identifier "lVar15") (- "-") (identifier "lVar14"))) (; ";")) (expression_statement "bVar13 = local_4c < uVar10;" (assignment_expression "bVar13 = local_4c < uVar10" (identifier "bVar13") (= "=") (binary_expression "local_4c < uVar10" (identifier "local_4c") (< "<") (identifier "uVar10"))) (; ";")) (expression_statement "local_4c = local_4c - uVar10;" (assignment_expression "local_4c = local_4c - uVar10" (identifier "local_4c") (= "=") (binary_expression "local_4c - uVar10" (identifier "local_4c") (- "-") (identifier "uVar10"))) (; ";")) (expression_statement "local_48 = (local_48 - uVar11) - (uint)bVar13;" (assignment_expression "local_48 = (local_48 - uVar11) - (uint)bVar13" (identifier "local_48") (= "=") (binary_expression "(local_48 - uVar11) - (uint)bVar13" (parenthesized_expression "(local_48 - uVar11)" (( "(") (binary_expression "local_48 - uVar11" (identifier "local_48") (- "-") (identifier "uVar11")) () ")")) (- "-") (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")))) (; ";")) (} "}")))) (expression_statement "bVar13 = local_24 != 0;" (assignment_expression "bVar13 = local_24 != 0" (identifier "bVar13") (= "=") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "local_24 = iVar2;" (assignment_expression "local_24 = iVar2" (identifier "local_24") (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (bVar13) {\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n          uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );\n          FUN_000654b0(uVar9);\n        }" ({ "{") (expression_statement "uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         );" (assignment_expression "uVar9 = gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" (identifier "uVar9") (= "=") (call_expression "gettext(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" (identifier "gettext") (argument_list "(\n                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"\n                         )" (( "(") (string_literal ""using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"" (" """) (string_content "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654b0(uVar9);" (call_expression "FUN_000654b0(uVar9)" (identifier "FUN_000654b0") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (} "}"))) (} "}")))))) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;" (assignment_expression "*(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x19c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x19c)" (( "(") (binary_expression "iVar2 + 0x19c" (identifier "iVar2") (+ "+") (number_literal "0x19c")) () ")")))) (= "=") (binary_expression "*(byte *)(iVar2 + 0x19c) | 2" (pointer_expression "*(byte *)(iVar2 + 0x19c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x19c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x19c)" (( "(") (binary_expression "iVar2 + 0x19c" (identifier "iVar2") (+ "+") (number_literal "0x19c")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (expression_statement "*(uint *)(iVar2 + 0x160) = local_48;" (assignment_expression "*(uint *)(iVar2 + 0x160) = local_48" (pointer_expression "*(uint *)(iVar2 + 0x160)" (* "*") (cast_expression "(uint *)(iVar2 + 0x160)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x160)" (( "(") (binary_expression "iVar2 + 0x160" (identifier "iVar2") (+ "+") (number_literal "0x160")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "*(uint *)(iVar2 + 0x15c) = local_4c;" (assignment_expression "*(uint *)(iVar2 + 0x15c) = local_4c" (pointer_expression "*(uint *)(iVar2 + 0x15c)" (* "*") (cast_expression "(uint *)(iVar2 + 0x15c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x15c)" (( "(") (binary_expression "iVar2 + 0x15c" (identifier "iVar2") (+ "+") (number_literal "0x15c")) () ")")))) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x10);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x10)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x10)" (* "*") (cast_expression "(int **)(param_1 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(longlong *)(iVar2 + 0x164) = lVar15;" (assignment_expression "*(longlong *)(iVar2 + 0x164) = lVar15" (pointer_expression "*(longlong *)(iVar2 + 0x164)" (* "*") (cast_expression "(longlong *)(iVar2 + 0x164)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x164)" (( "(") (binary_expression "iVar2 + 0x164" (identifier "iVar2") (+ "+") (number_literal "0x164")) () ")")))) (= "=") (identifier "lVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)piVar7[1] != piVar12)" (( "(") (binary_expression "(int *)piVar7[1] != piVar12" (cast_expression "(int *)piVar7[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "piVar12")) () ")")) (; ";")) (} "}")))) (return_statement "return local_24;" (return "return") (identifier "local_24") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_segment * set_phdrs_clause_addresses(Script_sections * this,
   Layout * layout, uint64_t dot_alignment) */

type_1 * __thiscall
var_4::Script_sections::set_phdrs_clause_addresses
          (Script_sections *this,Layout *layout,uint64_t var_6)

{
  type_1 *this_00;
  type_2 *var_15;
  type_3 var_16;
  type_4 *var_13;
  type_5 *pPVar4;
  size_t sizeof_headers;
  char *pcVar5;
  char *format;
  int iVar6;
  type_6 var_9;
  type_7 *pPVar8;
  type_6 extraout_EDX;
  type_6 var_28;
  type_8 var_3;
  bool var_25;
  uint64_t var_26;
  type_6 var_23;
  type_6 var_21;
  type_6 var_24;
  type_6 var_22;
  type_6 var_11;
  type_6 var_10;
  type_6 var_29;
  type_6 var_27;
  type_1 *var_30;
  
  pPVar8 = this->phdrs_elements_;
  var_3 = (pPVar8->
             super__Vector_base<var_4::type_5*var_2,var_5::allocator<var_4::type_5*>var_1>var_2).
             _M_impl._M_start;
  if (var_3 ==
      (pPVar8->super__Vector_base<var_4::type_5*,var_5::allocator<var_4::type_5*>var_1>var_2).
      _M_impl._M_finish) {
    var_30 = (type_1 *)0x0;
  }
  else {
    var_30 = (type_1 *)0x0;
    do {
      while( true ) {
        var_10 = (type_6)(var_6 >> 0x20);
        var_11 = (type_6)var_6;
        pPVar4 = *var_3;
        this_00 = pPVar4->segment_;
        if (pPVar4->is_flags_valid_ != false) {
          this_00->flags_ = pPVar4->flags_;
        }
        if (this_00->type_ == 1) break;
        if (pPVar4->load_address_ != (type_9 *)0x0) {
          pcVar5 = (char *)var_7("may only specify load address for PT_LOAD segment");
          var_8(pcVar5);
          pPVar8 = this->phdrs_elements_;
        }
LAB_0015d4da:
        var_3 = var_3 + 1;
        if ((pPVar8->super__Vector_base<var_4::type_5*,var_5::allocator<var_4::type_5*>var_1>var_2
            )._M_impl._M_finish == var_3) {
          return var_30;
        }
      }
      var_9 = *(type_6 *)((int)&this_00->min_p_align_ + 4);
      if (var_9 < var_10 || var_9 - var_10 < (type_6)((type_6)this_00->min_p_align_ < var_11)) {
        this_00->min_p_align_ = var_6;
      }
      var_13 = type_1::var_12(this_00);
      if (var_13 == (type_4 *)0x0) {
        *(type_10 *)&this_00->vaddr_ = 0;
        pPVar8 = this->phdrs_elements_;
        *(type_10 *)((int)&this_00->vaddr_ + 4) = 0;
        *(type_10 *)&this_00->paddr_ = 0;
        *(type_10 *)((int)&this_00->paddr_ + 4) = 0;
        this_00->field_0x19c = this_00->field_0x19c | 2;
        goto LAB_0015d4da;
      }
      if (((var_13->super_Output_data).field_0x1c & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        var_14("../../gold/output.h",0xc5,"address");
      }
      var_23 = (type_6)(var_13->super_Output_data).address_;
      var_21 = *(type_6 *)((int)&(var_13->super_Output_data).address_ + 4);
      var_15 = (var_13->super_Output_data)._vptr_Output_data[4];
      if (var_15 == type_4::do_has_load_address) {
        var_16 = (type_3)var_13->field_0x90 >> 7;
      }
      else {
        iVar6 = (*var_15)(var_13);
        var_16 = (type_3)iVar6;
      }
      var_24 = var_23;
      var_22 = var_21;
      if (var_16 != 0) {
        var_15 = (var_13->super_Output_data)._vptr_Output_data[5];
        if (var_15 == type_4::do_load_address) {
          if (-1 < (char)var_13->field_0x90) {
                    /* WARNING: Subroutine does not return */
            var_14("../../gold/output.h",0x107b,"do_load_address");
          }
          var_24 = (type_6)var_13->load_address_;
          var_22 = *(type_6 *)((int)&var_13->load_address_ + 4);
        }
        else {
          var_24 = (*var_15)(var_13);
          var_22 = extraout_EDX;
        }
      }
      pPVar4 = *var_3;
      if (pPVar4->load_address_ != (type_9 *)0x0) {
        var_15 = (var_13->super_Output_data)._vptr_Output_data[4];
        if (var_15 == type_4::do_has_load_address) {
          var_16 = (type_3)var_13->field_0x90 >> 7;
        }
        else {
          iVar6 = (*var_15)(var_13);
          var_16 = (type_3)iVar6;
        }
        if (var_16 != 0) {
          pcVar5 = var_13->name_;
          format = (char *)var_7("PHDRS load address overrides section %s load address");
          var_17(format,pcVar5);
        }
        pPVar4 = *var_3;
        if (pPVar4->load_address_ == (type_9 *)0x0) {
                    /* WARNING: Subroutine does not return */
          var_14("../../gold/script-sections.cc",0xc6b,"load_address");
        }
        var_24 = (type_6)pPVar4->load_address_value_;
        var_22 = *(type_6 *)((int)&pPVar4->load_address_value_ + 4);
      }
      if (pPVar4->includes_filehdr_ == false) {
        if (pPVar4->includes_phdrs_ != false) goto LAB_0015d714;
      }
      else if (pPVar4->includes_phdrs_ == false) {
LAB_0015d714:
        pcVar5 = (char *)var_7("using only one of FILEHDR and PHDRS is not currently supported");
        var_8(pcVar5);
      }
      else {
        sizeof_headers = var_18(this,layout);
        var_26 = var_19(this,var_20(var_22,var_24),sizeof_headers);
        var_25 = var_21 - var_22 < (type_6)(var_23 < var_24);
        var_9 = var_22;
        if (var_21 < var_22 || var_25) {
          var_9 = var_21;
        }
        var_27 = (type_6)(var_26 >> 0x20);
        var_28 = var_24;
        if (var_21 < var_22 || var_25) {
          var_28 = var_23;
        }
        var_29 = (type_6)var_26;
        if (var_9 < var_27 || var_9 - var_27 < (type_6)(var_28 < var_29)) {
          pcVar5 = (char *)var_7(
                                  "sections loaded on first page without room for file and program headers are not supported"
                                  );
          var_8(pcVar5);
        }
        else {
          var_25 = var_24 < var_29;
          var_24 = var_24 - var_29;
          var_22 = (var_22 - var_27) - (type_6)var_25;
          var_25 = var_23 < var_29;
          var_23 = var_23 - var_29;
          var_21 = (var_21 - var_27) - (type_6)var_25;
        }
        var_25 = var_30 != (type_1 *)0x0;
        var_30 = this_00;
        if (var_25) {
          pcVar5 = (char *)var_7(
                                  "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
                                  );
          var_8(pcVar5);
        }
      }
      var_3 = var_3 + 1;
      this_00->field_0x19c = this_00->field_0x19c | 2;
      *(type_6 *)((int)&this_00->vaddr_ + 4) = var_21;
      *(type_6 *)&this_00->vaddr_ = var_23;
      *(type_6 *)((int)&this_00->paddr_ + 4) = var_22;
      pPVar8 = this->phdrs_elements_;
      *(type_6 *)&this_00->paddr_ = var_24;
    } while ((pPVar8->
             super__Vector_base<var_4::type_5*,var_5::allocator<var_4::type_5*>var_1>var_2).
             _M_impl._M_finish != var_3);
  }
  return var_30;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int MASKED(int param_1,undefined4 param_2,uint param_3,uint param_4)

{
  uint *puVar1;
  int iVar2;
  uint uVar3;
  longlong lVar4;
  longlong lVar5;
  byte bVar6;
  int *piVar7;
  int iVar8;
  undefined4 uVar9;
  uint uVar10;
  uint uVar11;
  int *piVar12;
  bool bVar13;
  longlong lVar14;
  longlong lVar15;
  uint local_4c;
  uint local_48;
  uint local_44;
  uint local_40;
  int local_24;
  
  piVar7 = *(int **)(param_1 + 0x10);
  piVar12 = (int *)*piVar7;
  if (piVar12 == (int *)piVar7[1]) {
    local_24 = 0;
  }
  else {
    local_24 = 0;
    do {
      while( true ) {
        iVar8 = *piVar12;
        iVar2 = *(int *)(iVar8 + 0x30);
        if (*(char *)(iVar8 + 0x1e) != '\0') {
          *(undefined4 *)(iVar2 + 0x198) = *(undefined4 *)(iVar8 + 0x20);
        }
        if (*(int *)(iVar2 + 0x194) == 1) break;
        if (*(int *)(iVar8 + 0x24) != 0) {
          uVar9 = gettext("may only specify load address for PT_LOAD segment");
          FUN_000654b0(uVar9);
          piVar7 = *(int **)(param_1 + 0x10);
        }
LAB_0015d4da:
        piVar12 = piVar12 + 1;
        if ((int *)piVar7[1] == piVar12) {
          return local_24;
        }
      }
      if (*(uint *)(iVar2 + 0x180) < param_4 ||
          *(uint *)(iVar2 + 0x180) - param_4 < (uint)(*(uint *)(iVar2 + 0x17c) < param_3)) {
        *(uint *)(iVar2 + 0x17c) = param_3;
        *(uint *)(iVar2 + 0x180) = param_4;
      }
      piVar7 = (int *)FUN_000f1580(iVar2);
      if (piVar7 == (int *)0x0) {
        *(undefined4 *)(iVar2 + 0x15c) = 0;
        piVar7 = *(int **)(param_1 + 0x10);
        *(undefined4 *)(iVar2 + 0x160) = 0;
        *(undefined4 *)(iVar2 + 0x164) = 0;
        *(undefined4 *)(iVar2 + 0x168) = 0;
        *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;
        goto LAB_0015d4da;
      }
      if ((*(byte *)(piVar7 + 7) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_00069d00("../../gold/output.h",0xc5,"address");
      }
      puVar1 = (uint *)(piVar7 + 1);
      local_4c = *puVar1;
      local_48 = piVar7[2];
      lVar5 = *(longlong *)puVar1;
      lVar15 = *(longlong *)puVar1;
      if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {
        bVar6 = *(byte *)(piVar7 + 0x24) >> 7;
      }
      else {
        bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);
      }
      if (bVar6 != 0) {
        if (*(code **)(*piVar7 + 0x14) == FUN_000a4bf0) {
          if (-1 < (char)piVar7[0x24]) {
                    /* WARNING: Subroutine does not return */
            FUN_00069d00("../../gold/output.h",0x107b,"do_load_address");
          }
          lVar15 = *(longlong *)(piVar7 + 0xd);
        }
        else {
          lVar15 = (**(code **)(*piVar7 + 0x14))(piVar7);
        }
      }
      iVar8 = *piVar12;
      if (*(int *)(iVar8 + 0x24) != 0) {
        if (*(code **)(*piVar7 + 0x10) == FUN_000a4930) {
          bVar6 = *(byte *)(piVar7 + 0x24) >> 7;
        }
        else {
          bVar6 = (**(code **)(*piVar7 + 0x10))(piVar7);
        }
        if (bVar6 != 0) {
          iVar8 = piVar7[8];
          uVar9 = gettext("PHDRS load address overrides section %s load address");
          FUN_000654e0(uVar9,iVar8);
        }
        iVar8 = *piVar12;
        if (*(int *)(iVar8 + 0x24) == 0) {
                    /* WARNING: Subroutine does not return */
          FUN_00069d00("../../gold/script-sections.cc",0xc6b,"load_address");
        }
        lVar15 = *(longlong *)(iVar8 + 0x28);
      }
      local_40 = (uint)((ulonglong)lVar15 >> 0x20);
      local_44 = (uint)lVar15;
      if (*(char *)(iVar8 + 0x1c) == '\0') {
        if (*(char *)(iVar8 + 0x1d) != '\0') goto LAB_0015d714;
      }
      else if (*(char *)(iVar8 + 0x1d) == '\0') {
LAB_0015d714:
        uVar9 = gettext("using only one of FILEHDR and PHDRS is not currently supported");
        FUN_000654b0(uVar9);
      }
      else {
        uVar9 = FUN_0015ce10(param_1,param_2);
        lVar14 = FUN_0015cea0(param_1,lVar15,uVar9);
        uVar11 = (uint)((ulonglong)lVar14 >> 0x20);
        uVar10 = (uint)lVar14;
        lVar4 = lVar15;
        if (local_48 < local_40 || local_48 - local_40 < (uint)(local_4c < local_44)) {
          lVar4 = lVar5;
        }
        uVar3 = (uint)((ulonglong)lVar4 >> 0x20);
        if (uVar3 < uVar11 || uVar3 - uVar11 < (uint)((uint)lVar4 < uVar10)) {
          uVar9 = gettext(
                         "sections loaded on first page without room for file and program headers are not supported"
                         );
          FUN_000654b0(uVar9);
        }
        else {
          lVar15 = lVar15 - lVar14;
          bVar13 = local_4c < uVar10;
          local_4c = local_4c - uVar10;
          local_48 = (local_48 - uVar11) - (uint)bVar13;
        }
        bVar13 = local_24 != 0;
        local_24 = iVar2;
        if (bVar13) {
          uVar9 = gettext(
                         "using FILEHDR and PHDRS on more than one PT_LOAD segment is not currently supported"
                         );
          FUN_000654b0(uVar9);
        }
      }
      piVar12 = piVar12 + 1;
      *(byte *)(iVar2 + 0x19c) = *(byte *)(iVar2 + 0x19c) | 2;
      *(uint *)(iVar2 + 0x160) = local_48;
      *(uint *)(iVar2 + 0x15c) = local_4c;
      piVar7 = *(int **)(param_1 + 0x10);
      *(longlong *)(iVar2 + 0x164) = lVar15;
    } while ((int *)piVar7[1] != piVar12);
  }
  return local_24;
}

