
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void write_build_id(Layout * this, Output_file * of, uchar *
   array_of_hashes, size_t size_of_hashes) */

void __thiscall
gold::Layout::write_build_id
          (Layout *this,Output_file *of,uchar *array_of_hashes,size_t size_of_hashes)

{
  uchar *resblock;
  byte bVar1;
  Output_section_data *pOVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uchar *buffer;
  uint uVar6;
  int iVar7;
  int iVar8;
  byte *pbVar9;
  byte *pbVar10;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  bool bVar14;
  
  pOVar2 = this->build_id_note_;
  if (pOVar2 == (Output_section_data *)0x0) {
    return;
  }
  bVar1 = (pOVar2->super_Output_data).field_0x1c;
  if ((bVar1 & 2) == 0) goto LAB_000abae2;
  uVar6 = (uint)(pOVar2->super_Output_data).data_size_;
  if ((bVar1 & 4) == 0) goto LAB_000abab3;
  iVar8 = *(int *)((int)&(pOVar2->super_Output_data).offset_ + 4);
  uVar3 = (uint)(pOVar2->super_Output_data).offset_;
  if (iVar8 < 0) {
LAB_000abacc:
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");
  }
  uVar4 = (uint)of->file_size_;
  iVar5 = *(int *)((int)&of->file_size_ + 4);
  iVar8 = iVar8 + (uint)CARRY4(uVar6,uVar3);
  uVar6 = (uint)(uVar4 < uVar6 + uVar3);
  iVar7 = iVar5 - iVar8;
  if ((SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)
  goto LAB_000abacc;
  buffer = of->base_;
  resblock = buffer + uVar3;
  if (array_of_hashes == (uchar *)0x0) {
    uVar6 = (uint)this->output_file_size_;
    if (iVar5 < (int)(uint)(uVar4 < uVar6)) goto LAB_000abacc;
    bVar12 = false;
    bVar14 = parameters->options_ == (General_options *)0x0;
    if (bVar14) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
    }
    pbVar10 = (byte *)(parameters->options_->build_id_).value;
    iVar8 = 5;
    pbVar9 = pbVar10;
    pbVar11 = &DAT_002551f0;
    do {
      if (iVar8 == 0) break;
      iVar8 = iVar8 + -1;
      bVar12 = *pbVar9 < *pbVar11;
      bVar14 = *pbVar9 == *pbVar11;
      pbVar9 = pbVar9 + 1;
      pbVar11 = pbVar11 + 1;
    } while (bVar14);
    bVar13 = false;
    bVar12 = (!bVar12 && !bVar14) == bVar12;
    if (!bVar12) {
      iVar8 = 5;
      pbVar9 = pbVar10;
      pbVar11 = &DAT_00253013;
      do {
        if (iVar8 == 0) break;
        iVar8 = iVar8 + -1;
        bVar13 = *pbVar9 < *pbVar11;
        bVar12 = *pbVar9 == *pbVar11;
        pbVar9 = pbVar9 + 1;
        pbVar11 = pbVar11 + 1;
      } while (bVar12);
      bVar14 = false;
      bVar12 = (!bVar13 && !bVar12) == bVar13;
      if (!bVar12) {
        iVar8 = 4;
        pbVar9 = &DAT_002551f5;
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar14 = *pbVar10 < *pbVar9;
          bVar12 = *pbVar10 == *pbVar9;
          pbVar10 = pbVar10 + 1;
          pbVar9 = pbVar9 + 1;
        } while (bVar12);
        if ((!bVar14 && !bVar12) != bVar14) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");
        }
        md5_buffer((char *)buffer,uVar6,resblock);
        goto LAB_000ab9d3;
      }
    }
    sha1_buffer((char *)buffer,uVar6,resblock);
  }
  else {
    sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock);
    operator_delete__(array_of_hashes);
  }
LAB_000ab9d3:
  bVar1 = (this->build_id_note_->super_Output_data).field_0x1c;
  if ((bVar1 & 2) != 0) {
    if ((bVar1 & 4) != 0) {
      return;
    }
LAB_000abab3:
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xe3,"offset");
  }
LAB_000abae2:
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0xcf,"data_size");
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  byte *pbVar9;
  byte *pbVar10;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  bool bVar14;
  
  uVar5 = *(uint *)(param_1 + 0x1a4);
  if (uVar5 == 0) {
    return;
  }
  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;
  uVar8 = *(uint *)(uVar5 + 0xc);
  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;
  iVar6 = *(int *)(uVar5 + 0x18);
  uVar5 = *(uint *)(uVar5 + 0x14);
  if (iVar6 < 0) {
LAB_000abacc:
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);
  }
  iVar2 = *(int *)(param_2 + 0xc);
  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);
  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);
  iVar4 = iVar2 - iVar7;
  uVar8 = iVar4 - uVar3;
  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;
  iVar7 = *(int *)(param_2 + 0x10);
  iVar4 = iVar7 + uVar5;
  if (param_3 == 0) {
    uVar8 = *(uint *)(param_1 + 0x1bc);
    iVar6 = param_1;
    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;
    bVar12 = false;
    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;
    if (bVar14) {
                    /* WARNING: Subroutine does not return */
      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);
    }
    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);
    iVar6 = 5;
    pbVar9 = pbVar10;
    pbVar11 = &DAT_002551f0;
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar12 = *pbVar9 < *pbVar11;
      bVar14 = *pbVar9 == *pbVar11;
      pbVar9 = pbVar9 + 1;
      pbVar11 = pbVar11 + 1;
    } while (bVar14);
    bVar13 = false;
    bVar12 = (!bVar12 && !bVar14) == bVar12;
    if (!bVar12) {
      iVar6 = 5;
      pbVar9 = pbVar10;
      pbVar11 = &DAT_00253013;
      do {
        if (iVar6 == 0) break;
        iVar6 = iVar6 + -1;
        bVar13 = *pbVar9 < *pbVar11;
        bVar12 = *pbVar9 == *pbVar11;
        pbVar9 = pbVar9 + 1;
        pbVar11 = pbVar11 + 1;
      } while (bVar12);
      bVar14 = false;
      bVar12 = (!bVar13 && !bVar12) == bVar13;
      if (!bVar12) {
        iVar6 = 4;
        pbVar9 = &DAT_002551f5;
        do {
          if (iVar6 == 0) break;
          iVar6 = iVar6 + -1;
          bVar14 = *pbVar10 < *pbVar9;
          bVar12 = *pbVar10 == *pbVar9;
          pbVar10 = pbVar10 + 1;
          pbVar9 = pbVar9 + 1;
        } while (bVar12);
        if ((!bVar14 && !bVar12) != bVar14) {
                    /* WARNING: Subroutine does not return */
          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);
        }
        FUN_001a4e60(iVar7,uVar8,iVar4);
        goto LAB_000ab9d3;
      }
    }
    FUN_001a65b0(iVar7,uVar8,iVar4);
  }
  else {
    FUN_001a65b0(param_3,param_4,iVar4);
    FUN_001ac410(param_3);
  }
LAB_000ab9d3:
  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);
  uVar5 = (uint)bVar1;
  if ((bVar1 & 2) != 0) {
    if ((bVar1 & 4) != 0) {
      return;
    }
LAB_000abab3:
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);
  }
LAB_000abae2:
                    /* WARNING: Subroutine does not return */
  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035680
