
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void do_write(Mips_output_section_options<64,_true> * this, Output_file
   * of) */

void __thiscall
anon_unknown.dwarf_d7d43e::Mips_output_section_options<64,_true>::do_write
          (Mips_output_section_options<64,_true> *this,Output_file *of)

{
  uchar uVar1;
  int iVar2;
  Target_mips<64,_true> *pTVar3;
  Sized_symbol<64> *pSVar4;
  char *pcVar5;
  uint uVar6;
  int iVar7;
  uchar *puVar8;
  char *format;
  uchar *puVar9;
  byte bVar10;
  int iVar11;
  uint uVar12;
  uint uVar13;
  
  bVar10 = (this->super_Output_section).super_Output_data.field_0x1c;
  if ((bVar10 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");
  }
  iVar11 = *(int *)((int)&(this->super_Output_section).super_Output_data.offset_ + 4);
  uVar12 = (uint)(this->super_Output_section).super_Output_data.offset_;
  if ((bVar10 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
  }
  uVar13 = (uint)(this->super_Output_section).super_Output_data.data_size_;
  if (*(int *)((int)&(this->super_Output_section).super_Output_data.data_size_ + 4) != 0) {
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");
  }
  if ((-1 < iVar11) &&
     (iVar2 = *(int *)((int)&of->file_size_ + 4), iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12),
     uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,
     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0)) {
    puVar8 = of->base_ + uVar12;
    puVar9 = puVar8 + uVar13;
    if (puVar9 < puVar8 + 8) {
      return;
    }
    bVar10 = puVar8[1];
    uVar1 = *puVar8;
    if (7 < bVar10) {
      pTVar3 = this->target_;
      do {
        if (uVar1 == '\x01') {
          pSVar4 = pTVar3->gp_;
          if (pSVar4 == (Sized_symbol<64> *)0x0) {
            uVar13 = 0;
            uVar12 = 0;
          }
          else {
            uVar12 = (uint)pSVar4->value_;
            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);
            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                     uVar12 << 0x18;
            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |
                     uVar13 << 0x18;
          }
          *(uint *)(puVar8 + 0x20) = uVar13;
          *(uint *)(puVar8 + 0x24) = uVar12;
        }
        if (puVar9 < puVar8 + bVar10 + 8) {
          return;
        }
        puVar8 = puVar8 + bVar10;
        bVar10 = puVar8[1];
        uVar1 = *puVar8;
      } while (7 < bVar10);
    }
    pcVar5 = (this->super_Output_section).name_;
    format = (char *)gettext(
                            "Warning: bad `%s\' option size %u smaller than its header in output section"
                            );
    gold::gold_error(format,pcVar5,(uint)bVar10);
    return;
  }
                    /* WARNING: Subroutine does not return */
  gold::do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");
}



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

void FUN_00171d40(int param_1,int param_2)

{
  char cVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  char *pcVar6;
  undefined4 uVar7;
  undefined4 in_ECX;
  char *pcVar8;
  byte bVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  
  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);
  }
  uVar11 = *(uint *)(param_1 + 0x14);
  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);
  }
  uVar12 = *(uint *)(param_1 + 0xc);
  if (*(int *)(param_1 + 0x10) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));
  }
  uVar5 = uVar12;
  if ((-1 < *(int *)(param_1 + 0x18)) &&
     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),
     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,
     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0
     )) {
    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);
    pcVar8 = pcVar6 + uVar12;
    if (pcVar8 < pcVar6 + 8) {
      return;
    }
    bVar9 = pcVar6[1];
    cVar1 = *pcVar6;
    if (7 < bVar9) {
      iVar4 = *(int *)(param_1 + 0xe8);
      do {
        if (cVar1 == '\x01') {
          iVar10 = *(int *)(iVar4 + 0x18);
          if (iVar10 == 0) {
            uVar12 = 0;
            uVar11 = 0;
          }
          else {
            uVar11 = *(uint *)(iVar10 + 0x30);
            uVar12 = *(uint *)(iVar10 + 0x34);
            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                     uVar11 << 0x18;
            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                     uVar12 << 0x18;
          }
          *(uint *)(pcVar6 + 0x20) = uVar12;
          *(uint *)(pcVar6 + 0x24) = uVar11;
        }
        if (pcVar8 < pcVar6 + bVar9 + 8) {
          return;
        }
        pcVar6 = pcVar6 + bVar9;
        bVar9 = pcVar6[1];
        cVar1 = *pcVar6;
      } while (7 < bVar9);
    }
    uVar2 = *(undefined4 *)(param_1 + 0x20);
    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");
    FUN_0023b810(uVar7,uVar2,bVar9);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);
}


CALL 0x00074f02
ADD EAX,0x4782bb
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x30]
MOV EBX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [EAX + 0x1c]
TEST AL,0x4
JZ 0x00171eaf
MOV EDI,dword ptr [ESP + 0x30]
MOV EBP,dword ptr [EDI + 0x18]
MOV EDI,dword ptr [EDI + 0x14]
TEST AL,0x2
JZ 0x00171e92
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX + 0xc]
MOV ECX,EAX
TEST EDX,EDX
JNZ 0x00171e75
TEST EBP,EBP
JS 0x00171e5b
ADD EAX,EDI
MOV ESI,dword ptr [EBX + 0xc]
ADC EDX,EBP
CMP dword ptr [EBX + 0x8],EAX
SBB ESI,EDX
JL 0x00171e5b
MOV EAX,dword ptr [EBX + 0x10]
ADD EAX,EDI
ADD ECX,EAX
LEA EDX,[EAX + 0x8]
CMP ECX,EDX
JC 0x00171e0a
MOVZX EDX,byte ptr [EAX + 0x1]
MOVZX EBX,byte ptr [EAX]
CMP DL,0x7
JBE 0x00171e20
MOV EDI,dword ptr [ESP + 0x30]
MOV EBP,dword ptr [EDI + 0xe8]
JMP 0x00171de5
ADD EAX,EDX
LEA EDX,[EAX + 0x8]
CMP ECX,EDX
JC 0x00171e0a
MOVZX EDX,byte ptr [EAX + 0x1]
MOVZX EBX,byte ptr [EAX]
CMP DL,0x7
JBE 0x00171e20
CMP BL,0x1
JNZ 0x00171dd0
MOV ESI,dword ptr [EBP + 0x18]
TEST ESI,ESI
JZ 0x00171e18
MOV EBX,dword ptr [ESI + 0x30]
MOV ESI,dword ptr [ESI + 0x34]
BSWAP EBX
BSWAP ESI
MOV dword ptr [EAX + 0x20],ESI
MOV dword ptr [EAX + 0x24],EBX
ADD EAX,EDX
LEA EDX,[EAX + 0x8]
CMP ECX,EDX
JNC 0x00171dd9
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR ESI,ESI
XOR EBX,EBX
JMP 0x00171dfb
MOV EAX,dword ptr [ESP + 0x30]
MOV byte ptr [ESP + 0xf],DL
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [EAX + 0x20]
LEA EAX,[EDI + 0xffe875ac]
MOV EBX,EDI
PUSH EAX
CALL 0x00039440
ADD ESP,0xc
MOVZX EDX,byte ptr [ESP + 0x13]
PUSH EDX
PUSH ESI
PUSH EAX
CALL 0x0023b810
ADD ESP,0x10
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0xffe905a4]
PUSH EAX
LEA EAX,[EBX + 0xffe6335d]
PUSH 0x6f
PUSH EAX
CALL 0x002446e0
PUSH EDX
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0xffe90554]
PUSH EAX
LEA EAX,[EBX + 0xffe634b4]
PUSH 0xc0
PUSH EAX
CALL 0x002446e0
PUSH ECX
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0xffe90cd0]
PUSH EAX
LEA EAX,[EBX + 0xffe6335d]
PUSH 0xcf
PUSH EAX
CALL 0x002446e0
PUSH EBX
MOV EBX,dword ptr [ESP + 0xc]
LEA EAX,[EBX + 0xffe905b4]
PUSH EAX
LEA EAX,[EBX + 0xffe6335d]
PUSH 0xe3
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00171d40(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined4 uVar7;\n  undefined4 in_ECX;\n  char *pcVar8;\n  byte bVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }\n  uVar11 = *(uint *)(param_1 + 0x14);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }\n  uVar12 = *(uint *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0x10) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }\n  uVar5 = uVar12;\n  if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);\n}\n\n" comment (function_definition "void FUN_00171d40(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined4 uVar7;\n  undefined4 in_ECX;\n  char *pcVar8;\n  byte bVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }\n  uVar11 = *(uint *)(param_1 + 0x14);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }\n  uVar12 = *(uint *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0x10) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }\n  uVar5 = uVar12;\n  if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);\n}" primitive_type (function_declarator "FUN_00171d40(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined4 uVar7;\n  undefined4 in_ECX;\n  char *pcVar8;\n  byte bVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }\n  uVar11 = *(uint *)(param_1 + 0x14);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }\n  uVar12 = *(uint *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0x10) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }\n  uVar5 = uVar12;\n  if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 in_ECX;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }" { comment (expression_statement "FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);" (call_expression "FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2)" identifier (argument_list "("../../gold/output.h",0xe3,"offset",param_2)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar11 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x14)" identifier = (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }" { comment (expression_statement "FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);" (call_expression "FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX)" identifier (argument_list "("../../gold/output.h",0xcf,"data_size",in_ECX)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar12 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar12 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x10) != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0)" ( (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }" { comment (expression_statement "FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));" (call_expression "FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10))" identifier (argument_list "("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10))" ( (string_literal ""../../gold/gold.h"" " string_content ") , number_literal , (string_literal ""convert_types"" " string_content ") , (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ))) ;) })) (expression_statement "uVar5 = uVar12;" (assignment_expression "uVar5 = uVar12" identifier = identifier) ;) (if_statement "if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }" if (parenthesized_expression "((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     ))" ( (binary_expression "(-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )" (parenthesized_expression "(-1 < *(int *)(param_1 + 0x18))" ( (binary_expression "-1 < *(int *)(param_1 + 0x18)" number_literal < (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) && (parenthesized_expression "(uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )" ( (comma_expression "uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "uVar5 = uVar12 + uVar11" identifier = (binary_expression "uVar12 + uVar11" identifier + identifier)) , (comma_expression "iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11)" identifier = (binary_expression "*(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11)" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar12,uVar11)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar12,uVar11)" identifier (argument_list "(uVar12,uVar11)" ( identifier , identifier )))))) , (comma_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < uVar5)" ( (binary_expression "*(uint *)(param_2 + 8) < uVar5" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) < identifier) )))) , (comma_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar10" identifier = (binary_expression "*(int *)(param_2 + 0xc) - iVar10" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) - identifier)) , (binary_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3))" ( (binary_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar10)" identifier (argument_list "(*(int *)(param_2 + 0xc),iVar10)" ( (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar4,uVar3)" identifier (argument_list "(iVar4,uVar3)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar4 - uVar3) < 0" (cast_expression "(int)(iVar4 - uVar3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar4 - uVar3)" ( (binary_expression "iVar4 - uVar3" identifier - identifier) ))) < number_literal)))))) ))) )) (compound_statement "{\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }" { (expression_statement "pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);" (assignment_expression "pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11)" identifier = (cast_expression "(char *)(*(int *)(param_2 + 0x10) + uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x10) + uVar11)" ( (binary_expression "*(int *)(param_2 + 0x10) + uVar11" (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "pcVar8 = pcVar6 + uVar12;" (assignment_expression "pcVar8 = pcVar6 + uVar12" identifier = (binary_expression "pcVar6 + uVar12" identifier + identifier)) ;) (if_statement "if (pcVar8 < pcVar6 + 8) {\n      return;\n    }" if (parenthesized_expression "(pcVar8 < pcVar6 + 8)" ( (binary_expression "pcVar8 < pcVar6 + 8" identifier < (binary_expression "pcVar6 + 8" identifier + number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "bVar9 = pcVar6[1];" (assignment_expression "bVar9 = pcVar6[1]" identifier = (subscript_expression "pcVar6[1]" identifier [ number_literal ])) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (if_statement "if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }" if (parenthesized_expression "(7 < bVar9)" ( (binary_expression "7 < bVar9" number_literal < identifier) )) (compound_statement "{\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }" { (expression_statement "iVar4 = *(int *)(param_1 + 0xe8);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xe8)" identifier = (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (do_statement "do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);" do (compound_statement "{\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      }" { (if_statement "if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }" if (parenthesized_expression "(cVar1 == '\x01')" ( (binary_expression "cVar1 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }" { (expression_statement "iVar10 = *(int *)(iVar4 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar4 + 0x18)" identifier = (pointer_expression "*(int *)(iVar4 + 0x18)" * (cast_expression "(int *)(iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar12 = 0;\n            uVar11 = 0;\n          }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" else (compound_statement "{\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" { (expression_statement "uVar11 = *(uint *)(iVar10 + 0x30);" (assignment_expression "uVar11 = *(uint *)(iVar10 + 0x30)" identifier = (pointer_expression "*(uint *)(iVar10 + 0x30)" * (cast_expression "(uint *)(iVar10 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = *(uint *)(iVar10 + 0x34);" (assignment_expression "uVar12 = *(uint *)(iVar10 + 0x34)" identifier = (pointer_expression "*(uint *)(iVar10 + 0x34)" * (cast_expression "(uint *)(iVar10 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x34)" ( (binary_expression "iVar10 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) }))) (expression_statement "*(uint *)(pcVar6 + 0x20) = uVar12;" (assignment_expression "*(uint *)(pcVar6 + 0x20) = uVar12" (pointer_expression "*(uint *)(pcVar6 + 0x20)" * (cast_expression "(uint *)(pcVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 0x20)" ( (binary_expression "pcVar6 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(pcVar6 + 0x24) = uVar11;" (assignment_expression "*(uint *)(pcVar6 + 0x24) = uVar11" (pointer_expression "*(uint *)(pcVar6 + 0x24)" * (cast_expression "(uint *)(pcVar6 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 0x24)" ( (binary_expression "pcVar6 + 0x24" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }" if (parenthesized_expression "(pcVar8 < pcVar6 + bVar9 + 8)" ( (binary_expression "pcVar8 < pcVar6 + bVar9 + 8" identifier < (binary_expression "pcVar6 + bVar9 + 8" (binary_expression "pcVar6 + bVar9" identifier + identifier) + number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "pcVar6 = pcVar6 + bVar9;" (assignment_expression "pcVar6 = pcVar6 + bVar9" identifier = (binary_expression "pcVar6 + bVar9" identifier + identifier)) ;) (expression_statement "bVar9 = pcVar6[1];" (assignment_expression "bVar9 = pcVar6[1]" identifier = (subscript_expression "pcVar6[1]" identifier [ number_literal ])) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) }) while (parenthesized_expression "(7 < bVar9)" ( (binary_expression "7 < bVar9" number_literal < identifier) )) ;) })) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0x20);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0x20)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");" (assignment_expression "uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section")" identifier = (call_expression "gettext("Warning: bad `%s\' option size %u smaller than its header in output section")" identifier (argument_list "("Warning: bad `%s\' option size %u smaller than its header in output section")" ( (string_literal ""Warning: bad `%s\' option size %u smaller than its header in output section"" " string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_0023b810(uVar7,uVar2,bVar9);" (call_expression "FUN_0023b810(uVar7,uVar2,bVar9)" identifier (argument_list "(uVar7,uVar2,bVar9)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);" (call_expression "FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5)" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view",uVar5)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void do_write(Mips_output_section_options<64,_true> * this, Output_file\n   * of) */\n\nvoid __thiscall\nanon_unknown.dwarf_d7d43e::Mips_output_section_options<64,_true>::do_write\n          (Mips_output_section_options<64,_true> *this,Output_file *of)\n\n{\n  uchar uVar1;\n  int iVar2;\n  Target_mips<64,_true> *pTVar3;\n  Sized_symbol<64> *pSVar4;\n  char *pcVar5;\n  uint uVar6;\n  int iVar7;\n  uchar *puVar8;\n  char *format;\n  uchar *puVar9;\n  byte bVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  \n  bVar10 = (this->super_Output_section).super_Output_data.field_0x1c;\n  if ((bVar10 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  iVar11 = *(int *)((int)&(this->super_Output_section).super_Output_data.offset_ + 4);\n  uVar12 = (uint)(this->super_Output_section).super_Output_data.offset_;\n  if ((bVar10 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }\n  uVar13 = (uint)(this->super_Output_section).super_Output_data.data_size_;\n  if (*(int *)((int)&(this->super_Output_section).super_Output_data.data_size_ + 4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n  }\n  if ((-1 < iVar11) &&\n     (iVar2 = *(int *)((int)&of->file_size_ + 4), iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12),\n     uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0)) {\n    puVar8 = of->base_ + uVar12;\n    puVar9 = puVar8 + uVar13;\n    if (puVar9 < puVar8 + 8) {\n      return;\n    }\n    bVar10 = puVar8[1];\n    uVar1 = *puVar8;\n    if (7 < bVar10) {\n      pTVar3 = this->target_;\n      do {\n        if (uVar1 == '\x01') {\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }\n        if (puVar9 < puVar8 + bVar10 + 8) {\n          return;\n        }\n        puVar8 = puVar8 + bVar10;\n        bVar10 = puVar8[1];\n        uVar1 = *puVar8;\n      } while (7 < bVar10);\n    }\n    pcVar5 = (this->super_Output_section).name_;\n    format = (char *)gettext(\n                            "Warning: bad `%s\' option size %u smaller than its header in output section"\n                            );\n    gold::gold_error(format,pcVar5,(uint)bVar10);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n}\n\n" comment comment comment (declaration "void __thiscall\nanon_unknown.dwarf_d7d43e::Mips_output_section_options<64,_true>::do_write\n          (Mips_output_section_options<64,_true> *this,Output_file *of)\n\n{\n  uchar uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_d7d43e::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::do_write\n          (Mips_output_section_options<64,_true> *this,Output_file *of)\n\n{\n  uchar" identifier > : : (function_declarator "do_write\n          (Mips_output_section_options<64,_true> *this,Output_file *of)" identifier (parameter_list "(Mips_output_section_options<64,_true> *this,Output_file *of)" ( (parameter_declaration "Mips_output_section_options" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) { identifier) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "Target_mips<64,_true> *pTVar3;" (update_expression "Target_mips<64,_true> *pTVar3" (binary_expression "Target_mips<64,_true> *pTVar3" (binary_expression "Target_mips<64" identifier < number_literal) (ERROR ",_true" , identifier) > (pointer_expression "*pTVar3" * identifier)) --) ;) (expression_statement "Sized_symbol<64> *pSVar4;" (update_expression "Sized_symbol<64> *pSVar4" (binary_expression "Sized_symbol<64> *pSVar4" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*pSVar4" * identifier)) --) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uchar *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "uchar *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (expression_statement "bVar10 = (this->super_Output_section).super_Output_data.field_0x1c;" (assignment_expression "bVar10 = (this->super_Output_section).super_Output_data.field_0x1c" identifier = (field_expression "(this->super_Output_section).super_Output_data.field_0x1c" (field_expression "(this->super_Output_section).super_Output_data" (parenthesized_expression "(this->super_Output_section)" ( (field_expression "this->super_Output_section" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((bVar10 & 4) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((bVar10 & 4) == 0)" ( (binary_expression "(bVar10 & 4) == 0" (parenthesized_expression "(bVar10 & 4)" ( (binary_expression "bVar10 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0xe3,"offset");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (expression_statement "iVar11 = *(int *)((int)&(this->super_Output_section).super_Output_data.offset_ + 4);" (assignment_expression "iVar11 = *(int *)((int)&(this->super_Output_section).super_Output_data.offset_ + 4)" identifier = (pointer_expression "*(int *)((int)&(this->super_Output_section).super_Output_data.offset_ + 4)" * (cast_expression "(int *)((int)&(this->super_Output_section).super_Output_data.offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_section).super_Output_data.offset_ + 4)" ( (binary_expression "(int)&(this->super_Output_section).super_Output_data.offset_ + 4" (cast_expression "(int)&(this->super_Output_section).super_Output_data.offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_section).super_Output_data.offset_" & (field_expression "(this->super_Output_section).super_Output_data.offset_" (field_expression "(this->super_Output_section).super_Output_data" (parenthesized_expression "(this->super_Output_section)" ( (field_expression "this->super_Output_section" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar12 = (uint)(this->super_Output_section).super_Output_data.offset_;" (assignment_expression "uVar12 = (uint)(this->super_Output_section).super_Output_data.offset_" identifier = (field_expression "(uint)(this->super_Output_section).super_Output_data.offset_" (field_expression "(uint)(this->super_Output_section).super_Output_data" (call_expression "(uint)(this->super_Output_section)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_section)" ( (field_expression "this->super_Output_section" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) (if_statement "if ((bVar10 & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" if (parenthesized_expression "((bVar10 & 2) == 0)" ( (binary_expression "(bVar10 & 2) == 0" (parenthesized_expression "(bVar10 & 2)" ( (binary_expression "bVar10 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n  }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;)) })) (expression_statement "uVar13 = (uint)(this->super_Output_section).super_Output_data.data_size_;" (assignment_expression "uVar13 = (uint)(this->super_Output_section).super_Output_data.data_size_" identifier = (field_expression "(uint)(this->super_Output_section).super_Output_data.data_size_" (field_expression "(uint)(this->super_Output_section).super_Output_data" (call_expression "(uint)(this->super_Output_section)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_section)" ( (field_expression "this->super_Output_section" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) (if_statement "if (*(int *)((int)&(this->super_Output_section).super_Output_data.data_size_ + 4) != 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n  }" if (parenthesized_expression "(*(int *)((int)&(this->super_Output_section).super_Output_data.data_size_ + 4) != 0)" ( (binary_expression "*(int *)((int)&(this->super_Output_section).super_Output_data.data_size_ + 4) != 0" (pointer_expression "*(int *)((int)&(this->super_Output_section).super_Output_data.data_size_ + 4)" * (cast_expression "(int *)((int)&(this->super_Output_section).super_Output_data.data_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_section).super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&(this->super_Output_section).super_Output_data.data_size_ + 4" (cast_expression "(int)&(this->super_Output_section).super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_section).super_Output_data.data_size_" & (field_expression "(this->super_Output_section).super_Output_data.data_size_" (field_expression "(this->super_Output_section).super_Output_data" (parenthesized_expression "(this->super_Output_section)" ( (field_expression "this->super_Output_section" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + number_literal) )))) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");\n  }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types");" (call_expression "do_gold_unreachable("../../gold/gold.h",0xc0,"convert_types")" identifier (argument_list "("../../gold/gold.h",0xc0,"convert_types")" ( (string_literal ""../../gold/gold.h"" " string_content ") , number_literal , (string_literal ""convert_types"" " string_content ") ))) ;)) })) (if_statement "if ((-1 < iVar11) &&\n     (iVar2 = *(int *)((int)&of->file_size_ + 4), iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12),\n     uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0)) {\n    puVar8 = of->base_ + uVar12;\n    puVar9 = puVar8 + uVar13;\n    if (puVar9 < puVar8 + 8) {\n      return;\n    }\n    bVar10 = puVar8[1];\n    uVar1 = *puVar8;\n    if (7 < bVar10) {\n      pTVar3 = this->target_;\n      do {\n        if (uVar1 == '\x01') {\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }\n        if (puVar9 < puVar8 + bVar10 + 8) {\n          return;\n        }\n        puVar8 = puVar8 + bVar10;\n        bVar10 = puVar8[1];\n        uVar1 = *puVar8;\n      } while (7 < bVar10);\n    }\n    pcVar5 = (this->super_Output_section).name_;\n    format = (char *)gettext(\n                            "Warning: bad `%s\' option size %u smaller than its header in output section"\n                            );\n    gold::gold_error(format,pcVar5,(uint)bVar10);\n    return;\n  }" if (parenthesized_expression "((-1 < iVar11) &&\n     (iVar2 = *(int *)((int)&of->file_size_ + 4), iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12),\n     uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0))" ( (binary_expression "(-1 < iVar11) &&\n     (iVar2 = *(int *)((int)&of->file_size_ + 4), iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12),\n     uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0)" (parenthesized_expression "(-1 < iVar11)" ( (binary_expression "-1 < iVar11" number_literal < identifier) )) && (parenthesized_expression "(iVar2 = *(int *)((int)&of->file_size_ + 4), iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12),\n     uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0)" ( (comma_expression "iVar2 = *(int *)((int)&of->file_size_ + 4), iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12),\n     uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0" (assignment_expression "iVar2 = *(int *)((int)&of->file_size_ + 4)" identifier = (pointer_expression "*(int *)((int)&of->file_size_ + 4)" * (cast_expression "(int *)((int)&of->file_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&of->file_size_ + 4)" ( (binary_expression "(int)&of->file_size_ + 4" (cast_expression "(int)&of->file_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&of->file_size_" & (field_expression "of->file_size_" identifier -> field_identifier))) + number_literal) ))))) , (comma_expression "iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12),\n     uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0" (assignment_expression "iVar11 = iVar11 + (uint)CARRY4(uVar13,uVar12)" identifier = (binary_expression "iVar11 + (uint)CARRY4(uVar13,uVar12)" identifier + (cast_expression "(uint)CARRY4(uVar13,uVar12)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar13,uVar12)" identifier (argument_list "(uVar13,uVar12)" ( identifier , identifier )))))) , (comma_expression "uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12), iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0" (assignment_expression "uVar6 = (uint)((uint)of->file_size_ < uVar13 + uVar12)" identifier = (call_expression "(uint)((uint)of->file_size_ < uVar13 + uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)of->file_size_ < uVar13 + uVar12)" ( (binary_expression "(uint)of->file_size_ < uVar13 + uVar12" (cast_expression "(uint)of->file_size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "of->file_size_" identifier -> field_identifier)) < (binary_expression "uVar13 + uVar12" identifier + identifier)) )))) , (comma_expression "iVar7 = iVar2 - iVar11,\n     (SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0" (assignment_expression "iVar7 = iVar2 - iVar11" identifier = (binary_expression "iVar2 - iVar11" identifier - identifier)) , (binary_expression "(SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)) == (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4(iVar2,iVar11) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4(iVar2,iVar11)" identifier (argument_list "(iVar2,iVar11)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar7,uVar6)" identifier (argument_list "(iVar7,uVar6)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar7 - uVar6) < 0" (cast_expression "(int)(iVar7 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar6)" ( (binary_expression "iVar7 - uVar6" identifier - identifier) ))) < number_literal)))))) ))) )) (compound_statement "{\n    puVar8 = of->base_ + uVar12;\n    puVar9 = puVar8 + uVar13;\n    if (puVar9 < puVar8 + 8) {\n      return;\n    }\n    bVar10 = puVar8[1];\n    uVar1 = *puVar8;\n    if (7 < bVar10) {\n      pTVar3 = this->target_;\n      do {\n        if (uVar1 == '\x01') {\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }\n        if (puVar9 < puVar8 + bVar10 + 8) {\n          return;\n        }\n        puVar8 = puVar8 + bVar10;\n        bVar10 = puVar8[1];\n        uVar1 = *puVar8;\n      } while (7 < bVar10);\n    }\n    pcVar5 = (this->super_Output_section).name_;\n    format = (char *)gettext(\n                            "Warning: bad `%s\' option size %u smaller than its header in output section"\n                            );\n    gold::gold_error(format,pcVar5,(uint)bVar10);\n    return;\n  }" { (expression_statement "puVar8 = of->base_ + uVar12;" (assignment_expression "puVar8 = of->base_ + uVar12" identifier = (binary_expression "of->base_ + uVar12" (field_expression "of->base_" identifier -> field_identifier) + identifier)) ;) (expression_statement "puVar9 = puVar8 + uVar13;" (assignment_expression "puVar9 = puVar8 + uVar13" identifier = (binary_expression "puVar8 + uVar13" identifier + identifier)) ;) (if_statement "if (puVar9 < puVar8 + 8) {\n      return;\n    }" if (parenthesized_expression "(puVar9 < puVar8 + 8)" ( (binary_expression "puVar9 < puVar8 + 8" identifier < (binary_expression "puVar8 + 8" identifier + number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "bVar10 = puVar8[1];" (assignment_expression "bVar10 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = *puVar8;" (assignment_expression "uVar1 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (if_statement "if (7 < bVar10) {\n      pTVar3 = this->target_;\n      do {\n        if (uVar1 == '\x01') {\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }\n        if (puVar9 < puVar8 + bVar10 + 8) {\n          return;\n        }\n        puVar8 = puVar8 + bVar10;\n        bVar10 = puVar8[1];\n        uVar1 = *puVar8;\n      } while (7 < bVar10);\n    }" if (parenthesized_expression "(7 < bVar10)" ( (binary_expression "7 < bVar10" number_literal < identifier) )) (compound_statement "{\n      pTVar3 = this->target_;\n      do {\n        if (uVar1 == '\x01') {\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }\n        if (puVar9 < puVar8 + bVar10 + 8) {\n          return;\n        }\n        puVar8 = puVar8 + bVar10;\n        bVar10 = puVar8[1];\n        uVar1 = *puVar8;\n      } while (7 < bVar10);\n    }" { (expression_statement "pTVar3 = this->target_;" (assignment_expression "pTVar3 = this->target_" identifier = (field_expression "this->target_" identifier -> field_identifier)) ;) (do_statement "do {\n        if (uVar1 == '\x01') {\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }\n        if (puVar9 < puVar8 + bVar10 + 8) {\n          return;\n        }\n        puVar8 = puVar8 + bVar10;\n        bVar10 = puVar8[1];\n        uVar1 = *puVar8;\n      } while (7 < bVar10);" do (compound_statement "{\n        if (uVar1 == '\x01') {\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }\n        if (puVar9 < puVar8 + bVar10 + 8) {\n          return;\n        }\n        puVar8 = puVar8 + bVar10;\n        bVar10 = puVar8[1];\n        uVar1 = *puVar8;\n      }" { (if_statement "if (uVar1 == '\x01') {\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }" if (parenthesized_expression "(uVar1 == '\x01')" ( (binary_expression "uVar1 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          pSVar4 = pTVar3->gp_;\n          if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }\n          *(uint *)(puVar8 + 0x20) = uVar13;\n          *(uint *)(puVar8 + 0x24) = uVar12;\n        }" { (expression_statement "pSVar4 = pTVar3->gp_;" (assignment_expression "pSVar4 = pTVar3->gp_" identifier = (field_expression "pTVar3->gp_" identifier -> field_identifier)) ;) (if_statement "if (pSVar4 == (Sized_symbol<64> *)0x0) {\n            uVar13 = 0;\n            uVar12 = 0;\n          }\n          else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }" if (parenthesized_expression "(pSVar4 == (Sized_symbol<64> *)0x0)" ( (binary_expression "pSVar4 == (Sized_symbol<64> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<64> *)0x0)" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n            uVar13 = 0;\n            uVar12 = 0;\n          }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }" else (compound_statement "{\n            uVar12 = (uint)pSVar4->value_;\n            uVar13 = *(uint *)((int)&pSVar4->value_ + 4);\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n            uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;\n          }" { (expression_statement "uVar12 = (uint)pSVar4->value_;" (assignment_expression "uVar12 = (uint)pSVar4->value_" identifier = (cast_expression "(uint)pSVar4->value_" ( (type_descriptor "uint" type_identifier) ) (field_expression "pSVar4->value_" identifier -> field_identifier))) ;) (expression_statement "uVar13 = *(uint *)((int)&pSVar4->value_ + 4);" (assignment_expression "uVar13 = *(uint *)((int)&pSVar4->value_ + 4)" identifier = (pointer_expression "*(uint *)((int)&pSVar4->value_ + 4)" * (cast_expression "(uint *)((int)&pSVar4->value_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSVar4->value_ + 4)" ( (binary_expression "(int)&pSVar4->value_ + 4" (cast_expression "(int)&pSVar4->value_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSVar4->value_" & (field_expression "pSVar4->value_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18;" (assignment_expression "uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18" identifier = (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 |\n                     uVar13 << 0x18" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8" (binary_expression "uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8" (binary_expression "uVar13 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar13 & 0xff0000) >> 8" (parenthesized_expression "(uVar13 & 0xff0000)" ( (binary_expression "uVar13 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar13 & 0xff00) << 8" (parenthesized_expression "(uVar13 & 0xff00)" ( (binary_expression "uVar13 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar13 << 0x18" identifier << number_literal))) ;) }))) (expression_statement "*(uint *)(puVar8 + 0x20) = uVar13;" (assignment_expression "*(uint *)(puVar8 + 0x20) = uVar13" (pointer_expression "*(uint *)(puVar8 + 0x20)" * (cast_expression "(uint *)(puVar8 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x20)" ( (binary_expression "puVar8 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar8 + 0x24) = uVar12;" (assignment_expression "*(uint *)(puVar8 + 0x24) = uVar12" (pointer_expression "*(uint *)(puVar8 + 0x24)" * (cast_expression "(uint *)(puVar8 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x24)" ( (binary_expression "puVar8 + 0x24" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (puVar9 < puVar8 + bVar10 + 8) {\n          return;\n        }" if (parenthesized_expression "(puVar9 < puVar8 + bVar10 + 8)" ( (binary_expression "puVar9 < puVar8 + bVar10 + 8" identifier < (binary_expression "puVar8 + bVar10 + 8" (binary_expression "puVar8 + bVar10" identifier + identifier) + number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "puVar8 = puVar8 + bVar10;" (assignment_expression "puVar8 = puVar8 + bVar10" identifier = (binary_expression "puVar8 + bVar10" identifier + identifier)) ;) (expression_statement "bVar10 = puVar8[1];" (assignment_expression "bVar10 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = *puVar8;" (assignment_expression "uVar1 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) }) while (parenthesized_expression "(7 < bVar10)" ( (binary_expression "7 < bVar10" number_literal < identifier) )) ;) })) (expression_statement "pcVar5 = (this->super_Output_section).name_;" (assignment_expression "pcVar5 = (this->super_Output_section).name_" identifier = (field_expression "(this->super_Output_section).name_" (parenthesized_expression "(this->super_Output_section)" ( (field_expression "this->super_Output_section" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "format = (char *)gettext(\n                            "Warning: bad `%s\' option size %u smaller than its header in output section"\n                            );" (assignment_expression "format = (char *)gettext(\n                            "Warning: bad `%s\' option size %u smaller than its header in output section"\n                            )" identifier = (cast_expression "(char *)gettext(\n                            "Warning: bad `%s\' option size %u smaller than its header in output section"\n                            )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(\n                            "Warning: bad `%s\' option size %u smaller than its header in output section"\n                            )" identifier (argument_list "(\n                            "Warning: bad `%s\' option size %u smaller than its header in output section"\n                            )" ( (string_literal ""Warning: bad `%s\' option size %u smaller than its header in output section"" " string_content escape_sequence string_content ") ))))) ;) (labeled_statement "gold::gold_error(format,pcVar5,(uint)bVar10);" statement_identifier : (ERROR ":" :) (expression_statement "gold_error(format,pcVar5,(uint)bVar10);" (call_expression "gold_error(format,pcVar5,(uint)bVar10)" identifier (argument_list "(format,pcVar5,(uint)bVar10)" ( identifier , identifier , (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;)) (return_statement "return;" return ;) })) comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");" (call_expression "do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view")" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") ))) ;)) (ERROR "}" }))
(translation_unit "void FUN_00171d40(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined4 uVar7;\n  undefined4 in_ECX;\n  char *pcVar8;\n  byte bVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }\n  uVar11 = *(uint *)(param_1 + 0x14);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }\n  uVar12 = *(uint *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }\n  uVar5 = uVar12;\n  if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);\n}\n\n" (function_definition "void FUN_00171d40(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined4 uVar7;\n  undefined4 in_ECX;\n  char *pcVar8;\n  byte bVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }\n  uVar11 = *(uint *)(param_1 + 0x14);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }\n  uVar12 = *(uint *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }\n  uVar5 = uVar12;\n  if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);\n}" primitive_type (function_declarator "FUN_00171d40(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined4 uVar7;\n  undefined4 in_ECX;\n  char *pcVar8;\n  byte bVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }\n  uVar11 = *(uint *)(param_1 + 0x14);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }\n  uVar12 = *(uint *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }\n  uVar5 = uVar12;\n  if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 in_ECX;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }" { (expression_statement "FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);" (call_expression "FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2)" identifier (argument_list "("../../gold/output.h",0xe3,"offset",param_2)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar11 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x14)" identifier = (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" ( (binary_expression "*(byte *)(param_1 + 0x1c) & 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }" { (expression_statement "FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);" (call_expression "FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX)" identifier (argument_list "("../../gold/output.h",0xcf,"data_size",in_ECX)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar12 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar12 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0)" ( (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }" { (expression_statement "FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));" (call_expression "FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10))" identifier (argument_list "("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10))" ( (string_literal ""../../gold/gold.h"" " string_content ") , number_literal , (string_literal ""convert_types"" " string_content ") , (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ))) ;) })) (expression_statement "uVar5 = uVar12;" (assignment_expression "uVar5 = uVar12" identifier = identifier) ;) (if_statement "if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }" if (parenthesized_expression "((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     ))" ( (binary_expression "(-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )" (parenthesized_expression "(-1 < *(int *)(param_1 + 0x18))" ( (binary_expression "-1 < *(int *)(param_1 + 0x18)" number_literal < (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) )) && (parenthesized_expression "(uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )" ( (comma_expression "uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "uVar5 = uVar12 + uVar11" identifier = (binary_expression "uVar12 + uVar11" identifier + identifier)) , (comma_expression "iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11)" identifier = (binary_expression "*(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11)" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar12,uVar11)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar12,uVar11)" identifier (argument_list "(uVar12,uVar11)" ( identifier , identifier )))))) , (comma_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < uVar5)" ( (binary_expression "*(uint *)(param_2 + 8) < uVar5" (pointer_expression "*(uint *)(param_2 + 8)" * (cast_expression "(uint *)(param_2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) < identifier) )))) , (comma_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar10" identifier = (binary_expression "*(int *)(param_2 + 0xc) - iVar10" (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) - identifier)) , (binary_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3))" ( (binary_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar10)" identifier (argument_list "(*(int *)(param_2 + 0xc),iVar10)" ( (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar4,uVar3)" identifier (argument_list "(iVar4,uVar3)" ( identifier , identifier )))) )) == (binary_expression "(int)(iVar4 - uVar3) < 0" (cast_expression "(int)(iVar4 - uVar3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar4 - uVar3)" ( (binary_expression "iVar4 - uVar3" identifier - identifier) ))) < number_literal)))))) ))) )) (compound_statement "{\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }" { (expression_statement "pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);" (assignment_expression "pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11)" identifier = (cast_expression "(char *)(*(int *)(param_2 + 0x10) + uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0x10) + uVar11)" ( (binary_expression "*(int *)(param_2 + 0x10) + uVar11" (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "pcVar8 = pcVar6 + uVar12;" (assignment_expression "pcVar8 = pcVar6 + uVar12" identifier = (binary_expression "pcVar6 + uVar12" identifier + identifier)) ;) (if_statement "if (pcVar8 < pcVar6 + 8) {\n      return;\n    }" if (parenthesized_expression "(pcVar8 < pcVar6 + 8)" ( (binary_expression "pcVar8 < pcVar6 + 8" identifier < (binary_expression "pcVar6 + 8" identifier + number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "bVar9 = pcVar6[1];" (assignment_expression "bVar9 = pcVar6[1]" identifier = (subscript_expression "pcVar6[1]" identifier [ number_literal ])) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) (if_statement "if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }" if (parenthesized_expression "(7 < bVar9)" ( (binary_expression "7 < bVar9" number_literal < identifier) )) (compound_statement "{\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }" { (expression_statement "iVar4 = *(int *)(param_1 + 0xe8);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xe8)" identifier = (pointer_expression "*(int *)(param_1 + 0xe8)" * (cast_expression "(int *)(param_1 + 0xe8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) ))))) ;) (do_statement "do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);" do (compound_statement "{\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      }" { (if_statement "if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }" if (parenthesized_expression "(cVar1 == '\x01')" ( (binary_expression "cVar1 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }" { (expression_statement "iVar10 = *(int *)(iVar4 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar4 + 0x18)" identifier = (pointer_expression "*(int *)(iVar4 + 0x18)" * (cast_expression "(int *)(iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar12 = 0;\n            uVar11 = 0;\n          }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" else (compound_statement "{\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" { (expression_statement "uVar11 = *(uint *)(iVar10 + 0x30);" (assignment_expression "uVar11 = *(uint *)(iVar10 + 0x30)" identifier = (pointer_expression "*(uint *)(iVar10 + 0x30)" * (cast_expression "(uint *)(iVar10 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = *(uint *)(iVar10 + 0x34);" (assignment_expression "uVar12 = *(uint *)(iVar10 + 0x34)" identifier = (pointer_expression "*(uint *)(iVar10 + 0x34)" * (cast_expression "(uint *)(iVar10 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x34)" ( (binary_expression "iVar10 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" identifier = (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18" identifier = (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" ( (binary_expression "uVar12 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" ( (binary_expression "uVar12 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar12 << 0x18" identifier << number_literal))) ;) }))) (expression_statement "*(uint *)(pcVar6 + 0x20) = uVar12;" (assignment_expression "*(uint *)(pcVar6 + 0x20) = uVar12" (pointer_expression "*(uint *)(pcVar6 + 0x20)" * (cast_expression "(uint *)(pcVar6 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 0x20)" ( (binary_expression "pcVar6 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(pcVar6 + 0x24) = uVar11;" (assignment_expression "*(uint *)(pcVar6 + 0x24) = uVar11" (pointer_expression "*(uint *)(pcVar6 + 0x24)" * (cast_expression "(uint *)(pcVar6 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 0x24)" ( (binary_expression "pcVar6 + 0x24" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }" if (parenthesized_expression "(pcVar8 < pcVar6 + bVar9 + 8)" ( (binary_expression "pcVar8 < pcVar6 + bVar9 + 8" identifier < (binary_expression "pcVar6 + bVar9 + 8" (binary_expression "pcVar6 + bVar9" identifier + identifier) + number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "pcVar6 = pcVar6 + bVar9;" (assignment_expression "pcVar6 = pcVar6 + bVar9" identifier = (binary_expression "pcVar6 + bVar9" identifier + identifier)) ;) (expression_statement "bVar9 = pcVar6[1];" (assignment_expression "bVar9 = pcVar6[1]" identifier = (subscript_expression "pcVar6[1]" identifier [ number_literal ])) ;) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" identifier = (pointer_expression "*pcVar6" * identifier)) ;) }) while (parenthesized_expression "(7 < bVar9)" ( (binary_expression "7 < bVar9" number_literal < identifier) )) ;) })) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0x20);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0x20)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");" (assignment_expression "uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section")" identifier = (call_expression "gettext("Warning: bad `%s\' option size %u smaller than its header in output section")" identifier (argument_list "("Warning: bad `%s\' option size %u smaller than its header in output section")" ( (string_literal ""Warning: bad `%s\' option size %u smaller than its header in output section"" " string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_0023b810(uVar7,uVar2,bVar9);" (call_expression "FUN_0023b810(uVar7,uVar2,bVar9)" identifier (argument_list "(uVar7,uVar2,bVar9)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);" (call_expression "FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5)" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view",uVar5)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 ") , 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) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )))) , (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) }))) (expression_statement (assignment_expression (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) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression IDENT + IDENT) + LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })))
(function_definition "void FUN_00171d40(int param_1,int param_2)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined4 uVar7;\n  undefined4 in_ECX;\n  char *pcVar8;\n  byte bVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }\n  uVar11 = *(uint *)(param_1 + 0x14);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }\n  uVar12 = *(uint *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }\n  uVar5 = uVar12;\n  if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);\n}" (primitive_type "void") (function_declarator "FUN_00171d40(int param_1,int param_2)" (identifier "FUN_00171d40") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  undefined4 uVar7;\n  undefined4 in_ECX;\n  char *pcVar8;\n  byte bVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }\n  uVar11 = *(uint *)(param_1 + 0x14);\n  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }\n  uVar12 = *(uint *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }\n  uVar5 = uVar12;\n  if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }\n                    \n  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 in_ECX;" (type_identifier "undefined4") (identifier "in_ECX") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x1c) & 4" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);" (call_expression "FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2)" (identifier "FUN_002446e0") (argument_list "("../../gold/output.h",0xe3,"offset",param_2)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar11 = *(uint *)(param_1 + 0x14);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x14)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x1c) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(param_1 + 0x1c) & 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);" (call_expression "FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX)" (identifier "FUN_002446e0") (argument_list "("../../gold/output.h",0xcf,"data_size",in_ECX)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xcf") (, ",") (string_literal ""data_size"" (" """) (string_content "data_size") (" """)) (, ",") (identifier "in_ECX") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar12 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar12 = *(uint *)(param_1 + 0xc)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x10) != 0) {\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));" (call_expression "FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10))" (identifier "FUN_002446e0") (argument_list "("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10))" (( "(") (string_literal ""../../gold/gold.h"" (" """) (string_content "../../gold/gold.h") (" """)) (, ",") (number_literal "0xc0") (, ",") (string_literal ""convert_types"" (" """) (string_content "convert_types") (" """)) (, ",") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar5 = uVar12;" (assignment_expression "uVar5 = uVar12" (identifier "uVar5") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )) {\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }" (if "if") (parenthesized_expression "((-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     ))" (( "(") (binary_expression "(-1 < *(int *)(param_1 + 0x18)) &&\n     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )" (parenthesized_expression "(-1 < *(int *)(param_1 + 0x18))" (( "(") (binary_expression "-1 < *(int *)(param_1 + 0x18)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0\n     )" (( "(") (comma_expression "uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "uVar5 = uVar12 + uVar11" (identifier "uVar5") (= "=") (binary_expression "uVar12 + uVar11" (identifier "uVar12") (+ "+") (identifier "uVar11"))) (, ",") (comma_expression "iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),\n     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11)" (identifier "iVar10") (= "=") (binary_expression "*(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11)" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (cast_expression "(uint)CARRY4(uVar12,uVar11)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar12,uVar11)" (identifier "CARRY4") (argument_list "(uVar12,uVar11)" (( "(") (identifier "uVar12") (, ",") (identifier "uVar11") () ")")))))) (, ",") (comma_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5)" (identifier "uVar3") (= "=") (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_2 + 8) < uVar5)" (( "(") (binary_expression "*(uint *)(param_2 + 8) < uVar5" (pointer_expression "*(uint *)(param_2 + 8)" (* "*") (cast_expression "(uint *)(param_2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (< "<") (identifier "uVar5")) () ")")))) (, ",") (comma_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar10,\n     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (assignment_expression "iVar4 = *(int *)(param_2 + 0xc) - iVar10" (identifier "iVar4") (= "=") (binary_expression "*(int *)(param_2 + 0xc) - iVar10" (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (- "-") (identifier "iVar10"))) (, ",") (binary_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0" (parenthesized_expression "(SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3))" (( "(") (binary_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(*(int *)(param_2 + 0xc),iVar10)" (identifier "SBORROW4") (argument_list "(*(int *)(param_2 + 0xc),iVar10)" (( "(") (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar10") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar4,uVar3)" (identifier "SBORROW4") (argument_list "(iVar4,uVar3)" (( "(") (identifier "iVar4") (, ",") (identifier "uVar3") () ")")))) () ")")) (== "==") (binary_expression "(int)(iVar4 - uVar3) < 0" (cast_expression "(int)(iVar4 - uVar3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar4 - uVar3)" (( "(") (binary_expression "iVar4 - uVar3" (identifier "iVar4") (- "-") (identifier "uVar3")) () ")"))) (< "<") (number_literal "0"))))))) () ")"))) () ")")) (compound_statement "{\n    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);\n    pcVar8 = pcVar6 + uVar12;\n    if (pcVar8 < pcVar6 + 8) {\n      return;\n    }\n    bVar9 = pcVar6[1];\n    cVar1 = *pcVar6;\n    if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }\n    uVar2 = *(undefined4 *)(param_1 + 0x20);\n    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");\n    FUN_0023b810(uVar7,uVar2,bVar9);\n    return;\n  }" ({ "{") (expression_statement "pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);" (assignment_expression "pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11)" (identifier "pcVar6") (= "=") (cast_expression "(char *)(*(int *)(param_2 + 0x10) + uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x10) + uVar11)" (( "(") (binary_expression "*(int *)(param_2 + 0x10) + uVar11" (pointer_expression "*(int *)(param_2 + 0x10)" (* "*") (cast_expression "(int *)(param_2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "uVar11")) () ")")))) (; ";")) (expression_statement "pcVar8 = pcVar6 + uVar12;" (assignment_expression "pcVar8 = pcVar6 + uVar12" (identifier "pcVar8") (= "=") (binary_expression "pcVar6 + uVar12" (identifier "pcVar6") (+ "+") (identifier "uVar12"))) (; ";")) (if_statement "if (pcVar8 < pcVar6 + 8) {\n      return;\n    }" (if "if") (parenthesized_expression "(pcVar8 < pcVar6 + 8)" (( "(") (binary_expression "pcVar8 < pcVar6 + 8" (identifier "pcVar8") (< "<") (binary_expression "pcVar6 + 8" (identifier "pcVar6") (+ "+") (number_literal "8"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "bVar9 = pcVar6[1];" (assignment_expression "bVar9 = pcVar6[1]" (identifier "bVar9") (= "=") (subscript_expression "pcVar6[1]" (identifier "pcVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" (identifier "cVar1") (= "=") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) (; ";")) (if_statement "if (7 < bVar9) {\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }" (if "if") (parenthesized_expression "(7 < bVar9)" (( "(") (binary_expression "7 < bVar9" (number_literal "7") (< "<") (identifier "bVar9")) () ")")) (compound_statement "{\n      iVar4 = *(int *)(param_1 + 0xe8);\n      do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);\n    }" ({ "{") (expression_statement "iVar4 = *(int *)(param_1 + 0xe8);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xe8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0xe8)" (* "*") (cast_expression "(int *)(param_1 + 0xe8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")"))))) (; ";")) (do_statement "do {\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      } while (7 < bVar9);" (do "do") (compound_statement "{\n        if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }\n        if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }\n        pcVar6 = pcVar6 + bVar9;\n        bVar9 = pcVar6[1];\n        cVar1 = *pcVar6;\n      }" ({ "{") (if_statement "if (cVar1 == '\x01') {\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }" (if "if") (parenthesized_expression "(cVar1 == '\x01')" (( "(") (binary_expression "cVar1 == '\x01'" (identifier "cVar1") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n          iVar10 = *(int *)(iVar4 + 0x18);\n          if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }\n          *(uint *)(pcVar6 + 0x20) = uVar12;\n          *(uint *)(pcVar6 + 0x24) = uVar11;\n        }" ({ "{") (expression_statement "iVar10 = *(int *)(iVar4 + 0x18);" (assignment_expression "iVar10 = *(int *)(iVar4 + 0x18)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar4 + 0x18)" (* "*") (cast_expression "(int *)(iVar4 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (iVar10 == 0) {\n            uVar12 = 0;\n            uVar11 = 0;\n          }\n          else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar12 = 0;\n            uVar11 = 0;\n          }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" (else "else") (compound_statement "{\n            uVar11 = *(uint *)(iVar10 + 0x30);\n            uVar12 = *(uint *)(iVar10 + 0x34);\n            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;\n            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;\n          }" ({ "{") (expression_statement "uVar11 = *(uint *)(iVar10 + 0x30);" (assignment_expression "uVar11 = *(uint *)(iVar10 + 0x30)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(iVar10 + 0x30)" (* "*") (cast_expression "(uint *)(iVar10 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x30)" (( "(") (binary_expression "iVar10 + 0x30" (identifier "iVar10") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar12 = *(uint *)(iVar10 + 0x34);" (assignment_expression "uVar12 = *(uint *)(iVar10 + 0x34)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(iVar10 + 0x34)" (* "*") (cast_expression "(uint *)(iVar10 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x34)" (( "(") (binary_expression "iVar10 + 0x34" (identifier "iVar10") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18;" (assignment_expression "uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" (identifier "uVar11") (= "=") (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |\n                     uVar11 << 0x18" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8" (binary_expression "uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8" (binary_expression "uVar11 >> 0x18" (identifier "uVar11") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar11 & 0xff0000) >> 8" (parenthesized_expression "(uVar11 & 0xff0000)" (( "(") (binary_expression "uVar11 & 0xff0000" (identifier "uVar11") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar11 & 0xff00) << 8" (parenthesized_expression "(uVar11 & 0xff00)" (( "(") (binary_expression "uVar11 & 0xff00" (identifier "uVar11") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar11 << 0x18" (identifier "uVar11") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18;" (assignment_expression "uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |\n                     uVar12 << 0x18" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8" (binary_expression "uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8" (binary_expression "uVar12 >> 0x18" (identifier "uVar12") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar12 & 0xff0000) >> 8" (parenthesized_expression "(uVar12 & 0xff0000)" (( "(") (binary_expression "uVar12 & 0xff0000" (identifier "uVar12") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar12 & 0xff00) << 8" (parenthesized_expression "(uVar12 & 0xff00)" (( "(") (binary_expression "uVar12 & 0xff00" (identifier "uVar12") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar12 << 0x18" (identifier "uVar12") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}")))) (expression_statement "*(uint *)(pcVar6 + 0x20) = uVar12;" (assignment_expression "*(uint *)(pcVar6 + 0x20) = uVar12" (pointer_expression "*(uint *)(pcVar6 + 0x20)" (* "*") (cast_expression "(uint *)(pcVar6 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar6 + 0x20)" (( "(") (binary_expression "pcVar6 + 0x20" (identifier "pcVar6") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(uint *)(pcVar6 + 0x24) = uVar11;" (assignment_expression "*(uint *)(pcVar6 + 0x24) = uVar11" (pointer_expression "*(uint *)(pcVar6 + 0x24)" (* "*") (cast_expression "(uint *)(pcVar6 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar6 + 0x24)" (( "(") (binary_expression "pcVar6 + 0x24" (identifier "pcVar6") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (} "}"))) (if_statement "if (pcVar8 < pcVar6 + bVar9 + 8) {\n          return;\n        }" (if "if") (parenthesized_expression "(pcVar8 < pcVar6 + bVar9 + 8)" (( "(") (binary_expression "pcVar8 < pcVar6 + bVar9 + 8" (identifier "pcVar8") (< "<") (binary_expression "pcVar6 + bVar9 + 8" (binary_expression "pcVar6 + bVar9" (identifier "pcVar6") (+ "+") (identifier "bVar9")) (+ "+") (number_literal "8"))) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar6 = pcVar6 + bVar9;" (assignment_expression "pcVar6 = pcVar6 + bVar9" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + bVar9" (identifier "pcVar6") (+ "+") (identifier "bVar9"))) (; ";")) (expression_statement "bVar9 = pcVar6[1];" (assignment_expression "bVar9 = pcVar6[1]" (identifier "bVar9") (= "=") (subscript_expression "pcVar6[1]" (identifier "pcVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "cVar1 = *pcVar6;" (assignment_expression "cVar1 = *pcVar6" (identifier "cVar1") (= "=") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(7 < bVar9)" (( "(") (binary_expression "7 < bVar9" (number_literal "7") (< "<") (identifier "bVar9")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 0x20);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 0x20)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");" (assignment_expression "uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section")" (identifier "uVar7") (= "=") (call_expression "gettext("Warning: bad `%s\' option size %u smaller than its header in output section")" (identifier "gettext") (argument_list "("Warning: bad `%s\' option size %u smaller than its header in output section")" (( "(") (string_literal ""Warning: bad `%s\' option size %u smaller than its header in output section"" (" """) (string_content "Warning: bad `%s") (escape_sequence "\'") (string_content " option size %u smaller than its header in output section") (" """)) () ")")))) (; ";")) (expression_statement "FUN_0023b810(uVar7,uVar2,bVar9);" (call_expression "FUN_0023b810(uVar7,uVar2,bVar9)" (identifier "FUN_0023b810") (argument_list "(uVar7,uVar2,bVar9)" (( "(") (identifier "uVar7") (, ",") (identifier "uVar2") (, ",") (identifier "bVar9") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);" (call_expression "FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5)" (identifier "FUN_002446e0") (argument_list "("../../gold/output.h",0x6f,"get_output_view",uVar5)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x6f") (, ",") (string_literal ""get_output_view"" (" """) (string_content "get_output_view") (" """)) (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void do_write(Mips_output_section_options<64,_true> * this, Output_file
   * of) */

void __thiscall
anon_unknown.dwarf_d7d43e::Mips_output_section_options<64,_true>::do_write
          (Mips_output_section_options<64,_true> *this,Output_file *of)

{
  type_2 var_15;
  int var_9;
  var_1<64,_true> *pTVar3;
  var_2<64> *var_16;
  char *pcVar5;
  type_1 var_12;
  int var_11;
  type_2 *var_13;
  char *format;
  type_2 *var_14;
  type_3 var_3;
  int var_5;
  type_1 var_8;
  type_1 var_7;
  
  var_3 = (this->super_Output_section).super_Output_data.field_0x1c;
  if ((var_3 & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    gold::var_4("../../gold/output.h",0xe3,"offset");
  }
  var_5 = *(int *)((int)&(this->super_Output_section).super_Output_data.offset_ + 4);
  var_8 = (type_1)(this->super_Output_section).super_Output_data.offset_;
  if ((var_3 & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    gold::var_4("../../gold/output.h",0xcf,"data_size");
  }
  var_7 = (type_1)(this->super_Output_section).super_Output_data.data_size_;
  if (*(int *)((int)&(this->super_Output_section).super_Output_data.data_size_ + 4) != 0) {
                    /* WARNING: Subroutine does not return */
    gold::var_4("../../gold/gold.h",0xc0,"convert_types");
  }
  if ((-1 < var_5) &&
     (var_9 = *(int *)((int)&of->file_size_ + 4), var_5 = var_5 + (type_1)var_6(var_7,var_8),
     var_12 = (type_1)((type_1)of->file_size_ < var_7 + var_8), var_11 = var_9 - var_5,
     (var_10(var_9,var_5) != var_10(var_11,var_12)) == (int)(var_11 - var_12) < 0)) {
    var_13 = of->base_ + var_8;
    var_14 = var_13 + var_7;
    if (var_14 < var_13 + 8) {
      return;
    }
    var_3 = var_13[1];
    var_15 = *var_13;
    if (7 < var_3) {
      pTVar3 = this->target_;
      do {
        if (var_15 == '\x01') {
          var_16 = pTVar3->gp_;
          if (var_16 == (var_2<64> *)0x0) {
            var_7 = 0;
            var_8 = 0;
          }
          else {
            var_8 = (type_1)var_16->value_;
            var_7 = *(type_1 *)((int)&var_16->value_ + 4);
            var_8 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 |
                     var_8 << 0x18;
            var_7 = var_7 >> 0x18 | (var_7 & 0xff0000) >> 8 | (var_7 & 0xff00) << 8 |
                     var_7 << 0x18;
          }
          *(type_1 *)(var_13 + 0x20) = var_7;
          *(type_1 *)(var_13 + 0x24) = var_8;
        }
        if (var_14 < var_13 + var_3 + 8) {
          return;
        }
        var_13 = var_13 + var_3;
        var_3 = var_13[1];
        var_15 = *var_13;
      } while (7 < var_3);
    }
    pcVar5 = (this->super_Output_section).name_;
    format = (char *)var_17(
                            "Warning: bad `%s\' option size %u smaller than its header in output section"
                            );
    gold::var_18(format,pcVar5,(type_1)var_3);
    return;
  }
                    /* WARNING: Subroutine does not return */
  gold::var_4("../../gold/output.h",0x6f,"get_output_view");
}


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

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

void MASKED(int param_1,int param_2)

{
  char cVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  char *pcVar6;
  undefined4 uVar7;
  undefined4 in_ECX;
  char *pcVar8;
  byte bVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  
  if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/output.h",0xe3,"offset",param_2);
  }
  uVar11 = *(uint *)(param_1 + 0x14);
  if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/output.h",0xcf,"data_size",in_ECX);
  }
  uVar12 = *(uint *)(param_1 + 0xc);
  if (*(int *)(param_1 + 0x10) != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/gold.h",0xc0,"convert_types",*(int *)(param_1 + 0x10));
  }
  uVar5 = uVar12;
  if ((-1 < *(int *)(param_1 + 0x18)) &&
     (uVar5 = uVar12 + uVar11, iVar10 = *(int *)(param_1 + 0x18) + (uint)CARRY4(uVar12,uVar11),
     uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar5), iVar4 = *(int *)(param_2 + 0xc) - iVar10,
     (SBORROW4(*(int *)(param_2 + 0xc),iVar10) != SBORROW4(iVar4,uVar3)) == (int)(iVar4 - uVar3) < 0
     )) {
    pcVar6 = (char *)(*(int *)(param_2 + 0x10) + uVar11);
    pcVar8 = pcVar6 + uVar12;
    if (pcVar8 < pcVar6 + 8) {
      return;
    }
    bVar9 = pcVar6[1];
    cVar1 = *pcVar6;
    if (7 < bVar9) {
      iVar4 = *(int *)(param_1 + 0xe8);
      do {
        if (cVar1 == '\x01') {
          iVar10 = *(int *)(iVar4 + 0x18);
          if (iVar10 == 0) {
            uVar12 = 0;
            uVar11 = 0;
          }
          else {
            uVar11 = *(uint *)(iVar10 + 0x30);
            uVar12 = *(uint *)(iVar10 + 0x34);
            uVar11 = uVar11 >> 0x18 | (uVar11 & 0xff0000) >> 8 | (uVar11 & 0xff00) << 8 |
                     uVar11 << 0x18;
            uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 |
                     uVar12 << 0x18;
          }
          *(uint *)(pcVar6 + 0x20) = uVar12;
          *(uint *)(pcVar6 + 0x24) = uVar11;
        }
        if (pcVar8 < pcVar6 + bVar9 + 8) {
          return;
        }
        pcVar6 = pcVar6 + bVar9;
        bVar9 = pcVar6[1];
        cVar1 = *pcVar6;
      } while (7 < bVar9);
    }
    uVar2 = *(undefined4 *)(param_1 + 0x20);
    uVar7 = gettext("Warning: bad `%s\' option size %u smaller than its header in output section");
    FUN_0023b810(uVar7,uVar2,bVar9);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0("../../gold/output.h",0x6f,"get_output_view",uVar5);
}