ADD EBX,0x2936c7
SUB ESP,0x1c
MOV EAX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [EAX + 0x1a4]
TEST EAX,EAX
JZ 0x000ab9f1
MOVZX EDX,byte ptr [EAX + 0x1c]
TEST DL,0x2
JZ 0x000abae2
AND EDX,0x4
MOV EBP,dword ptr [EAX + 0xc]
JZ 0x000abab3
MOV EDI,dword ptr [EAX + 0x18]
MOV ESI,dword ptr [EAX + 0x14]
TEST EDI,EDI
JS 0x000abacc
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + 0x8]
MOV ECX,dword ptr [EDX + 0xc]
XOR EDX,EDX
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,EBP
MOV EBP,ECX
ADD EAX,ESI
ADC EDX,EDI
CMP dword ptr [ESP + 0xc],EAX
SBB EBP,EDX
JL 0x000abacc
MOV EAX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + 0x10]
LEA EDX,[EAX + ESI*0x1]
MOV ESI,dword ptr [ESP + 0x38]
TEST ESI,ESI
JZ 0x000aba00
SUB ESP,0x4
PUSH EDX
PUSH dword ptr [ESP + 0x44]
PUSH dword ptr [ESP + 0x44]
CALL 0x001a65b0
POP EAX
PUSH dword ptr [ESP + 0x44]
CALL 0x001ac410
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [EAX + 0x1a4]
MOVZX EAX,byte ptr [EAX + 0x1c]
TEST AL,0x2
JZ 0x000abae2
TEST AL,0x4
JZ 0x000abab3
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP + 0x30]
MOV EBP,dword ptr [EDI + 0x1bc]
CMP dword ptr [ESP + 0xc],EBP
SBB ECX,0x0
JL 0x000abacc
LEA ECX,[EBX + 0x2f0]
MOV ECX,dword ptr [ECX]
MOV ECX,dword ptr [ECX + 0x8]
TEST ECX,ECX
JZ 0x000abafb
MOV ESI,dword ptr [ECX + 0x478]
LEA EDI,[EBX + 0xfff161f0]
MOV ECX,0x5
MOV dword ptr [ESP + 0xc],ESI
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x000abaa0
MOV ESI,dword ptr [ESP + 0xc]
MOV ECX,0x5
LEA EDI,[EBX + 0xfff14013]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x000abaa0
MOV ESI,dword ptr [ESP + 0xc]
MOV ECX,0x4
LEA EDI,[EBX + 0xfff161f5]
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x000abb11
SUB ESP,0x4
PUSH EDX
PUSH EBP
PUSH EAX
CALL 0x001a4e60
ADD ESP,0x10
JMP 0x000ab9d3
SUB ESP,0x4
PUSH EDX
PUSH EBP
PUSH EAX
CALL 0x001a65b0
ADD ESP,0x10
JMP 0x000ab9d3
LEA EAX,[EBX + 0xfff17530]
PUSH EBP
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0xe3
PUSH EAX
CALL 0x0008b620
LEA EAX,[EBX + 0xfff17034]
PUSH EDI
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0x6f
PUSH EAX
CALL 0x0008b620
PUSH EAX
LEA EAX,[EBX + 0xfff17538]
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0xcf
PUSH EAX
CALL 0x0008b620
LEA EAX,[EBX + 0xfff17528]
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xfff0726d]
PUSH 0x5c
PUSH EAX
CALL 0x0008b620
LEA EAX,[EBX + 0xfff17044]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfff160b8]
PUSH 0x16f7
PUSH EAX
CALL 0x0008b620
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  uVar5 = *(uint *)(param_1 + 0x1a4);\n  if (uVar5 == 0) {\n    return;\n  }\n  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;\n  uVar8 = *(uint *)(uVar5 + 0xc);\n  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;\n  iVar6 = *(int *)(uVar5 + 0x18);\n  uVar5 = *(uint *)(uVar5 + 0x14);\n  if (iVar6 < 0) {\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }\n  iVar2 = *(int *)(param_2 + 0xc);\n  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);\n  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);\n  iVar4 = iVar2 - iVar7;\n  uVar8 = iVar4 - uVar3;\n  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;\n  iVar7 = *(int *)(param_2 + 0x10);\n  iVar4 = iVar7 + uVar5;\n  if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }\nLAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);\n  uVar5 = (uint)bVar1;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }\nLAB_000abae2:\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);\n}\n\n" comment (function_definition "void FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  uVar5 = *(uint *)(param_1 + 0x1a4);\n  if (uVar5 == 0) {\n    return;\n  }\n  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;\n  uVar8 = *(uint *)(uVar5 + 0xc);\n  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;\n  iVar6 = *(int *)(uVar5 + 0x18);\n  uVar5 = *(uint *)(uVar5 + 0x14);\n  if (iVar6 < 0) {\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }\n  iVar2 = *(int *)(param_2 + 0xc);\n  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);\n  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);\n  iVar4 = iVar2 - iVar7;\n  uVar8 = iVar4 - uVar3;\n  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;\n  iVar7 = *(int *)(param_2 + 0x10);\n  iVar4 = iVar7 + uVar5;\n  if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }\nLAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);\n  uVar5 = (uint)bVar1;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }\nLAB_000abae2:\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);\n}" primitive_type (function_declarator "FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  uVar5 = *(uint *)(param_1 + 0x1a4);\n  if (uVar5 == 0) {\n    return;\n  }\n  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;\n  uVar8 = *(uint *)(uVar5 + 0xc);\n  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;\n  iVar6 = *(int *)(uVar5 + 0x18);\n  uVar5 = *(uint *)(uVar5 + 0x14);\n  if (iVar6 < 0) {\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }\n  iVar2 = *(int *)(param_2 + 0xc);\n  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);\n  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);\n  iVar4 = iVar2 - iVar7;\n  uVar8 = iVar4 - uVar3;\n  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;\n  iVar7 = *(int *)(param_2 + 0x10);\n  iVar4 = iVar7 + uVar5;\n  if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }\nLAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);\n  uVar5 = (uint)bVar1;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }\nLAB_000abae2:\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (expression_statement "uVar5 = *(uint *)(param_1 + 0x1a4);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x1a4)" identifier = (pointer_expression "*(uint *)(param_1 + 0x1a4)" * (cast_expression "(uint *)(param_1 + 0x1a4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a4)" ( (binary_expression "param_1 + 0x1a4" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 == 0) {\n    return;\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;" if (parenthesized_expression "((*(byte *)(uVar5 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(uVar5 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x1c) & 2)" ( (binary_expression "*(byte *)(uVar5 + 0x1c) & 2" (pointer_expression "*(byte *)(uVar5 + 0x1c)" * (cast_expression "(byte *)(uVar5 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x1c)" ( (binary_expression "uVar5 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000abae2;" goto statement_identifier ;)) (expression_statement "uVar8 = *(uint *)(uVar5 + 0xc);" (assignment_expression "uVar8 = *(uint *)(uVar5 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar5 + 0xc)" * (cast_expression "(uint *)(uVar5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0xc)" ( (binary_expression "uVar5 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;" if (parenthesized_expression "((*(byte *)(uVar5 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(uVar5 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x1c) & 4)" ( (binary_expression "*(byte *)(uVar5 + 0x1c) & 4" (pointer_expression "*(byte *)(uVar5 + 0x1c)" * (cast_expression "(byte *)(uVar5 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x1c)" ( (binary_expression "uVar5 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000abab3;" goto statement_identifier ;)) (expression_statement "iVar6 = *(int *)(uVar5 + 0x18);" (assignment_expression "iVar6 = *(int *)(uVar5 + 0x18)" identifier = (pointer_expression "*(int *)(uVar5 + 0x18)" * (cast_expression "(int *)(uVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x18)" ( (binary_expression "uVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(uVar5 + 0x14);" (assignment_expression "uVar5 = *(uint *)(uVar5 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar5 + 0x14)" * (cast_expression "(uint *)(uVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x14)" ( (binary_expression "uVar5 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 < 0) {\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }" { (labeled_statement "LAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);" statement_identifier : comment (expression_statement "FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);" (call_expression "FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6)" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view",iVar6)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") , identifier ))) ;)) })) (expression_statement "iVar2 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar2 = *(int *)(param_2 + 0xc)" identifier = (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) ))))) ;) (expression_statement "iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);" (assignment_expression "iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5)" identifier = (binary_expression "iVar6 + (uint)CARRY4(uVar8,uVar5)" identifier + (cast_expression "(uint)CARRY4(uVar8,uVar5)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar8,uVar5)" identifier (argument_list "(uVar8,uVar5)" ( identifier , identifier )))))) ;) (expression_statement "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < uVar8 + uVar5)" ( (binary_expression "*(uint *)(param_2 + 8) < uVar8 + 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) )))) < (binary_expression "uVar8 + uVar5" identifier + identifier)) )))) ;) (expression_statement "iVar4 = iVar2 - iVar7;" (assignment_expression "iVar4 = iVar2 - iVar7" identifier = (binary_expression "iVar2 - iVar7" identifier - identifier)) ;) (expression_statement "uVar8 = iVar4 - uVar3;" (assignment_expression "uVar8 = iVar4 - uVar3" identifier = (binary_expression "iVar4 - uVar3" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;" if (parenthesized_expression "((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0)" ( (binary_expression "(SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0" (parenthesized_expression "(SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3))" ( (binary_expression "SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(iVar2,iVar7)" identifier (argument_list "(iVar2,iVar7)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar4,uVar3)" identifier (argument_list "(iVar4,uVar3)" ( identifier , identifier )))) )) != (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (goto_statement "goto LAB_000abacc;" goto statement_identifier ;)) (expression_statement "iVar7 = *(int *)(param_2 + 0x10);" (assignment_expression "iVar7 = *(int *)(param_2 + 0x10)" identifier = (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) ))))) ;) (expression_statement "iVar4 = iVar7 + uVar5;" (assignment_expression "iVar4 = iVar7 + uVar5" identifier = (binary_expression "iVar7 + uVar5" identifier + identifier)) ;) (if_statement "if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }" { (expression_statement "uVar8 = *(uint *)(param_1 + 0x1bc);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0x1bc)" identifier = (pointer_expression "*(uint *)(param_1 + 0x1bc)" * (cast_expression "(uint *)(param_1 + 0x1bc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1bc)" ( (binary_expression "param_1 + 0x1bc" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = param_1;" (assignment_expression "iVar6 = param_1" identifier = identifier) ;) (if_statement "if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;" if (parenthesized_expression "(iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8))" ( (binary_expression "iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)" identifier < (cast_expression "(int)(uint)(*(uint *)(param_2 + 8) < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < uVar8)" ( (binary_expression "*(uint *)(param_2 + 8) < uVar8" (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) ))))) )) (goto_statement "goto LAB_000abacc;" goto statement_identifier ;)) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;" (assignment_expression "bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0" identifier = (binary_expression "*(int *)(DAT_0033f2f0 + 8) == 0" (pointer_expression "*(int *)(DAT_0033f2f0 + 8)" * (cast_expression "(int *)(DAT_0033f2f0 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0033f2f0 + 8)" ( (binary_expression "DAT_0033f2f0 + 8" identifier + number_literal) )))) == number_literal)) ;) (if_statement "if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }" { comment (expression_statement "FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_0008b620("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (expression_statement "pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);" (assignment_expression "pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" identifier = (pointer_expression "*(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" * (cast_expression "(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_0033f2f0 + 8) + 0x478)" ( (binary_expression "*(int *)(DAT_0033f2f0 + 8) + 0x478" (pointer_expression "*(int *)(DAT_0033f2f0 + 8)" * (cast_expression "(int *)(DAT_0033f2f0 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0033f2f0 + 8)" ( (binary_expression "DAT_0033f2f0 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar11 = &DAT_002551f0;" (assignment_expression "pbVar11 = &DAT_002551f0" identifier = (pointer_expression "&DAT_002551f0" & identifier)) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar11;" (assignment_expression "bVar12 = *pbVar9 < *pbVar11" identifier = (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar14 = *pbVar9 == *pbVar11;" (assignment_expression "bVar14 = *pbVar9 == *pbVar11" identifier = (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar12 = (!bVar12 && !bVar14) == bVar12;" (assignment_expression "bVar12 = (!bVar12 && !bVar14) == bVar12" identifier = (binary_expression "(!bVar12 && !bVar14) == bVar12" (parenthesized_expression "(!bVar12 && !bVar14)" ( (binary_expression "!bVar12 && !bVar14" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }" { (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar11 = &DAT_00253013;" (assignment_expression "pbVar11 = &DAT_00253013" identifier = (pointer_expression "&DAT_00253013" & identifier)) ;) (do_statement "do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);" do (compound_statement "{\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar9 < *pbVar11;" (assignment_expression "bVar13 = *pbVar9 < *pbVar11" identifier = (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar12 = *pbVar9 == *pbVar11;" (assignment_expression "bVar12 = *pbVar9 == *pbVar11" identifier = (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar12 = (!bVar13 && !bVar12) == bVar13;" (assignment_expression "bVar12 = (!bVar13 && !bVar12) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar12) == bVar13" (parenthesized_expression "(!bVar13 && !bVar12)" ( (binary_expression "!bVar13 && !bVar12" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }" { (expression_statement "iVar6 = 4;" (assignment_expression "iVar6 = 4" identifier = number_literal) ;) (expression_statement "pbVar9 = &DAT_002551f5;" (assignment_expression "pbVar9 = &DAT_002551f5" identifier = (pointer_expression "&DAT_002551f5" & identifier)) ;) (do_statement "do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);" do (compound_statement "{\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar10 < *pbVar9;" (assignment_expression "bVar14 = *pbVar10 < *pbVar9" identifier = (binary_expression "*pbVar10 < *pbVar9" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar12 = *pbVar10 == *pbVar9;" (assignment_expression "bVar12 = *pbVar10 == *pbVar9" identifier = (binary_expression "*pbVar10 == *pbVar9" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }" if (parenthesized_expression "((!bVar14 && !bVar12) != bVar14)" ( (binary_expression "(!bVar14 && !bVar12) != bVar14" (parenthesized_expression "(!bVar14 && !bVar12)" ( (binary_expression "!bVar14 && !bVar12" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }" { comment (expression_statement "FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);" (call_expression "FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4)" identifier (argument_list "("../../gold/layout.cc",0x16f7,"write_build_id",iVar4)" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""write_build_id"" " string_content ") , identifier ))) ;) })) (expression_statement "FUN_001a4e60(iVar7,uVar8,iVar4);" (call_expression "FUN_001a4e60(iVar7,uVar8,iVar4)" identifier (argument_list "(iVar7,uVar8,iVar4)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000ab9d3;" goto statement_identifier ;) })) })) (expression_statement "FUN_001a65b0(iVar7,uVar8,iVar4);" (call_expression "FUN_001a65b0(iVar7,uVar8,iVar4)" identifier (argument_list "(iVar7,uVar8,iVar4)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" else (compound_statement "{\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" { (expression_statement "FUN_001a65b0(param_3,param_4,iVar4);" (call_expression "FUN_001a65b0(param_3,param_4,iVar4)" identifier (argument_list "(param_3,param_4,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_001ac410(param_3);" (call_expression "FUN_001ac410(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) }))) (labeled_statement "LAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);" statement_identifier : (expression_statement "bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);" (assignment_expression "bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" identifier = (pointer_expression "*(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" * (cast_expression "(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1a4) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x1a4) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1a4)" * (cast_expression "(int *)(param_1 + 0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a4)" ( (binary_expression "param_1 + 0x1a4" identifier + number_literal) )))) + number_literal) ))))) ;)) (expression_statement "uVar5 = (uint)bVar1;" (assignment_expression "uVar5 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }" if (parenthesized_expression "((bVar1 & 2) != 0)" ( (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }" { (if_statement "if ((bVar1 & 4) != 0) {\n      return;\n    }" if (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);" statement_identifier : comment (expression_statement "FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);" (call_expression "FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8)" identifier (argument_list "("../../gold/output.h",0xe3,"offset",uVar8)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") , identifier ))) ;)) })) (labeled_statement "LAB_000abae2:\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);" statement_identifier : comment (expression_statement "FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);" (call_expression "FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5)" identifier (argument_list "("../../gold/output.h",0xcf,"data_size",uVar5)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") , identifier ))) ;)) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: void write_build_id(Layout * this, Output_file * of, uchar *\n   array_of_hashes, size_t size_of_hashes) */\n\nvoid __thiscall\ngold::Layout::write_build_id\n          (Layout *this,Output_file *of,uchar *array_of_hashes,size_t size_of_hashes)\n\n{\n  uchar *resblock;\n  byte bVar1;\n  Output_section_data *pOVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uchar *buffer;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  pOVar2 = this->build_id_note_;\n  if (pOVar2 == (Output_section_data *)0x0) {\n    return;\n  }\n  bVar1 = (pOVar2->super_Output_data).field_0x1c;\n  if ((bVar1 & 2) == 0) goto LAB_000abae2;\n  uVar6 = (uint)(pOVar2->super_Output_data).data_size_;\n  if ((bVar1 & 4) == 0) goto LAB_000abab3;\n  iVar8 = *(int *)((int)&(pOVar2->super_Output_data).offset_ + 4);\n  uVar3 = (uint)(pOVar2->super_Output_data).offset_;\n  if (iVar8 < 0) {\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }\n  uVar4 = (uint)of->file_size_;\n  iVar5 = *(int *)((int)&of->file_size_ + 4);\n  iVar8 = iVar8 + (uint)CARRY4(uVar6,uVar3);\n  uVar6 = (uint)(uVar4 < uVar6 + uVar3);\n  iVar7 = iVar5 - iVar8;\n  if ((SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)\n  goto LAB_000abacc;\n  buffer = of->base_;\n  resblock = buffer + uVar3;\n  if (array_of_hashes == (uchar *)0x0) {\n    uVar6 = (uint)this->output_file_size_;\n    if (iVar5 < (int)(uint)(uVar4 < uVar6)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = parameters->options_ == (General_options *)0x0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    pbVar10 = (byte *)(parameters->options_->build_id_).value;\n    iVar8 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar8 == 0) break;\n      iVar8 = iVar8 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar8 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }\n    }\n    sha1_buffer((char *)buffer,uVar6,resblock);\n  }\n  else {\n    sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock);\n    operator_delete__(array_of_hashes);\n  }\nLAB_000ab9d3:\n  bVar1 = (this->build_id_note_->super_Output_data).field_0x1c;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\nLAB_000abae2:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n}\n\n" comment comment comment comment (function_definition "void __thiscall\ngold::Layout::write_build_id\n          (Layout *this,Output_file *of,uchar *array_of_hashes,size_t size_of_hashes)\n\n{\n  uchar *resblock;\n  byte bVar1;\n  Output_section_data *pOVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uchar *buffer;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  pOVar2 = this->build_id_note_;\n  if (pOVar2 == (Output_section_data *)0x0) {\n    return;\n  }\n  bVar1 = (pOVar2->super_Output_data).field_0x1c;\n  if ((bVar1 & 2) == 0) goto LAB_000abae2;\n  uVar6 = (uint)(pOVar2->super_Output_data).data_size_;\n  if ((bVar1 & 4) == 0) goto LAB_000abab3;\n  iVar8 = *(int *)((int)&(pOVar2->super_Output_data).offset_ + 4);\n  uVar3 = (uint)(pOVar2->super_Output_data).offset_;\n  if (iVar8 < 0) {\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }\n  uVar4 = (uint)of->file_size_;\n  iVar5 = *(int *)((int)&of->file_size_ + 4);\n  iVar8 = iVar8 + (uint)CARRY4(uVar6,uVar3);\n  uVar6 = (uint)(uVar4 < uVar6 + uVar3);\n  iVar7 = iVar5 - iVar8;\n  if ((SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)\n  goto LAB_000abacc;\n  buffer = of->base_;\n  resblock = buffer + uVar3;\n  if (array_of_hashes == (uchar *)0x0) {\n    uVar6 = (uint)this->output_file_size_;\n    if (iVar5 < (int)(uint)(uVar4 < uVar6)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = parameters->options_ == (General_options *)0x0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    pbVar10 = (byte *)(parameters->options_->build_id_).value;\n    iVar8 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar8 == 0) break;\n      iVar8 = iVar8 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar8 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }\n    }\n    sha1_buffer((char *)buffer,uVar6,resblock);\n  }\n  else {\n    sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock);\n    operator_delete__(array_of_hashes);\n  }\nLAB_000ab9d3:\n  bVar1 = (this->build_id_note_->super_Output_data).field_0x1c;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\nLAB_000abae2:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "write_build_id\n          (Layout *this,Output_file *of,uchar *array_of_hashes,size_t size_of_hashes)" identifier (parameter_list "(Layout *this,Output_file *of,uchar *array_of_hashes,size_t size_of_hashes)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) , (parameter_declaration "uchar *array_of_hashes" type_identifier (pointer_declarator "*array_of_hashes" * identifier)) , (parameter_declaration "size_t size_of_hashes" primitive_type identifier) ))) (compound_statement "{\n  uchar *resblock;\n  byte bVar1;\n  Output_section_data *pOVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uchar *buffer;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  pOVar2 = this->build_id_note_;\n  if (pOVar2 == (Output_section_data *)0x0) {\n    return;\n  }\n  bVar1 = (pOVar2->super_Output_data).field_0x1c;\n  if ((bVar1 & 2) == 0) goto LAB_000abae2;\n  uVar6 = (uint)(pOVar2->super_Output_data).data_size_;\n  if ((bVar1 & 4) == 0) goto LAB_000abab3;\n  iVar8 = *(int *)((int)&(pOVar2->super_Output_data).offset_ + 4);\n  uVar3 = (uint)(pOVar2->super_Output_data).offset_;\n  if (iVar8 < 0) {\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }\n  uVar4 = (uint)of->file_size_;\n  iVar5 = *(int *)((int)&of->file_size_ + 4);\n  iVar8 = iVar8 + (uint)CARRY4(uVar6,uVar3);\n  uVar6 = (uint)(uVar4 < uVar6 + uVar3);\n  iVar7 = iVar5 - iVar8;\n  if ((SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)\n  goto LAB_000abacc;\n  buffer = of->base_;\n  resblock = buffer + uVar3;\n  if (array_of_hashes == (uchar *)0x0) {\n    uVar6 = (uint)this->output_file_size_;\n    if (iVar5 < (int)(uint)(uVar4 < uVar6)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = parameters->options_ == (General_options *)0x0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    pbVar10 = (byte *)(parameters->options_->build_id_).value;\n    iVar8 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar8 == 0) break;\n      iVar8 = iVar8 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar8 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }\n    }\n    sha1_buffer((char *)buffer,uVar6,resblock);\n  }\n  else {\n    sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock);\n    operator_delete__(array_of_hashes);\n  }\nLAB_000ab9d3:\n  bVar1 = (this->build_id_note_->super_Output_data).field_0x1c;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\nLAB_000abae2:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xcf,"data_size");\n}" { (declaration "uchar *resblock;" type_identifier (pointer_declarator "*resblock" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "Output_section_data *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uchar *buffer;" type_identifier (pointer_declarator "*buffer" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (expression_statement "pOVar2 = this->build_id_note_;" (assignment_expression "pOVar2 = this->build_id_note_" identifier = (field_expression "this->build_id_note_" identifier -> field_identifier)) ;) (if_statement "if (pOVar2 == (Output_section_data *)0x0) {\n    return;\n  }" if (parenthesized_expression "(pOVar2 == (Output_section_data *)0x0)" ( (binary_expression "pOVar2 == (Output_section_data *)0x0" identifier == (cast_expression "(Output_section_data *)0x0" ( (type_descriptor "Output_section_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "bVar1 = (pOVar2->super_Output_data).field_0x1c;" (assignment_expression "bVar1 = (pOVar2->super_Output_data).field_0x1c" identifier = (field_expression "(pOVar2->super_Output_data).field_0x1c" (parenthesized_expression "(pOVar2->super_Output_data)" ( (field_expression "pOVar2->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((bVar1 & 2) == 0) goto LAB_000abae2;" if (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000abae2;" goto statement_identifier ;)) (expression_statement "uVar6 = (uint)(pOVar2->super_Output_data).data_size_;" (assignment_expression "uVar6 = (uint)(pOVar2->super_Output_data).data_size_" identifier = (field_expression "(uint)(pOVar2->super_Output_data).data_size_" (call_expression "(uint)(pOVar2->super_Output_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pOVar2->super_Output_data)" ( (field_expression "pOVar2->super_Output_data" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if ((bVar1 & 4) == 0) goto LAB_000abab3;" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000abab3;" goto statement_identifier ;)) (expression_statement "iVar8 = *(int *)((int)&(pOVar2->super_Output_data).offset_ + 4);" (assignment_expression "iVar8 = *(int *)((int)&(pOVar2->super_Output_data).offset_ + 4)" identifier = (pointer_expression "*(int *)((int)&(pOVar2->super_Output_data).offset_ + 4)" * (cast_expression "(int *)((int)&(pOVar2->super_Output_data).offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pOVar2->super_Output_data).offset_ + 4)" ( (binary_expression "(int)&(pOVar2->super_Output_data).offset_ + 4" (cast_expression "(int)&(pOVar2->super_Output_data).offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pOVar2->super_Output_data).offset_" & (field_expression "(pOVar2->super_Output_data).offset_" (parenthesized_expression "(pOVar2->super_Output_data)" ( (field_expression "pOVar2->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar3 = (uint)(pOVar2->super_Output_data).offset_;" (assignment_expression "uVar3 = (uint)(pOVar2->super_Output_data).offset_" identifier = (field_expression "(uint)(pOVar2->super_Output_data).offset_" (call_expression "(uint)(pOVar2->super_Output_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pOVar2->super_Output_data)" ( (field_expression "pOVar2->super_Output_data" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if (iVar8 < 0) {\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");\n  }" { (labeled_statement "LAB_000abacc:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view");" (call_expression "do_gold_unreachable("../../gold/output.h",0x6f,"get_output_view")" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") ))) ;)) })) (expression_statement "uVar4 = (uint)of->file_size_;" (assignment_expression "uVar4 = (uint)of->file_size_" identifier = (cast_expression "(uint)of->file_size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "of->file_size_" identifier -> field_identifier))) ;) (expression_statement "iVar5 = *(int *)((int)&of->file_size_ + 4);" (assignment_expression "iVar5 = *(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) ))))) ;) (expression_statement "iVar8 = iVar8 + (uint)CARRY4(uVar6,uVar3);" (assignment_expression "iVar8 = iVar8 + (uint)CARRY4(uVar6,uVar3)" identifier = (binary_expression "iVar8 + (uint)CARRY4(uVar6,uVar3)" identifier + (cast_expression "(uint)CARRY4(uVar6,uVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6,uVar3)" identifier (argument_list "(uVar6,uVar3)" ( identifier , identifier )))))) ;) (expression_statement "uVar6 = (uint)(uVar4 < uVar6 + uVar3);" (assignment_expression "uVar6 = (uint)(uVar4 < uVar6 + uVar3)" identifier = (call_expression "(uint)(uVar4 < uVar6 + uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar6 + uVar3)" ( (binary_expression "uVar4 < uVar6 + uVar3" identifier < (binary_expression "uVar6 + uVar3" identifier + identifier)) )))) ;) (expression_statement "iVar7 = iVar5 - iVar8;" (assignment_expression "iVar7 = iVar5 - iVar8" identifier = (binary_expression "iVar5 - iVar8" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)\n  goto LAB_000abacc;" if (parenthesized_expression "((SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)" ( (binary_expression "(SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4(iVar5,iVar8) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4(iVar5,iVar8)" identifier (argument_list "(iVar5,iVar8)" ( 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)) )) (goto_statement "goto LAB_000abacc;" goto statement_identifier ;)) (expression_statement "buffer = of->base_;" (assignment_expression "buffer = of->base_" identifier = (field_expression "of->base_" identifier -> field_identifier)) ;) (expression_statement "resblock = buffer + uVar3;" (assignment_expression "resblock = buffer + uVar3" identifier = (binary_expression "buffer + uVar3" identifier + identifier)) ;) (if_statement "if (array_of_hashes == (uchar *)0x0) {\n    uVar6 = (uint)this->output_file_size_;\n    if (iVar5 < (int)(uint)(uVar4 < uVar6)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = parameters->options_ == (General_options *)0x0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    pbVar10 = (byte *)(parameters->options_->build_id_).value;\n    iVar8 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar8 == 0) break;\n      iVar8 = iVar8 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar8 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }\n    }\n    sha1_buffer((char *)buffer,uVar6,resblock);\n  }\n  else {\n    sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock);\n    operator_delete__(array_of_hashes);\n  }" if (parenthesized_expression "(array_of_hashes == (uchar *)0x0)" ( (binary_expression "array_of_hashes == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar6 = (uint)this->output_file_size_;\n    if (iVar5 < (int)(uint)(uVar4 < uVar6)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = parameters->options_ == (General_options *)0x0;\n    if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    pbVar10 = (byte *)(parameters->options_->build_id_).value;\n    iVar8 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar8 == 0) break;\n      iVar8 = iVar8 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar8 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }\n    }\n    sha1_buffer((char *)buffer,uVar6,resblock);\n  }" { (expression_statement "uVar6 = (uint)this->output_file_size_;" (assignment_expression "uVar6 = (uint)this->output_file_size_" identifier = (cast_expression "(uint)this->output_file_size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->output_file_size_" identifier -> field_identifier))) ;) (if_statement "if (iVar5 < (int)(uint)(uVar4 < uVar6)) goto LAB_000abacc;" if (parenthesized_expression "(iVar5 < (int)(uint)(uVar4 < uVar6))" ( (binary_expression "iVar5 < (int)(uint)(uVar4 < uVar6)" identifier < (cast_expression "(int)(uint)(uVar4 < uVar6)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uVar4 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) ))))) )) (goto_statement "goto LAB_000abacc;" goto statement_identifier ;)) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar14 = parameters->options_ == (General_options *)0x0;" (assignment_expression "bVar14 = parameters->options_ == (General_options *)0x0" identifier = (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar14) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "pbVar10 = (byte *)(parameters->options_->build_id_).value;" (assignment_expression "pbVar10 = (byte *)(parameters->options_->build_id_).value" identifier = (cast_expression "(byte *)(parameters->options_->build_id_).value" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(parameters->options_->build_id_).value" (parenthesized_expression "(parameters->options_->build_id_)" ( (field_expression "parameters->options_->build_id_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar11 = &DAT_002551f0;" (assignment_expression "pbVar11 = &DAT_002551f0" identifier = (pointer_expression "&DAT_002551f0" & identifier)) ;) (do_statement "do {\n      if (iVar8 == 0) break;\n      iVar8 = iVar8 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (iVar8 == 0) break;\n      iVar8 = iVar8 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar11;" (assignment_expression "bVar12 = *pbVar9 < *pbVar11" identifier = (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar14 = *pbVar9 == *pbVar11;" (assignment_expression "bVar14 = *pbVar9 == *pbVar11" identifier = (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar12 = (!bVar12 && !bVar14) == bVar12;" (assignment_expression "bVar12 = (!bVar12 && !bVar14) == bVar12" identifier = (binary_expression "(!bVar12 && !bVar14) == bVar12" (parenthesized_expression "(!bVar12 && !bVar14)" ( (binary_expression "!bVar12 && !bVar14" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar12) {\n      iVar8 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }\n    }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n      iVar8 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }\n    }" { (expression_statement "iVar8 = 5;" (assignment_expression "iVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar11 = &DAT_00253013;" (assignment_expression "pbVar11 = &DAT_00253013" identifier = (pointer_expression "&DAT_00253013" & identifier)) ;) (do_statement "do {\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);" do (compound_statement "{\n        if (iVar8 == 0) break;\n        iVar8 = iVar8 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar9 < *pbVar11;" (assignment_expression "bVar13 = *pbVar9 < *pbVar11" identifier = (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar12 = *pbVar9 == *pbVar11;" (assignment_expression "bVar12 = *pbVar9 == *pbVar11" identifier = (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar12 = (!bVar13 && !bVar12) == bVar13;" (assignment_expression "bVar12 = (!bVar13 && !bVar12) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar12) == bVar13" (parenthesized_expression "(!bVar13 && !bVar12)" ( (binary_expression "!bVar13 && !bVar12" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar12) {\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n        iVar8 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }\n        md5_buffer((char *)buffer,uVar6,resblock);\n        goto LAB_000ab9d3;\n      }" { (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" identifier = number_literal) ;) (expression_statement "pbVar9 = &DAT_002551f5;" (assignment_expression "pbVar9 = &DAT_002551f5" identifier = (pointer_expression "&DAT_002551f5" & identifier)) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar10 < *pbVar9;" (assignment_expression "bVar14 = *pbVar10 < *pbVar9" identifier = (binary_expression "*pbVar10 < *pbVar9" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar12 = *pbVar10 == *pbVar9;" (assignment_expression "bVar12 = *pbVar10 == *pbVar9" identifier = (binary_expression "*pbVar10 == *pbVar9" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar12) != bVar14) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }" if (parenthesized_expression "((!bVar14 && !bVar12) != bVar14)" ( (binary_expression "(!bVar14 && !bVar12) != bVar14" (parenthesized_expression "(!bVar14 && !bVar12)" ( (binary_expression "!bVar14 && !bVar12" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id");" (call_expression "do_gold_unreachable("../../gold/layout.cc",0x16f7,"write_build_id")" identifier (argument_list "("../../gold/layout.cc",0x16f7,"write_build_id")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""write_build_id"" " string_content ") ))) ;) })) (expression_statement "md5_buffer((char *)buffer,uVar6,resblock);" (call_expression "md5_buffer((char *)buffer,uVar6,resblock)" identifier (argument_list "((char *)buffer,uVar6,resblock)" ( (cast_expression "(char *)buffer" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) (goto_statement "goto LAB_000ab9d3;" goto statement_identifier ;) })) })) (expression_statement "sha1_buffer((char *)buffer,uVar6,resblock);" (call_expression "sha1_buffer((char *)buffer,uVar6,resblock)" identifier (argument_list "((char *)buffer,uVar6,resblock)" ( (cast_expression "(char *)buffer" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) }) (else_clause "else {\n    sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock);\n    operator_delete__(array_of_hashes);\n  }" else (compound_statement "{\n    sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock);\n    operator_delete__(array_of_hashes);\n  }" { (expression_statement "sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock);" (call_expression "sha1_buffer((char *)array_of_hashes,size_of_hashes,resblock)" identifier (argument_list "((char *)array_of_hashes,size_of_hashes,resblock)" ( (cast_expression "(char *)array_of_hashes" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) (expression_statement "operator_delete__(array_of_hashes);" (call_expression "operator_delete__(array_of_hashes)" identifier (argument_list "(array_of_hashes)" ( identifier ))) ;) }))) (labeled_statement "LAB_000ab9d3:\n  bVar1 = (this->build_id_note_->super_Output_data).field_0x1c;" statement_identifier : (expression_statement "bVar1 = (this->build_id_note_->super_Output_data).field_0x1c;" (assignment_expression "bVar1 = (this->build_id_note_->super_Output_data).field_0x1c" identifier = (field_expression "(this->build_id_note_->super_Output_data).field_0x1c" (parenthesized_expression "(this->build_id_note_->super_Output_data)" ( (field_expression "this->build_id_note_->super_Output_data" (field_expression "this->build_id_note_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;)) (if_statement "if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((bVar1 & 2) != 0)" ( (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" { (if_statement "if ((bVar1 & 4) != 0) {\n      return;\n    }" if (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_000abab3:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (labeled_statement "LAB_000abae2:\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xcf,"data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0xcf,"data_size")" identifier (argument_list "("../../gold/output.h",0xcf,"data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") ))) ;)) })))
(translation_unit "void FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  uVar5 = *(uint *)(param_1 + 0x1a4);\n  if (uVar5 == 0) {\n    return;\n  }\n  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;\n  uVar8 = *(uint *)(uVar5 + 0xc);\n  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;\n  iVar6 = *(int *)(uVar5 + 0x18);\n  uVar5 = *(uint *)(uVar5 + 0x14);\n  if (iVar6 < 0) {\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }\n  iVar2 = *(int *)(param_2 + 0xc);\n  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);\n  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);\n  iVar4 = iVar2 - iVar7;\n  uVar8 = iVar4 - uVar3;\n  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;\n  iVar7 = *(int *)(param_2 + 0x10);\n  iVar4 = iVar7 + uVar5;\n  if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }\nLAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);\n  uVar5 = (uint)bVar1;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }\nLAB_000abae2:\n                    \n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);\n}\n\n" (function_definition "void FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  uVar5 = *(uint *)(param_1 + 0x1a4);\n  if (uVar5 == 0) {\n    return;\n  }\n  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;\n  uVar8 = *(uint *)(uVar5 + 0xc);\n  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;\n  iVar6 = *(int *)(uVar5 + 0x18);\n  uVar5 = *(uint *)(uVar5 + 0x14);\n  if (iVar6 < 0) {\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }\n  iVar2 = *(int *)(param_2 + 0xc);\n  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);\n  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);\n  iVar4 = iVar2 - iVar7;\n  uVar8 = iVar4 - uVar3;\n  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;\n  iVar7 = *(int *)(param_2 + 0x10);\n  iVar4 = iVar7 + uVar5;\n  if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }\nLAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);\n  uVar5 = (uint)bVar1;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }\nLAB_000abae2:\n                    \n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);\n}" primitive_type (function_declarator "FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  uVar5 = *(uint *)(param_1 + 0x1a4);\n  if (uVar5 == 0) {\n    return;\n  }\n  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;\n  uVar8 = *(uint *)(uVar5 + 0xc);\n  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;\n  iVar6 = *(int *)(uVar5 + 0x18);\n  uVar5 = *(uint *)(uVar5 + 0x14);\n  if (iVar6 < 0) {\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }\n  iVar2 = *(int *)(param_2 + 0xc);\n  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);\n  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);\n  iVar4 = iVar2 - iVar7;\n  uVar8 = iVar4 - uVar3;\n  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;\n  iVar7 = *(int *)(param_2 + 0x10);\n  iVar4 = iVar7 + uVar5;\n  if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }\nLAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);\n  uVar5 = (uint)bVar1;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }\nLAB_000abae2:\n                    \n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (expression_statement "uVar5 = *(uint *)(param_1 + 0x1a4);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x1a4)" identifier = (pointer_expression "*(uint *)(param_1 + 0x1a4)" * (cast_expression "(uint *)(param_1 + 0x1a4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a4)" ( (binary_expression "param_1 + 0x1a4" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 == 0) {\n    return;\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;" if (parenthesized_expression "((*(byte *)(uVar5 + 0x1c) & 2) == 0)" ( (binary_expression "(*(byte *)(uVar5 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x1c) & 2)" ( (binary_expression "*(byte *)(uVar5 + 0x1c) & 2" (pointer_expression "*(byte *)(uVar5 + 0x1c)" * (cast_expression "(byte *)(uVar5 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x1c)" ( (binary_expression "uVar5 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000abae2;" goto statement_identifier ;)) (expression_statement "uVar8 = *(uint *)(uVar5 + 0xc);" (assignment_expression "uVar8 = *(uint *)(uVar5 + 0xc)" identifier = (pointer_expression "*(uint *)(uVar5 + 0xc)" * (cast_expression "(uint *)(uVar5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0xc)" ( (binary_expression "uVar5 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;" if (parenthesized_expression "((*(byte *)(uVar5 + 0x1c) & 4) == 0)" ( (binary_expression "(*(byte *)(uVar5 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x1c) & 4)" ( (binary_expression "*(byte *)(uVar5 + 0x1c) & 4" (pointer_expression "*(byte *)(uVar5 + 0x1c)" * (cast_expression "(byte *)(uVar5 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x1c)" ( (binary_expression "uVar5 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000abab3;" goto statement_identifier ;)) (expression_statement "iVar6 = *(int *)(uVar5 + 0x18);" (assignment_expression "iVar6 = *(int *)(uVar5 + 0x18)" identifier = (pointer_expression "*(int *)(uVar5 + 0x18)" * (cast_expression "(int *)(uVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x18)" ( (binary_expression "uVar5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(uVar5 + 0x14);" (assignment_expression "uVar5 = *(uint *)(uVar5 + 0x14)" identifier = (pointer_expression "*(uint *)(uVar5 + 0x14)" * (cast_expression "(uint *)(uVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 0x14)" ( (binary_expression "uVar5 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 < 0) {\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }" { (labeled_statement "LAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);" statement_identifier : (expression_statement "FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);" (call_expression "FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6)" identifier (argument_list "("../../gold/output.h",0x6f,"get_output_view",iVar6)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""get_output_view"" " string_content ") , identifier ))) ;)) })) (expression_statement "iVar2 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar2 = *(int *)(param_2 + 0xc)" identifier = (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) ))))) ;) (expression_statement "iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);" (assignment_expression "iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5)" identifier = (binary_expression "iVar6 + (uint)CARRY4(uVar8,uVar5)" identifier + (cast_expression "(uint)CARRY4(uVar8,uVar5)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar8,uVar5)" identifier (argument_list "(uVar8,uVar5)" ( identifier , identifier )))))) ;) (expression_statement "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5)" identifier = (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < uVar8 + uVar5)" ( (binary_expression "*(uint *)(param_2 + 8) < uVar8 + 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) )))) < (binary_expression "uVar8 + uVar5" identifier + identifier)) )))) ;) (expression_statement "iVar4 = iVar2 - iVar7;" (assignment_expression "iVar4 = iVar2 - iVar7" identifier = (binary_expression "iVar2 - iVar7" identifier - identifier)) ;) (expression_statement "uVar8 = iVar4 - uVar3;" (assignment_expression "uVar8 = iVar4 - uVar3" identifier = (binary_expression "iVar4 - uVar3" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;" if (parenthesized_expression "((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0)" ( (binary_expression "(SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0" (parenthesized_expression "(SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3))" ( (binary_expression "SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(iVar2,iVar7)" identifier (argument_list "(iVar2,iVar7)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar4,uVar3)" identifier (argument_list "(iVar4,uVar3)" ( identifier , identifier )))) )) != (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (goto_statement "goto LAB_000abacc;" goto statement_identifier ;)) (expression_statement "iVar7 = *(int *)(param_2 + 0x10);" (assignment_expression "iVar7 = *(int *)(param_2 + 0x10)" identifier = (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) ))))) ;) (expression_statement "iVar4 = iVar7 + uVar5;" (assignment_expression "iVar4 = iVar7 + uVar5" identifier = (binary_expression "iVar7 + uVar5" identifier + identifier)) ;) (if_statement "if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }" { (expression_statement "uVar8 = *(uint *)(param_1 + 0x1bc);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0x1bc)" identifier = (pointer_expression "*(uint *)(param_1 + 0x1bc)" * (cast_expression "(uint *)(param_1 + 0x1bc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1bc)" ( (binary_expression "param_1 + 0x1bc" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = param_1;" (assignment_expression "iVar6 = param_1" identifier = identifier) ;) (if_statement "if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;" if (parenthesized_expression "(iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8))" ( (binary_expression "iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)" identifier < (cast_expression "(int)(uint)(*(uint *)(param_2 + 8) < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 8) < uVar8)" ( (binary_expression "*(uint *)(param_2 + 8) < uVar8" (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) ))))) )) (goto_statement "goto LAB_000abacc;" goto statement_identifier ;)) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;" (assignment_expression "bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0" identifier = (binary_expression "*(int *)(DAT_0033f2f0 + 8) == 0" (pointer_expression "*(int *)(DAT_0033f2f0 + 8)" * (cast_expression "(int *)(DAT_0033f2f0 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0033f2f0 + 8)" ( (binary_expression "DAT_0033f2f0 + 8" identifier + number_literal) )))) == number_literal)) ;) (if_statement "if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }" { (expression_statement "FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_0008b620("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (expression_statement "pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);" (assignment_expression "pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" identifier = (pointer_expression "*(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" * (cast_expression "(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(DAT_0033f2f0 + 8) + 0x478)" ( (binary_expression "*(int *)(DAT_0033f2f0 + 8) + 0x478" (pointer_expression "*(int *)(DAT_0033f2f0 + 8)" * (cast_expression "(int *)(DAT_0033f2f0 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0033f2f0 + 8)" ( (binary_expression "DAT_0033f2f0 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar11 = &DAT_002551f0;" (assignment_expression "pbVar11 = &DAT_002551f0" identifier = (pointer_expression "&DAT_002551f0" & identifier)) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar11;" (assignment_expression "bVar12 = *pbVar9 < *pbVar11" identifier = (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar14 = *pbVar9 == *pbVar11;" (assignment_expression "bVar14 = *pbVar9 == *pbVar11" identifier = (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar12 = (!bVar12 && !bVar14) == bVar12;" (assignment_expression "bVar12 = (!bVar12 && !bVar14) == bVar12" identifier = (binary_expression "(!bVar12 && !bVar14) == bVar12" (parenthesized_expression "(!bVar12 && !bVar14)" ( (binary_expression "!bVar12 && !bVar14" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }" { (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar11 = &DAT_00253013;" (assignment_expression "pbVar11 = &DAT_00253013" identifier = (pointer_expression "&DAT_00253013" & identifier)) ;) (do_statement "do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);" do (compound_statement "{\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar9 < *pbVar11;" (assignment_expression "bVar13 = *pbVar9 < *pbVar11" identifier = (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar12 = *pbVar9 == *pbVar11;" (assignment_expression "bVar12 = *pbVar9 == *pbVar11" identifier = (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar12 = (!bVar13 && !bVar12) == bVar13;" (assignment_expression "bVar12 = (!bVar13 && !bVar12) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar12) == bVar13" (parenthesized_expression "(!bVar13 && !bVar12)" ( (binary_expression "!bVar13 && !bVar12" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }" { (expression_statement "iVar6 = 4;" (assignment_expression "iVar6 = 4" identifier = number_literal) ;) (expression_statement "pbVar9 = &DAT_002551f5;" (assignment_expression "pbVar9 = &DAT_002551f5" identifier = (pointer_expression "&DAT_002551f5" & identifier)) ;) (do_statement "do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);" do (compound_statement "{\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar10 < *pbVar9;" (assignment_expression "bVar14 = *pbVar10 < *pbVar9" identifier = (binary_expression "*pbVar10 < *pbVar9" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar12 = *pbVar10 == *pbVar9;" (assignment_expression "bVar12 = *pbVar10 == *pbVar9" identifier = (binary_expression "*pbVar10 == *pbVar9" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }" if (parenthesized_expression "((!bVar14 && !bVar12) != bVar14)" ( (binary_expression "(!bVar14 && !bVar12) != bVar14" (parenthesized_expression "(!bVar14 && !bVar12)" ( (binary_expression "!bVar14 && !bVar12" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) != identifier) )) (compound_statement "{\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }" { (expression_statement "FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);" (call_expression "FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4)" identifier (argument_list "("../../gold/layout.cc",0x16f7,"write_build_id",iVar4)" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""write_build_id"" " string_content ") , identifier ))) ;) })) (expression_statement "FUN_001a4e60(iVar7,uVar8,iVar4);" (call_expression "FUN_001a4e60(iVar7,uVar8,iVar4)" identifier (argument_list "(iVar7,uVar8,iVar4)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000ab9d3;" goto statement_identifier ;) })) })) (expression_statement "FUN_001a65b0(iVar7,uVar8,iVar4);" (call_expression "FUN_001a65b0(iVar7,uVar8,iVar4)" identifier (argument_list "(iVar7,uVar8,iVar4)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" else (compound_statement "{\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" { (expression_statement "FUN_001a65b0(param_3,param_4,iVar4);" (call_expression "FUN_001a65b0(param_3,param_4,iVar4)" identifier (argument_list "(param_3,param_4,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_001ac410(param_3);" (call_expression "FUN_001ac410(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) }))) (labeled_statement "LAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);" statement_identifier : (expression_statement "bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);" (assignment_expression "bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" identifier = (pointer_expression "*(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" * (cast_expression "(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1a4) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x1a4) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1a4)" * (cast_expression "(int *)(param_1 + 0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a4)" ( (binary_expression "param_1 + 0x1a4" identifier + number_literal) )))) + number_literal) ))))) ;)) (expression_statement "uVar5 = (uint)bVar1;" (assignment_expression "uVar5 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }" if (parenthesized_expression "((bVar1 & 2) != 0)" ( (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }" { (if_statement "if ((bVar1 & 4) != 0) {\n      return;\n    }" if (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);" statement_identifier : (expression_statement "FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);" (call_expression "FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8)" identifier (argument_list "("../../gold/output.h",0xe3,"offset",uVar8)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") , identifier ))) ;)) })) (labeled_statement "LAB_000abae2:\n                    \n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);" statement_identifier : (expression_statement "FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);" (call_expression "FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5)" identifier (argument_list "("../../gold/output.h",0xcf,"data_size",uVar5)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""data_size"" " string_content ") , identifier ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor 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) )) (goto_statement goto statement_identifier ;)) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression IDENT + IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)) )) (goto_statement goto statement_identifier ;)) (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 IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (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) ))))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (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) )))) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })))
(function_definition "void FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  uVar5 = *(uint *)(param_1 + 0x1a4);\n  if (uVar5 == 0) {\n    return;\n  }\n  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;\n  uVar8 = *(uint *)(uVar5 + 0xc);\n  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;\n  iVar6 = *(int *)(uVar5 + 0x18);\n  uVar5 = *(uint *)(uVar5 + 0x14);\n  if (iVar6 < 0) {\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }\n  iVar2 = *(int *)(param_2 + 0xc);\n  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);\n  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);\n  iVar4 = iVar2 - iVar7;\n  uVar8 = iVar4 - uVar3;\n  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;\n  iVar7 = *(int *)(param_2 + 0x10);\n  iVar4 = iVar7 + uVar5;\n  if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }\nLAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);\n  uVar5 = (uint)bVar1;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }\nLAB_000abae2:\n                    \n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);\n}" (primitive_type "void") (function_declarator "FUN_000ab930(int param_1,int param_2,int param_3,undefined4 param_4)" (identifier "FUN_000ab930") (parameter_list "(int param_1,int param_2,int param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  bool bVar14;\n  \n  uVar5 = *(uint *)(param_1 + 0x1a4);\n  if (uVar5 == 0) {\n    return;\n  }\n  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;\n  uVar8 = *(uint *)(uVar5 + 0xc);\n  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;\n  iVar6 = *(int *)(uVar5 + 0x18);\n  uVar5 = *(uint *)(uVar5 + 0x14);\n  if (iVar6 < 0) {\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }\n  iVar2 = *(int *)(param_2 + 0xc);\n  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);\n  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);\n  iVar4 = iVar2 - iVar7;\n  uVar8 = iVar4 - uVar3;\n  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;\n  iVar7 = *(int *)(param_2 + 0x10);\n  iVar4 = iVar7 + uVar5;\n  if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }\nLAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);\n  uVar5 = (uint)bVar1;\n  if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }\nLAB_000abae2:\n                    \n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (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 "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (expression_statement "uVar5 = *(uint *)(param_1 + 0x1a4);" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x1a4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(param_1 + 0x1a4)" (* "*") (cast_expression "(uint *)(param_1 + 0x1a4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a4)" (( "(") (binary_expression "param_1 + 0x1a4" (identifier "param_1") (+ "+") (number_literal "0x1a4")) () ")"))))) (; ";")) (if_statement "if (uVar5 == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;" (if "if") (parenthesized_expression "((*(byte *)(uVar5 + 0x1c) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(uVar5 + 0x1c) & 2) == 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x1c) & 2)" (( "(") (binary_expression "*(byte *)(uVar5 + 0x1c) & 2" (pointer_expression "*(byte *)(uVar5 + 0x1c)" (* "*") (cast_expression "(byte *)(uVar5 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x1c)" (( "(") (binary_expression "uVar5 + 0x1c" (identifier "uVar5") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000abae2;" (goto "goto") (statement_identifier "LAB_000abae2") (; ";"))) (expression_statement "uVar8 = *(uint *)(uVar5 + 0xc);" (assignment_expression "uVar8 = *(uint *)(uVar5 + 0xc)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(uVar5 + 0xc)" (* "*") (cast_expression "(uint *)(uVar5 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0xc)" (( "(") (binary_expression "uVar5 + 0xc" (identifier "uVar5") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;" (if "if") (parenthesized_expression "((*(byte *)(uVar5 + 0x1c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(uVar5 + 0x1c) & 4) == 0" (parenthesized_expression "(*(byte *)(uVar5 + 0x1c) & 4)" (( "(") (binary_expression "*(byte *)(uVar5 + 0x1c) & 4" (pointer_expression "*(byte *)(uVar5 + 0x1c)" (* "*") (cast_expression "(byte *)(uVar5 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x1c)" (( "(") (binary_expression "uVar5 + 0x1c" (identifier "uVar5") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000abab3;" (goto "goto") (statement_identifier "LAB_000abab3") (; ";"))) (expression_statement "iVar6 = *(int *)(uVar5 + 0x18);" (assignment_expression "iVar6 = *(int *)(uVar5 + 0x18)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(uVar5 + 0x18)" (* "*") (cast_expression "(int *)(uVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x18)" (( "(") (binary_expression "uVar5 + 0x18" (identifier "uVar5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(uint *)(uVar5 + 0x14);" (assignment_expression "uVar5 = *(uint *)(uVar5 + 0x14)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(uVar5 + 0x14)" (* "*") (cast_expression "(uint *)(uVar5 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 0x14)" (( "(") (binary_expression "uVar5 + 0x14" (identifier "uVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar6 < 0) {\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }" (if "if") (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);\n  }" ({ "{") (labeled_statement "LAB_000abacc:\n                    \n    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);" (statement_identifier "LAB_000abacc") (: ":") (expression_statement "FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);" (call_expression "FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6)" (identifier "FUN_0008b620") (argument_list "("../../gold/output.h",0x6f,"get_output_view",iVar6)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x6f") (, ",") (string_literal ""get_output_view"" (" """) (string_content "get_output_view") (" """)) (, ",") (identifier "iVar6") () ")"))) (; ";"))) (} "}"))) (expression_statement "iVar2 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar2 = *(int *)(param_2 + 0xc)" (identifier "iVar2") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);" (assignment_expression "iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5)" (identifier "iVar7") (= "=") (binary_expression "iVar6 + (uint)CARRY4(uVar8,uVar5)" (identifier "iVar6") (+ "+") (cast_expression "(uint)CARRY4(uVar8,uVar5)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar8,uVar5)" (identifier "CARRY4") (argument_list "(uVar8,uVar5)" (( "(") (identifier "uVar8") (, ",") (identifier "uVar5") () ")")))))) (; ";")) (expression_statement "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);" (assignment_expression "uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5)" (identifier "uVar3") (= "=") (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_2 + 8) < uVar8 + uVar5)" (( "(") (binary_expression "*(uint *)(param_2 + 8) < uVar8 + 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")) () ")")))) (< "<") (binary_expression "uVar8 + uVar5" (identifier "uVar8") (+ "+") (identifier "uVar5"))) () ")")))) (; ";")) (expression_statement "iVar4 = iVar2 - iVar7;" (assignment_expression "iVar4 = iVar2 - iVar7" (identifier "iVar4") (= "=") (binary_expression "iVar2 - iVar7" (identifier "iVar2") (- "-") (identifier "iVar7"))) (; ";")) (expression_statement "uVar8 = iVar4 - uVar3;" (assignment_expression "uVar8 = iVar4 - uVar3" (identifier "uVar8") (= "=") (binary_expression "iVar4 - uVar3" (identifier "iVar4") (- "-") (identifier "uVar3"))) (; ";")) (if_statement "if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;" (if "if") (parenthesized_expression "((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0)" (( "(") (binary_expression "(SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0" (parenthesized_expression "(SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3))" (( "(") (binary_expression "SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)" (call_expression "SBORROW4(iVar2,iVar7)" (identifier "SBORROW4") (argument_list "(iVar2,iVar7)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar7") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar4,uVar3)" (identifier "SBORROW4") (argument_list "(iVar4,uVar3)" (( "(") (identifier "iVar4") (, ",") (identifier "uVar3") () ")")))) () ")")) (!= "!=") (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_000abacc;" (goto "goto") (statement_identifier "LAB_000abacc") (; ";"))) (expression_statement "iVar7 = *(int *)(param_2 + 0x10);" (assignment_expression "iVar7 = *(int *)(param_2 + 0x10)" (identifier "iVar7") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "iVar4 = iVar7 + uVar5;" (assignment_expression "iVar4 = iVar7 + uVar5" (identifier "iVar4") (= "=") (binary_expression "iVar7 + uVar5" (identifier "iVar7") (+ "+") (identifier "uVar5"))) (; ";")) (if_statement "if (param_3 == 0) {\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }\n  else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = *(uint *)(param_1 + 0x1bc);\n    iVar6 = param_1;\n    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;\n    bVar12 = false;\n    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;\n    if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }\n    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);\n    iVar6 = 5;\n    pbVar9 = pbVar10;\n    pbVar11 = &DAT_002551f0;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);\n    bVar13 = false;\n    bVar12 = (!bVar12 && !bVar14) == bVar12;\n    if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }\n    FUN_001a65b0(iVar7,uVar8,iVar4);\n  }" ({ "{") (expression_statement "uVar8 = *(uint *)(param_1 + 0x1bc);" (assignment_expression "uVar8 = *(uint *)(param_1 + 0x1bc)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(param_1 + 0x1bc)" (* "*") (cast_expression "(uint *)(param_1 + 0x1bc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1bc)" (( "(") (binary_expression "param_1 + 0x1bc" (identifier "param_1") (+ "+") (number_literal "0x1bc")) () ")"))))) (; ";")) (expression_statement "iVar6 = param_1;" (assignment_expression "iVar6 = param_1" (identifier "iVar6") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;" (if "if") (parenthesized_expression "(iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8))" (( "(") (binary_expression "iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)" (identifier "iVar2") (< "<") (cast_expression "(int)(uint)(*(uint *)(param_2 + 8) < uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(*(uint *)(param_2 + 8) < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_2 + 8) < uVar8)" (( "(") (binary_expression "*(uint *)(param_2 + 8) < uVar8" (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 "uVar8")) () ")"))))) () ")")) (goto_statement "goto LAB_000abacc;" (goto "goto") (statement_identifier "LAB_000abacc") (; ";"))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (expression_statement "bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;" (assignment_expression "bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0" (identifier "bVar14") (= "=") (binary_expression "*(int *)(DAT_0033f2f0 + 8) == 0" (pointer_expression "*(int *)(DAT_0033f2f0 + 8)" (* "*") (cast_expression "(int *)(DAT_0033f2f0 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0033f2f0 + 8)" (( "(") (binary_expression "DAT_0033f2f0 + 8" (identifier "DAT_0033f2f0") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar14) {\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }" (if "if") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (compound_statement "{\n                    \n      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);\n    }" ({ "{") (expression_statement "FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_0008b620("../../gold/parameters.h",0x5c,"options",0)" (identifier "FUN_0008b620") (argument_list "("../../gold/parameters.h",0x5c,"options",0)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (expression_statement "pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);" (assignment_expression "pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" (identifier "pbVar10") (= "=") (pointer_expression "*(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" (* "*") (cast_expression "(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(DAT_0033f2f0 + 8) + 0x478)" (( "(") (binary_expression "*(int *)(DAT_0033f2f0 + 8) + 0x478" (pointer_expression "*(int *)(DAT_0033f2f0 + 8)" (* "*") (cast_expression "(int *)(DAT_0033f2f0 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0033f2f0 + 8)" (( "(") (binary_expression "DAT_0033f2f0 + 8" (identifier "DAT_0033f2f0") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x478")) () ")"))))) (; ";")) (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" (identifier "iVar6") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" (identifier "pbVar9") (= "=") (identifier "pbVar10")) (; ";")) (expression_statement "pbVar11 = &DAT_002551f0;" (assignment_expression "pbVar11 = &DAT_002551f0" (identifier "pbVar11") (= "=") (pointer_expression "&DAT_002551f0" (& "&") (identifier "DAT_002551f0"))) (; ";")) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    } while (bVar14);" (do "do") (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar11;\n      bVar14 = *pbVar9 == *pbVar11;\n      pbVar9 = pbVar9 + 1;\n      pbVar11 = pbVar11 + 1;\n    }" ({ "{") (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar12 = *pbVar9 < *pbVar11;" (assignment_expression "bVar12 = *pbVar9 < *pbVar11" (identifier "bVar12") (= "=") (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "bVar14 = *pbVar9 == *pbVar11;" (assignment_expression "bVar14 = *pbVar9 == *pbVar11" (identifier "bVar14") (= "=") (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (; ";")) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = (!bVar12 && !bVar14) == bVar12;" (assignment_expression "bVar12 = (!bVar12 && !bVar14) == bVar12" (identifier "bVar12") (= "=") (binary_expression "(!bVar12 && !bVar14) == bVar12" (parenthesized_expression "(!bVar12 && !bVar14)" (( "(") (binary_expression "!bVar12 && !bVar14" (unary_expression "!bVar12" (! "!") (identifier "bVar12")) (&& "&&") (unary_expression "!bVar14" (! "!") (identifier "bVar14"))) () ")")) (== "==") (identifier "bVar12"))) (; ";")) (if_statement "if (!bVar12) {\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }" (if "if") (parenthesized_expression "(!bVar12)" (( "(") (unary_expression "!bVar12" (! "!") (identifier "bVar12")) () ")")) (compound_statement "{\n      iVar6 = 5;\n      pbVar9 = pbVar10;\n      pbVar11 = &DAT_00253013;\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);\n      bVar14 = false;\n      bVar12 = (!bVar13 && !bVar12) == bVar13;\n      if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }\n    }" ({ "{") (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" (identifier "iVar6") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" (identifier "pbVar9") (= "=") (identifier "pbVar10")) (; ";")) (expression_statement "pbVar11 = &DAT_00253013;" (assignment_expression "pbVar11 = &DAT_00253013" (identifier "pbVar11") (= "=") (pointer_expression "&DAT_00253013" (& "&") (identifier "DAT_00253013"))) (; ";")) (do_statement "do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar12);" (do "do") (compound_statement "{\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar13 = *pbVar9 < *pbVar11;\n        bVar12 = *pbVar9 == *pbVar11;\n        pbVar9 = pbVar9 + 1;\n        pbVar11 = pbVar11 + 1;\n      }" ({ "{") (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar9 < *pbVar11;" (assignment_expression "bVar13 = *pbVar9 < *pbVar11" (identifier "bVar13") (= "=") (binary_expression "*pbVar9 < *pbVar11" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "bVar12 = *pbVar9 == *pbVar11;" (assignment_expression "bVar12 = *pbVar9 == *pbVar11" (identifier "bVar12") (= "=") (binary_expression "*pbVar9 == *pbVar11" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = (!bVar13 && !bVar12) == bVar13;" (assignment_expression "bVar12 = (!bVar13 && !bVar12) == bVar13" (identifier "bVar12") (= "=") (binary_expression "(!bVar13 && !bVar12) == bVar13" (parenthesized_expression "(!bVar13 && !bVar12)" (( "(") (binary_expression "!bVar13 && !bVar12" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar12" (! "!") (identifier "bVar12"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (!bVar12) {\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }" (if "if") (parenthesized_expression "(!bVar12)" (( "(") (unary_expression "!bVar12" (! "!") (identifier "bVar12")) () ")")) (compound_statement "{\n        iVar6 = 4;\n        pbVar9 = &DAT_002551f5;\n        do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);\n        if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }\n        FUN_001a4e60(iVar7,uVar8,iVar4);\n        goto LAB_000ab9d3;\n      }" ({ "{") (expression_statement "iVar6 = 4;" (assignment_expression "iVar6 = 4" (identifier "iVar6") (= "=") (number_literal "4")) (; ";")) (expression_statement "pbVar9 = &DAT_002551f5;" (assignment_expression "pbVar9 = &DAT_002551f5" (identifier "pbVar9") (= "=") (pointer_expression "&DAT_002551f5" (& "&") (identifier "DAT_002551f5"))) (; ";")) (do_statement "do {\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        } while (bVar12);" (do "do") (compound_statement "{\n          if (iVar6 == 0) break;\n          iVar6 = iVar6 + -1;\n          bVar14 = *pbVar10 < *pbVar9;\n          bVar12 = *pbVar10 == *pbVar9;\n          pbVar10 = pbVar10 + 1;\n          pbVar9 = pbVar9 + 1;\n        }" ({ "{") (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar10 < *pbVar9;" (assignment_expression "bVar14 = *pbVar10 < *pbVar9" (identifier "bVar14") (= "=") (binary_expression "*pbVar10 < *pbVar9" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (< "<") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "bVar12 = *pbVar10 == *pbVar9;" (assignment_expression "bVar12 = *pbVar10 == *pbVar9" (identifier "bVar12") (= "=") (binary_expression "*pbVar10 == *pbVar9" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (== "==") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (; ";")) (if_statement "if ((!bVar14 && !bVar12) != bVar14) {\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }" (if "if") (parenthesized_expression "((!bVar14 && !bVar12) != bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar12) != bVar14" (parenthesized_expression "(!bVar14 && !bVar12)" (( "(") (binary_expression "!bVar14 && !bVar12" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar12" (! "!") (identifier "bVar12"))) () ")")) (!= "!=") (identifier "bVar14")) () ")")) (compound_statement "{\n                    \n          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);\n        }" ({ "{") (expression_statement "FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);" (call_expression "FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4)" (identifier "FUN_0008b620") (argument_list "("../../gold/layout.cc",0x16f7,"write_build_id",iVar4)" (( "(") (string_literal ""../../gold/layout.cc"" (" """) (string_content "../../gold/layout.cc") (" """)) (, ",") (number_literal "0x16f7") (, ",") (string_literal ""write_build_id"" (" """) (string_content "write_build_id") (" """)) (, ",") (identifier "iVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001a4e60(iVar7,uVar8,iVar4);" (call_expression "FUN_001a4e60(iVar7,uVar8,iVar4)" (identifier "FUN_001a4e60") (argument_list "(iVar7,uVar8,iVar4)" (( "(") (identifier "iVar7") (, ",") (identifier "uVar8") (, ",") (identifier "iVar4") () ")"))) (; ";")) (goto_statement "goto LAB_000ab9d3;" (goto "goto") (statement_identifier "LAB_000ab9d3") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_001a65b0(iVar7,uVar8,iVar4);" (call_expression "FUN_001a65b0(iVar7,uVar8,iVar4)" (identifier "FUN_001a65b0") (argument_list "(iVar7,uVar8,iVar4)" (( "(") (identifier "iVar7") (, ",") (identifier "uVar8") (, ",") (identifier "iVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" (else "else") (compound_statement "{\n    FUN_001a65b0(param_3,param_4,iVar4);\n    FUN_001ac410(param_3);\n  }" ({ "{") (expression_statement "FUN_001a65b0(param_3,param_4,iVar4);" (call_expression "FUN_001a65b0(param_3,param_4,iVar4)" (identifier "FUN_001a65b0") (argument_list "(param_3,param_4,iVar4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "FUN_001ac410(param_3);" (call_expression "FUN_001ac410(param_3)" (identifier "FUN_001ac410") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_000ab9d3:\n  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);" (statement_identifier "LAB_000ab9d3") (: ":") (expression_statement "bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);" (assignment_expression "bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" (* "*") (cast_expression "(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x1a4) + 0x1c)" (( "(") (binary_expression "*(int *)(param_1 + 0x1a4) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x1a4)" (* "*") (cast_expression "(int *)(param_1 + 0x1a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a4)" (( "(") (binary_expression "param_1 + 0x1a4" (identifier "param_1") (+ "+") (number_literal "0x1a4")) () ")")))) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";"))) (expression_statement "uVar5 = (uint)bVar1;" (assignment_expression "uVar5 = (uint)bVar1" (identifier "uVar5") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if ((bVar1 & 2) != 0) {\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }" (if "if") (parenthesized_expression "((bVar1 & 2) != 0)" (( "(") (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((bVar1 & 4) != 0) {\n      return;\n    }\nLAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);\n  }" ({ "{") (if_statement "if ((bVar1 & 4) != 0) {\n      return;\n    }" (if "if") (parenthesized_expression "((bVar1 & 4) != 0)" (( "(") (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" (( "(") (binary_expression "bVar1 & 4" (identifier "bVar1") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_000abab3:\n                    \n    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);" (statement_identifier "LAB_000abab3") (: ":") (expression_statement "FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);" (call_expression "FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8)" (identifier "FUN_0008b620") (argument_list "("../../gold/output.h",0xe3,"offset",uVar8)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) (, ",") (identifier "uVar8") () ")"))) (; ";"))) (} "}"))) (labeled_statement "LAB_000abae2:\n                    \n  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);" (statement_identifier "LAB_000abae2") (: ":") (expression_statement "FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);" (call_expression "FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5)" (identifier "FUN_0008b620") (argument_list "("../../gold/output.h",0xcf,"data_size",uVar5)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xcf") (, ",") (string_literal ""data_size"" (" """) (string_content "data_size") (" """)) (, ",") (identifier "uVar5") () ")"))) (; ";"))) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void write_build_id(Layout * this, Output_file * of, uchar *
   array_of_hashes, size_t size_of_hashes) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *of,type_3 *var_13,size_t size_of_hashes)

{
  type_3 *resblock;
  type_4 var_2;
  type_5 *var_1;
  type_6 var_8;
  type_6 var_6;
  int var_9;
  type_3 *var_12;
  type_6 var_7;
  int var_11;
  int var_3;
  type_4 *var_14;
  type_4 *var_18;
  type_4 *var_15;
  bool var_16;
  bool var_17;
  bool var_19;
  
  var_1 = this->build_id_note_;
  if (var_1 == (type_5 *)0x0) {
    return;
  }
  var_2 = (var_1->super_Output_data).field_0x1c;
  if ((var_2 & 2) == 0) goto LAB_000abae2;
  var_7 = (type_6)(var_1->super_Output_data).data_size_;
  if ((var_2 & 4) == 0) goto LAB_000abab3;
  var_3 = *(int *)((int)&(var_1->super_Output_data).offset_ + 4);
  var_8 = (type_6)(var_1->super_Output_data).offset_;
  if (var_3 < 0) {
LAB_000abacc:
                    /* WARNING: Subroutine does not return */
    var_4("../../gold/output.h",0x6f,"get_output_view");
  }
  var_6 = (type_6)of->file_size_;
  var_9 = *(int *)((int)&of->file_size_ + 4);
  var_3 = var_3 + (type_6)var_5(var_7,var_8);
  var_7 = (type_6)(var_6 < var_7 + var_8);
  var_11 = var_9 - var_3;
  if ((var_10(var_9,var_3) != var_10(var_11,var_7)) != (int)(var_11 - var_7) < 0)
  goto LAB_000abacc;
  var_12 = of->base_;
  resblock = var_12 + var_8;
  if (var_13 == (type_3 *)0x0) {
    var_7 = (type_6)this->output_file_size_;
    if (var_9 < (int)(type_6)(var_6 < var_7)) goto LAB_000abacc;
    var_16 = false;
    var_19 = parameters->options_ == (type_7 *)0x0;
    if (var_19) {
                    /* WARNING: Subroutine does not return */
      var_4("../../gold/parameters.h",0x5c,"options");
    }
    var_18 = (type_4 *)(parameters->options_->build_id_).value;
    var_3 = 5;
    var_14 = var_18;
    var_15 = &DAT_002551f0;
    do {
      if (var_3 == 0) break;
      var_3 = var_3 + -1;
      var_16 = *var_14 < *var_15;
      var_19 = *var_14 == *var_15;
      var_14 = var_14 + 1;
      var_15 = var_15 + 1;
    } while (var_19);
    var_17 = false;
    var_16 = (!var_16 && !var_19) == var_16;
    if (!var_16) {
      var_3 = 5;
      var_14 = var_18;
      var_15 = &DAT_00253013;
      do {
        if (var_3 == 0) break;
        var_3 = var_3 + -1;
        var_17 = *var_14 < *var_15;
        var_16 = *var_14 == *var_15;
        var_14 = var_14 + 1;
        var_15 = var_15 + 1;
      } while (var_16);
      var_19 = false;
      var_16 = (!var_17 && !var_16) == var_17;
      if (!var_16) {
        var_3 = 4;
        var_14 = &DAT_002551f5;
        do {
          if (var_3 == 0) break;
          var_3 = var_3 + -1;
          var_19 = *var_18 < *var_14;
          var_16 = *var_18 == *var_14;
          var_18 = var_18 + 1;
          var_14 = var_14 + 1;
        } while (var_16);
        if ((!var_19 && !var_16) != var_19) {
                    /* WARNING: Subroutine does not return */
          var_4("../../gold/layout.cc",0x16f7,"write_build_id");
        }
        var_20((char *)var_12,var_7,resblock);
        goto LAB_000ab9d3;
      }
    }
    var_21((char *)var_12,var_7,resblock);
  }
  else {
    var_21((char *)var_13,size_of_hashes,resblock);
    var_22(var_13);
  }
LAB_000ab9d3:
  var_2 = (this->build_id_note_->super_Output_data).field_0x1c;
  if ((var_2 & 2) != 0) {
    if ((var_2 & 4) != 0) {
      return;
    }
LAB_000abab3:
                    /* WARNING: Subroutine does not return */
    var_4("../../gold/output.h",0xe3,"offset");
  }
LAB_000abae2:
                    /* WARNING: Subroutine does not return */
  var_4("../../gold/output.h",0xcf,"data_size");
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

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

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  byte *pbVar9;
  byte *pbVar10;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  bool bVar14;
  
  uVar5 = *(uint *)(param_1 + 0x1a4);
  if (uVar5 == 0) {
    return;
  }
  if ((*(byte *)(uVar5 + 0x1c) & 2) == 0) goto LAB_000abae2;
  uVar8 = *(uint *)(uVar5 + 0xc);
  if ((*(byte *)(uVar5 + 0x1c) & 4) == 0) goto LAB_000abab3;
  iVar6 = *(int *)(uVar5 + 0x18);
  uVar5 = *(uint *)(uVar5 + 0x14);
  if (iVar6 < 0) {
LAB_000abacc:
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/output.h",0x6f,"get_output_view",iVar6);
  }
  iVar2 = *(int *)(param_2 + 0xc);
  iVar7 = iVar6 + (uint)CARRY4(uVar8,uVar5);
  uVar3 = (uint)(*(uint *)(param_2 + 8) < uVar8 + uVar5);
  iVar4 = iVar2 - iVar7;
  uVar8 = iVar4 - uVar3;
  if ((SBORROW4(iVar2,iVar7) != SBORROW4(iVar4,uVar3)) != (int)uVar8 < 0) goto LAB_000abacc;
  iVar7 = *(int *)(param_2 + 0x10);
  iVar4 = iVar7 + uVar5;
  if (param_3 == 0) {
    uVar8 = *(uint *)(param_1 + 0x1bc);
    iVar6 = param_1;
    if (iVar2 < (int)(uint)(*(uint *)(param_2 + 8) < uVar8)) goto LAB_000abacc;
    bVar12 = false;
    bVar14 = *(int *)(DAT_0033f2f0 + 8) == 0;
    if (bVar14) {
                    /* WARNING: Subroutine does not return */
      FUN_0008b620("../../gold/parameters.h",0x5c,"options",0);
    }
    pbVar10 = *(byte **)(*(int *)(DAT_0033f2f0 + 8) + 0x478);
    iVar6 = 5;
    pbVar9 = pbVar10;
    pbVar11 = &DAT_002551f0;
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar12 = *pbVar9 < *pbVar11;
      bVar14 = *pbVar9 == *pbVar11;
      pbVar9 = pbVar9 + 1;
      pbVar11 = pbVar11 + 1;
    } while (bVar14);
    bVar13 = false;
    bVar12 = (!bVar12 && !bVar14) == bVar12;
    if (!bVar12) {
      iVar6 = 5;
      pbVar9 = pbVar10;
      pbVar11 = &DAT_00253013;
      do {
        if (iVar6 == 0) break;
        iVar6 = iVar6 + -1;
        bVar13 = *pbVar9 < *pbVar11;
        bVar12 = *pbVar9 == *pbVar11;
        pbVar9 = pbVar9 + 1;
        pbVar11 = pbVar11 + 1;
      } while (bVar12);
      bVar14 = false;
      bVar12 = (!bVar13 && !bVar12) == bVar13;
      if (!bVar12) {
        iVar6 = 4;
        pbVar9 = &DAT_002551f5;
        do {
          if (iVar6 == 0) break;
          iVar6 = iVar6 + -1;
          bVar14 = *pbVar10 < *pbVar9;
          bVar12 = *pbVar10 == *pbVar9;
          pbVar10 = pbVar10 + 1;
          pbVar9 = pbVar9 + 1;
        } while (bVar12);
        if ((!bVar14 && !bVar12) != bVar14) {
                    /* WARNING: Subroutine does not return */
          FUN_0008b620("../../gold/layout.cc",0x16f7,"write_build_id",iVar4);
        }
        FUN_001a4e60(iVar7,uVar8,iVar4);
        goto LAB_000ab9d3;
      }
    }
    FUN_001a65b0(iVar7,uVar8,iVar4);
  }
  else {
    FUN_001a65b0(param_3,param_4,iVar4);
    FUN_001ac410(param_3);
  }
LAB_000ab9d3:
  bVar1 = *(byte *)(*(int *)(param_1 + 0x1a4) + 0x1c);
  uVar5 = (uint)bVar1;
  if ((bVar1 & 2) != 0) {
    if ((bVar1 & 4) != 0) {
      return;
    }
LAB_000abab3:
                    /* WARNING: Subroutine does not return */
    FUN_0008b620("../../gold/output.h",0xe3,"offset",uVar8);
  }
LAB_000abae2:
                    /* WARNING: Subroutine does not return */
  FUN_0008b620("../../gold/output.h",0xcf,"data_size",uVar5);
}

