
/* DWARF original prototype: bool operator()(Input_section_sort_compare * this,
   Input_section_sort_entry * s1, Input_section_sort_entry * s2) */

bool __thiscall
gold::Output_section::Input_section_sort_compare::operator()
          (Input_section_sort_compare *this,Input_section_sort_entry *s1,
          Input_section_sort_entry *s2)

{
  uint uVar1;
  uint uVar2;
  ulong uVar3;
  ulong uVar4;
  bool bVar5;
  bool bVar6;
  int iVar7;
  Relobj *pRVar8;
  long lVar9;
  long lVar10;
  uint extraout_EDX;
  uint uVar11;
  size_t extraout_RDX;
  char *__s;
  size_t __n;
  
  if ((s1->input_section_).shndx_ == 0xffffffff) {
    if ((s2->input_section_).shndx_ != 0xffffffff) {
      pRVar8 = Input_section::relobj(&s2->input_section_);
      bVar5 = Layout::match_file_name(pRVar8,"crtbegin");
      if (bVar5) {
        return false;
      }
      goto LAB_001eee70;
    }
  }
  else {
    pRVar8 = Input_section::relobj(&s1->input_section_);
    bVar5 = Layout::match_file_name(pRVar8,"crtbegin");
    if ((s2->input_section_).shndx_ == 0xffffffff) {
      if (bVar5) {
        return true;
      }
      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;
    }
    else {
      pRVar8 = Input_section::relobj(&s2->input_section_);
      __s = "crtbegin";
      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");
      if (bVar6) {
        if (!bVar5) {
          return false;
        }
        uVar11 = extraout_EDX;
        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {
          return s1->index_ < uVar11;
        }
        goto LAB_001ef00d;
      }
      if (bVar5) {
        return true;
      }
LAB_001eee70:
      if ((s1->input_section_).shndx_ == 0xffffffff) {
        if ((s2->input_section_).shndx_ != 0xffffffff) {
          pRVar8 = Input_section::relobj(&s2->input_section_);
          bVar5 = Layout::match_file_name(pRVar8,"crtend");
          if (bVar5) {
            return true;
          }
        }
        goto LAB_001eee00;
      }
    }
    pRVar8 = Input_section::relobj(&s1->input_section_);
    bVar5 = Layout::match_file_name(pRVar8,"crtend");
    if ((s2->input_section_).shndx_ != 0xffffffff) {
      pRVar8 = Input_section::relobj(&s2->input_section_);
      __s = "crtend";
      bVar6 = Layout::match_file_name(pRVar8,"crtend");
      if (bVar6) {
        if (!bVar5) {
          return true;
        }
        uVar11 = s1->index_;
        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {
          return uVar11 < s2->index_;
        }
        goto LAB_001ef00d;
      }
    }
    if (bVar5) {
      return false;
    }
  }
LAB_001eee00:
  lVar9 = std::string::find((string *)&s1->section_name_,'.',1);
  pRVar8 = (Relobj *)&s2->section_name_;
  lVar10 = std::string::find((string *)pRVar8,'.',1);
  if ((lVar9 != -1) && (lVar10 == -1)) {
    return false;
  }
  if (lVar10 == -1 || lVar9 != -1) {
    uVar1 = s2->index_;
    uVar11 = (s1->input_section_).section_order_index_;
    __s = (char *)(ulong)uVar11;
    if (uVar1 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");
    }
    uVar2 = (s2->input_section_).section_order_index_;
    if (uVar11 != 0 && uVar2 != 0) {
      if (uVar11 < uVar2) {
        return uVar11 != 0 && uVar2 != 0;
      }
      if (uVar11 >= uVar2 && uVar11 != uVar2) {
        return false;
      }
    }
    uVar3 = (s1->section_name_)._M_string_length;
    uVar4 = (s2->section_name_)._M_string_length;
    __n = uVar4;
    if (uVar3 <= uVar4) {
      __n = uVar3;
    }
    if (__n != 0) {
      __s = (s2->section_name_)._M_dataplus._M_p;
      pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;
      iVar7 = memcmp(pRVar8,__s,__n);
      __n = extraout_RDX;
      if (iVar7 != 0) {
        return SUB41((uint)iVar7 >> 0x1f,0);
      }
    }
    uVar11 = (uint)__n;
    lVar9 = uVar3 - uVar4;
    if (0x7fffffff < lVar9) {
      return false;
    }
    if (-0x80000001 < lVar9) {
      if ((int)lVar9 != 0) {
        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);
      }
      if (s1->index_ != 0xffffffff) {
        return s1->index_ < uVar1;
      }
LAB_001ef00d:
                    /* WARNING: Subroutine does not return */
      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);
    }
  }
  return true;
}



uint FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)

{
  uint uVar1;
  uint uVar2;
  ulong uVar3;
  ulong uVar4;
  char cVar5;
  char cVar6;
  uint uVar7;
  undefined8 uVar8;
  long lVar9;
  long lVar10;
  ulong __n;
  
  if (*param_2 == -1) {
    if (*param_3 != -1) {
      uVar8 = FUN_001ee640(param_3);
      cVar5 = FUN_001b5df0(uVar8,"crtbegin");
      if (cVar5 != '\0') {
        return 0;
      }
LAB_001eee70:
      if (*param_2 == -1) {
        if (*param_3 != -1) {
          uVar8 = FUN_001ee640(param_3);
          cVar5 = FUN_001b5df0(uVar8,"crtend");
          if (cVar5 != '\0') {
            return 1;
          }
        }
      }
      else {
LAB_001eee79:
        uVar8 = FUN_001ee640(param_2);
        cVar5 = FUN_001b5df0(uVar8,"crtend");
        if (*param_3 != -1) {
          uVar8 = FUN_001ee640(param_3);
          cVar6 = FUN_001b5df0(uVar8,"crtend");
          if (cVar6 != '\0') {
            if (cVar5 == '\0') {
              return 1;
            }
            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {
              return (uint)((uint)param_2[8] < (uint)param_3[8]);
            }
            goto LAB_001ef00d;
          }
        }
        if (cVar5 != '\0') {
          return 0;
        }
      }
    }
LAB_001eee00:
    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);
    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);
    if ((lVar9 != -1) && (lVar10 == -1)) {
      return 0;
    }
    if (lVar10 != -1 && lVar9 == -1) {
      return 1;
    }
    uVar1 = param_3[8];
    uVar7 = param_2[6];
    if (uVar1 == 0xffffffff) goto LAB_001ef012;
    uVar2 = param_3[6];
    if (uVar7 != 0 && uVar2 != 0) {
      if (uVar7 < uVar2) {
        return (uint)(uVar7 != 0 && uVar2 != 0);
      }
      if (uVar7 >= uVar2 && uVar7 != uVar2) {
        return 0;
      }
    }
    uVar3 = *(ulong *)(param_2 + 0xc);
    uVar4 = *(ulong *)(param_3 + 0xc);
    __n = uVar4;
    if (uVar3 <= uVar4) {
      __n = uVar3;
    }
    if ((__n != 0) &&
       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {
      return uVar7 >> 0x1f;
    }
    lVar9 = uVar3 - uVar4;
    if (0x7fffffff < lVar9) {
      return 0;
    }
    if (lVar9 < -0x80000000) {
      return 1;
    }
    if ((uint)lVar9 != 0) {
      return (uint)lVar9 >> 0x1f;
    }
    if (param_2[8] != 0xffffffff) {
      return (uint)((uint)param_2[8] < uVar1);
    }
  }
  else {
    uVar8 = FUN_001ee640(param_2);
    cVar5 = FUN_001b5df0(uVar8,"crtbegin");
    if (*param_3 == -1) {
      if (cVar5 != '\0') {
        return 1;
      }
      if (*param_2 != -1) goto LAB_001eee79;
      goto LAB_001eee00;
    }
    uVar8 = FUN_001ee640(param_3);
    cVar6 = FUN_001b5df0(uVar8,"crtbegin");
    if (cVar6 == '\0') {
      if (cVar5 != '\0') {
        return 1;
      }
      goto LAB_001eee70;
    }
    if (cVar5 == '\0') {
      return 0;
    }
    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {
      return (uint)((uint)param_2[8] < (uint)param_3[8]);
    }
  }
LAB_001ef00d:
  FUN_001ed800();
LAB_001ef012:
                    /* WARNING: Subroutine does not return */
  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDX
PUSH RBX
CMP dword ptr [RSI],-0x1
MOV RBX,RSI
JZ 0x001eee50
MOV RDI,RSI
CALL 0x001ee640
LEA RSI,[0x3426c0]
MOV RDI,RAX
CALL 0x001b5df0
CMP dword ptr [RBP],-0x1
MOV R12D,EAX
JZ 0x001eedf0
MOV RDI,RBP
CALL 0x001ee640
LEA RSI,[0x3426c0]
MOV RDI,RAX
CALL 0x001b5df0
TEST AL,AL
JNZ 0x001eef50
TEST R12B,R12B
JZ 0x001eee70
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
TEST AL,AL
JNZ 0x001eeddf
CMP dword ptr [RBX],-0x1
JNZ 0x001eee79
NOP dword ptr [RAX]
LEA RDI,[RBX + 0x28]
MOV EDX,0x1
MOV ESI,0x2e
CALL 0x002ab0f0
LEA RDI,[RBP + 0x28]
MOV EDX,0x1
MOV ESI,0x2e
MOV R12,RAX
CALL 0x002ab0f0
CMP R12,-0x1
JZ 0x001eeed0
CMP RAX,-0x1
JNZ 0x001eeed0
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
CMP dword ptr [RDX],-0x1
JZ 0x001eee00
MOV RDI,RDX
CALL 0x001ee640
LEA RSI,[0x3426c0]
MOV RDI,RAX
CALL 0x001b5df0
TEST AL,AL
JNZ 0x001eee3d
CMP dword ptr [RBX],-0x1
JZ 0x001eef7f
MOV RDI,RBX
CALL 0x001ee640
LEA RSI,[0x3426c9]
MOV RDI,RAX
CALL 0x001b5df0
CMP dword ptr [RBP],-0x1
MOV R12D,EAX
JZ 0x001eeeb8
MOV RDI,RBP
CALL 0x001ee640
LEA RSI,[0x3426c9]
MOV RDI,RAX
CALL 0x001b5df0
TEST AL,AL
JNZ 0x001eefb0
TEST R12B,R12B
JZ 0x001eee00
XOR EAX,EAX
JMP 0x001eee3f
CMP RAX,-0x1
SETNZ DL
CMP R12,-0x1
SETZ AL
TEST DL,AL
JNZ 0x001eeddf
MOV R13D,dword ptr [RBP + 0x20]
MOV ESI,dword ptr [RBX + 0x18]
CMP R13D,-0x1
JZ 0x001ef012
MOV ECX,dword ptr [RBP + 0x18]
TEST ESI,ESI
SETNZ AL
TEST ECX,ECX
SETNZ DL
AND AL,DL
JZ 0x001eef16
CMP ESI,ECX
JC 0x001eede4
JA 0x001eee3d
MOV R12,qword ptr [RBX + 0x30]
MOV R14,qword ptr [RBP + 0x30]
CMP R12,R14
MOV RDX,R14
CMOVBE RDX,R12
TEST RDX,RDX
JZ 0x001eefd8
MOV RSI,qword ptr [RBP + 0x28]
MOV RDI,qword ptr [RBX + 0x28]
CALL 0x00144830
TEST EAX,EAX
JZ 0x001eefd8
SHR EAX,0x1f
JMP 0x001eede4
TEST R12B,R12B
JZ 0x001eee3d
MOV EAX,dword ptr [RBX + 0x20]
CMP EAX,-0x1
JZ 0x001ef00d
MOV EDX,dword ptr [RBP + 0x20]
CMP EDX,-0x1
JZ 0x001ef00d
CMP EAX,EDX
POP RBX
POP RBP
SETC AL
POP R12
POP R13
POP R14
RET
CMP dword ptr [RBP],-0x1
JZ 0x001eee00
MOV RDI,RBP
CALL 0x001ee640
LEA RSI,[0x3426c9]
MOV RDI,RAX
CALL 0x001b5df0
TEST AL,AL
JNZ 0x001eeddf
JMP 0x001eee00
TEST R12B,R12B
JZ 0x001eeddf
MOV EDX,dword ptr [RBX + 0x20]
CMP EDX,-0x1
JZ 0x001ef00d
MOV EAX,dword ptr [RBP + 0x20]
CMP EAX,-0x1
JZ 0x001ef00d
CMP EDX,EAX
SETC AL
JMP 0x001eede4
SUB R12,R14
CMP R12,0x7fffffff
JG 0x001eee3d
CMP R12,-0x80000000
JL 0x001eeddf
TEST R12D,R12D
JNZ 0x001ef02a
MOV EAX,dword ptr [RBX + 0x20]
CMP EAX,-0x1
JZ 0x001ef00d
CMP EAX,R13D
SETC AL
JMP 0x001eede4
CALL 0x001ed800
LEA RDX,[0x34b828]
MOV ESI,0xcf5
LEA RDI,[0x34a556]
CALL 0x00199900
SHR R12D,0x1f
MOV EAX,R12D
JMP 0x001eede4
(translation_unit "uint FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  char cVar5;\n  char cVar6;\n  uint uVar7;\n  undefined8 uVar8;\n  long lVar9;\n  long lVar10;\n  ulong __n;\n  \n  if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }\nLAB_001ef00d:\n  FUN_001ed800();\nLAB_001ef012:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");\n}\n\n" (function_definition "uint FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  char cVar5;\n  char cVar6;\n  uint uVar7;\n  undefined8 uVar8;\n  long lVar9;\n  long lVar10;\n  ulong __n;\n  \n  if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }\nLAB_001ef00d:\n  FUN_001ed800();\nLAB_001ef012:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");\n}" type_identifier (function_declarator "FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)" identifier (parameter_list "(undefined8 param_1,int *param_2,int *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  char cVar5;\n  char cVar6;\n  uint uVar7;\n  undefined8 uVar8;\n  long lVar9;\n  long lVar10;\n  ulong __n;\n  \n  if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }\nLAB_001ef00d:\n  FUN_001ed800();\nLAB_001ef012:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (if_statement "if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" if (parenthesized_expression "(*param_2 == -1)" ( (binary_expression "*param_2 == -1" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }" { (if_statement "if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }" if (parenthesized_expression "(*param_3 != -1)" ( (binary_expression "*param_3 != -1" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }" { (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" identifier = (call_expression "FUN_001ee640(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtbegin")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtbegin")" identifier (argument_list "(uVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") )))) ;) (if_statement "if (cVar5 != '\0') {\n        return 0;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" statement_identifier : (if_statement "if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" if (parenthesized_expression "(*param_2 == -1)" ( (binary_expression "*param_2 == -1" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }" { (if_statement "if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }" if (parenthesized_expression "(*param_3 != -1)" ( (binary_expression "*param_3 != -1" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }" { (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" identifier = (call_expression "FUN_001ee640(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtend")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtend")" identifier (argument_list "(uVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") )))) ;) (if_statement "if (cVar5 != '\0') {\n            return 1;\n          }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) })) }) (else_clause "else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" else (compound_statement "{\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" { (labeled_statement "LAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);" statement_identifier : (expression_statement "uVar8 = FUN_001ee640(param_2);" (assignment_expression "uVar8 = FUN_001ee640(param_2)" identifier = (call_expression "FUN_001ee640(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtend")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtend")" identifier (argument_list "(uVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") )))) ;) (if_statement "if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }" if (parenthesized_expression "(*param_3 != -1)" ( (binary_expression "*param_3 != -1" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }" { (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" identifier = (call_expression "FUN_001ee640(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "cVar6 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar6 = FUN_001b5df0(uVar8,"crtend")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtend")" identifier (argument_list "(uVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") )))) ;) (if_statement "if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }" { (if_statement "if (cVar5 == '\0') {\n              return 1;\n            }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              return 1;\n            }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }" if (parenthesized_expression "((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff))" ( (binary_expression "(param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)" (parenthesized_expression "(param_2[8] != 0xffffffff)" ( (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_3[8] != 0xffffffff)" ( (binary_expression "param_3[8] != 0xffffffff" (subscript_expression "param_3[8]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }" { (return_statement "return (uint)((uint)param_2[8] < (uint)param_3[8]);" return (call_expression "(uint)((uint)param_2[8] < (uint)param_3[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)param_2[8] < (uint)param_3[8])" ( (binary_expression "(uint)param_2[8] < (uint)param_3[8]" (cast_expression "(uint)param_2[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[8]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[8]" identifier [ number_literal ]))) ))) ;) })) (goto_statement "goto LAB_001ef00d;" goto statement_identifier ;) })) })) (if_statement "if (cVar5 != '\0') {\n          return 0;\n        }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })))) })) (labeled_statement "LAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);" statement_identifier : (expression_statement "lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);" (assignment_expression "lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1)" identifier = (call_expression "FUN_002ab0f0(param_2 + 10,0x2e,1)" identifier (argument_list "(param_2 + 10,0x2e,1)" ( (binary_expression "param_2 + 10" identifier + number_literal) , number_literal , number_literal )))) ;)) (expression_statement "lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);" (assignment_expression "lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1)" identifier = (call_expression "FUN_002ab0f0(param_3 + 10,0x2e,1)" identifier (argument_list "(param_3 + 10,0x2e,1)" ( (binary_expression "param_3 + 10" identifier + number_literal) , number_literal , number_literal )))) ;) (if_statement "if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }" if (parenthesized_expression "((lVar9 != -1) && (lVar10 == -1))" ( (binary_expression "(lVar9 != -1) && (lVar10 == -1)" (parenthesized_expression "(lVar9 != -1)" ( (binary_expression "lVar9 != -1" identifier != number_literal) )) && (parenthesized_expression "(lVar10 == -1)" ( (binary_expression "lVar10 == -1" identifier == number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }" if (parenthesized_expression "(lVar10 != -1 && lVar9 == -1)" ( (binary_expression "lVar10 != -1 && lVar9 == -1" (binary_expression "lVar10 != -1" identifier != number_literal) && (binary_expression "lVar9 == -1" identifier == number_literal)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar1 = param_3[8];" (assignment_expression "uVar1 = param_3[8]" identifier = (subscript_expression "param_3[8]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_2[6];" (assignment_expression "uVar7 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (if_statement "if (uVar1 == 0xffffffff) goto LAB_001ef012;" if (parenthesized_expression "(uVar1 == 0xffffffff)" ( (binary_expression "uVar1 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_001ef012;" goto statement_identifier ;)) (expression_statement "uVar2 = param_3[6];" (assignment_expression "uVar2 = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (if_statement "if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(uVar7 != 0 && uVar2 != 0)" ( (binary_expression "uVar7 != 0 && uVar2 != 0" (binary_expression "uVar7 != 0" identifier != number_literal) && (binary_expression "uVar2 != 0" identifier != number_literal)) )) (compound_statement "{\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }" { (if_statement "if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }" if (parenthesized_expression "(uVar7 < uVar2)" ( (binary_expression "uVar7 < uVar2" identifier < identifier) )) (compound_statement "{\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }" { (return_statement "return (uint)(uVar7 != 0 && uVar2 != 0);" return (call_expression "(uint)(uVar7 != 0 && uVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 != 0 && uVar2 != 0)" ( (binary_expression "uVar7 != 0 && uVar2 != 0" (binary_expression "uVar7 != 0" identifier != number_literal) && (binary_expression "uVar2 != 0" identifier != number_literal)) ))) ;) })) (if_statement "if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }" if (parenthesized_expression "(uVar7 >= uVar2 && uVar7 != uVar2)" ( (binary_expression "uVar7 >= uVar2 && uVar7 != uVar2" (binary_expression "uVar7 >= uVar2" identifier >= identifier) && (binary_expression "uVar7 != uVar2" identifier != identifier)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "uVar3 = *(ulong *)(param_2 + 0xc);" (assignment_expression "uVar3 = *(ulong *)(param_2 + 0xc)" identifier = (pointer_expression "*(ulong *)(param_2 + 0xc)" * (cast_expression "(ulong *)(param_2 + 0xc)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(ulong *)(param_3 + 0xc);" (assignment_expression "uVar4 = *(ulong *)(param_3 + 0xc)" identifier = (pointer_expression "*(ulong *)(param_3 + 0xc)" * (cast_expression "(ulong *)(param_3 + 0xc)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "__n = uVar4;" (assignment_expression "__n = uVar4" identifier = identifier) ;) (if_statement "if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }" if (parenthesized_expression "(uVar3 <= uVar4)" ( (binary_expression "uVar3 <= uVar4" identifier <= identifier) )) (compound_statement "{\n      __n = uVar3;\n    }" { (expression_statement "__n = uVar3;" (assignment_expression "__n = uVar3" identifier = identifier) ;) })) (if_statement "if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }" if (parenthesized_expression "((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0))" ( (binary_expression "(__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)" (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)" ( (comma_expression "uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0" (assignment_expression "uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" identifier = (call_expression "memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" identifier (argument_list "(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" ( (pointer_expression "*(void **)(param_2 + 10)" * (cast_expression "(void **)(param_2 + 10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 10)" ( (binary_expression "param_2 + 10" identifier + number_literal) )))) , (pointer_expression "*(void **)(param_3 + 10)" * (cast_expression "(void **)(param_3 + 10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) , identifier )))) , (binary_expression "uVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      return uVar7 >> 0x1f;\n    }" { (return_statement "return uVar7 >> 0x1f;" return (binary_expression "uVar7 >> 0x1f" identifier >> number_literal) ;) })) (expression_statement "lVar9 = uVar3 - uVar4;" (assignment_expression "lVar9 = uVar3 - uVar4" identifier = (binary_expression "uVar3 - uVar4" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar9) {\n      return 0;\n    }" if (parenthesized_expression "(0x7fffffff < lVar9)" ( (binary_expression "0x7fffffff < lVar9" number_literal < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (lVar9 < -0x80000000) {\n      return 1;\n    }" if (parenthesized_expression "(lVar9 < -0x80000000)" ( (binary_expression "lVar9 < -0x80000000" identifier < number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }" if (parenthesized_expression "((uint)lVar9 != 0)" ( (binary_expression "(uint)lVar9 != 0" (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier) != number_literal) )) (compound_statement "{\n      return (uint)lVar9 >> 0x1f;\n    }" { (return_statement "return (uint)lVar9 >> 0x1f;" return (binary_expression "(uint)lVar9 >> 0x1f" (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ;) })) (if_statement "if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }" if (parenthesized_expression "(param_2[8] != 0xffffffff)" ( (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      return (uint)((uint)param_2[8] < uVar1);\n    }" { (return_statement "return (uint)((uint)param_2[8] < uVar1);" return (call_expression "(uint)((uint)param_2[8] < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)param_2[8] < uVar1)" ( (binary_expression "(uint)param_2[8] < uVar1" (cast_expression "(uint)param_2[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[8]" identifier [ number_literal ])) < identifier) ))) ;) })) }) (else_clause "else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" else (compound_statement "{\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" { (expression_statement "uVar8 = FUN_001ee640(param_2);" (assignment_expression "uVar8 = FUN_001ee640(param_2)" identifier = (call_expression "FUN_001ee640(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtbegin")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtbegin")" identifier (argument_list "(uVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") )))) ;) (if_statement "if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }" if (parenthesized_expression "(*param_3 == -1)" ( (binary_expression "*param_3 == -1" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }" { (if_statement "if (cVar5 != '\0') {\n        return 1;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (*param_2 != -1) goto LAB_001eee79;" if (parenthesized_expression "(*param_2 != -1)" ( (binary_expression "*param_2 != -1" (pointer_expression "*param_2" * identifier) != number_literal) )) (goto_statement "goto LAB_001eee79;" goto statement_identifier ;)) (goto_statement "goto LAB_001eee00;" goto statement_identifier ;) })) (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" identifier = (call_expression "FUN_001ee640(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "cVar6 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar6 = FUN_001b5df0(uVar8,"crtbegin")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtbegin")" identifier (argument_list "(uVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") )))) ;) (if_statement "if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }" { (if_statement "if (cVar5 != '\0') {\n        return 1;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_001eee70;" goto statement_identifier ;) })) (if_statement "if (cVar5 == '\0') {\n      return 0;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }" if (parenthesized_expression "((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff))" ( (binary_expression "(param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)" (parenthesized_expression "(param_2[8] != 0xffffffff)" ( (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_3[8] != 0xffffffff)" ( (binary_expression "param_3[8] != 0xffffffff" (subscript_expression "param_3[8]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }" { (return_statement "return (uint)((uint)param_2[8] < (uint)param_3[8]);" return (call_expression "(uint)((uint)param_2[8] < (uint)param_3[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)param_2[8] < (uint)param_3[8])" ( (binary_expression "(uint)param_2[8] < (uint)param_3[8]" (cast_expression "(uint)param_2[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[8]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[8]" identifier [ number_literal ]))) ))) ;) })) }))) (labeled_statement "LAB_001ef00d:\n  FUN_001ed800();" statement_identifier : (expression_statement "FUN_001ed800();" (call_expression "FUN_001ed800()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_001ef012:\n                    /* WARNING: Subroutine does not return */\n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");" statement_identifier : comment (expression_statement "FUN_00199900("../../gold/output.cc",0xcf5,"input_section");" (call_expression "FUN_00199900("../../gold/output.cc",0xcf5,"input_section")" identifier (argument_list "("../../gold/output.cc",0xcf5,"input_section")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""input_section"" " string_content ") ))) ;)) })))
(translation_unit "/* DWARF original prototype: bool operator()(Input_section_sort_compare * this,\n   Input_section_sort_entry * s1, Input_section_sort_entry * s2) */\n\nbool __thiscall\ngold::Output_section::Input_section_sort_compare::operator()\n          (Input_section_sort_compare *this,Input_section_sort_entry *s1,\n          Input_section_sort_entry *s2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  bool bVar5;\n  bool bVar6;\n  int iVar7;\n  Relobj *pRVar8;\n  long lVar9;\n  long lVar10;\n  uint extraout_EDX;\n  uint uVar11;\n  size_t extraout_RDX;\n  char *__s;\n  size_t __n;\n  \n  if ((s1->input_section_).shndx_ == 0xffffffff) {\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar5) {\n        return false;\n      }\n      goto LAB_001eee70;\n    }\n  }\n  else {\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n    if ((s2->input_section_).shndx_ == 0xffffffff) {\n      if (bVar5) {\n        return true;\n      }\n      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;\n    }\n    else {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtend");\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtend";\n      bVar6 = Layout::match_file_name(pRVar8,"crtend");\n      if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }\n    }\n    if (bVar5) {\n      return false;\n    }\n  }\nLAB_001eee00:\n  lVar9 = std::string::find((string *)&s1->section_name_,'.',1);\n  pRVar8 = (Relobj *)&s2->section_name_;\n  lVar10 = std::string::find((string *)pRVar8,'.',1);\n  if ((lVar9 != -1) && (lVar10 == -1)) {\n    return false;\n  }\n  if (lVar10 == -1 || lVar9 != -1) {\n    uVar1 = s2->index_;\n    uVar11 = (s1->input_section_).section_order_index_;\n    __s = (char *)(ulong)uVar11;\n    if (uVar1 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n    }\n    uVar2 = (s2->input_section_).section_order_index_;\n    if (uVar11 != 0 && uVar2 != 0) {\n      if (uVar11 < uVar2) {\n        return uVar11 != 0 && uVar2 != 0;\n      }\n      if (uVar11 >= uVar2 && uVar11 != uVar2) {\n        return false;\n      }\n    }\n    uVar3 = (s1->section_name_)._M_string_length;\n    uVar4 = (s2->section_name_)._M_string_length;\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if (__n != 0) {\n      __s = (s2->section_name_)._M_dataplus._M_p;\n      pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;\n      iVar7 = memcmp(pRVar8,__s,__n);\n      __n = extraout_RDX;\n      if (iVar7 != 0) {\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }\n    }\n    uVar11 = (uint)__n;\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return false;\n    }\n    if (-0x80000001 < lVar9) {\n      if ((int)lVar9 != 0) {\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }\n      if (s1->index_ != 0xffffffff) {\n        return s1->index_ < uVar1;\n      }\nLAB_001ef00d:\n                    /* WARNING: Subroutine does not return */\n      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);\n    }\n  }\n  return true;\n}\n\n" comment (function_definition "bool __thiscall\ngold::Output_section::Input_section_sort_compare::operator()\n          (Input_section_sort_compare *this,Input_section_sort_entry *s1,\n          Input_section_sort_entry *s2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  bool bVar5;\n  bool bVar6;\n  int iVar7;\n  Relobj *pRVar8;\n  long lVar9;\n  long lVar10;\n  uint extraout_EDX;\n  uint uVar11;\n  size_t extraout_RDX;\n  char *__s;\n  size_t __n;\n  \n  if ((s1->input_section_).shndx_ == 0xffffffff) {\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar5) {\n        return false;\n      }\n      goto LAB_001eee70;\n    }\n  }\n  else {\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n    if ((s2->input_section_).shndx_ == 0xffffffff) {\n      if (bVar5) {\n        return true;\n      }\n      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;\n    }\n    else {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtend");\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtend";\n      bVar6 = Layout::match_file_name(pRVar8,"crtend");\n      if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }\n    }\n    if (bVar5) {\n      return false;\n    }\n  }\nLAB_001eee00:\n  lVar9 = std::string::find((string *)&s1->section_name_,'.',1);\n  pRVar8 = (Relobj *)&s2->section_name_;\n  lVar10 = std::string::find((string *)pRVar8,'.',1);\n  if ((lVar9 != -1) && (lVar10 == -1)) {\n    return false;\n  }\n  if (lVar10 == -1 || lVar9 != -1) {\n    uVar1 = s2->index_;\n    uVar11 = (s1->input_section_).section_order_index_;\n    __s = (char *)(ulong)uVar11;\n    if (uVar1 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n    }\n    uVar2 = (s2->input_section_).section_order_index_;\n    if (uVar11 != 0 && uVar2 != 0) {\n      if (uVar11 < uVar2) {\n        return uVar11 != 0 && uVar2 != 0;\n      }\n      if (uVar11 >= uVar2 && uVar11 != uVar2) {\n        return false;\n      }\n    }\n    uVar3 = (s1->section_name_)._M_string_length;\n    uVar4 = (s2->section_name_)._M_string_length;\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if (__n != 0) {\n      __s = (s2->section_name_)._M_dataplus._M_p;\n      pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;\n      iVar7 = memcmp(pRVar8,__s,__n);\n      __n = extraout_RDX;\n      if (iVar7 != 0) {\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }\n    }\n    uVar11 = (uint)__n;\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return false;\n    }\n    if (-0x80000001 < lVar9) {\n      if ((int)lVar9 != 0) {\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }\n      if (s1->index_ != 0xffffffff) {\n        return s1->index_ < uVar1;\n      }\nLAB_001ef00d:\n                    /* WARNING: Subroutine does not return */\n      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);\n    }\n  }\n  return true;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::Input_section_sort_compare::" identifier : : identifier : : identifier : :) (function_declarator "operator()\n          (Input_section_sort_compare *this,Input_section_sort_entry *s1,\n          Input_section_sort_entry *s2)" (function_declarator "operator()" identifier (parameter_list "()" ( ))) (parameter_list "(Input_section_sort_compare *this,Input_section_sort_entry *s1,\n          Input_section_sort_entry *s2)" ( (parameter_declaration "Input_section_sort_compare *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Input_section_sort_entry *s1" type_identifier (pointer_declarator "*s1" * identifier)) , (parameter_declaration "Input_section_sort_entry *s2" type_identifier (pointer_declarator "*s2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  bool bVar5;\n  bool bVar6;\n  int iVar7;\n  Relobj *pRVar8;\n  long lVar9;\n  long lVar10;\n  uint extraout_EDX;\n  uint uVar11;\n  size_t extraout_RDX;\n  char *__s;\n  size_t __n;\n  \n  if ((s1->input_section_).shndx_ == 0xffffffff) {\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar5) {\n        return false;\n      }\n      goto LAB_001eee70;\n    }\n  }\n  else {\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n    if ((s2->input_section_).shndx_ == 0xffffffff) {\n      if (bVar5) {\n        return true;\n      }\n      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;\n    }\n    else {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtend");\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtend";\n      bVar6 = Layout::match_file_name(pRVar8,"crtend");\n      if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }\n    }\n    if (bVar5) {\n      return false;\n    }\n  }\nLAB_001eee00:\n  lVar9 = std::string::find((string *)&s1->section_name_,'.',1);\n  pRVar8 = (Relobj *)&s2->section_name_;\n  lVar10 = std::string::find((string *)pRVar8,'.',1);\n  if ((lVar9 != -1) && (lVar10 == -1)) {\n    return false;\n  }\n  if (lVar10 == -1 || lVar9 != -1) {\n    uVar1 = s2->index_;\n    uVar11 = (s1->input_section_).section_order_index_;\n    __s = (char *)(ulong)uVar11;\n    if (uVar1 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n    }\n    uVar2 = (s2->input_section_).section_order_index_;\n    if (uVar11 != 0 && uVar2 != 0) {\n      if (uVar11 < uVar2) {\n        return uVar11 != 0 && uVar2 != 0;\n      }\n      if (uVar11 >= uVar2 && uVar11 != uVar2) {\n        return false;\n      }\n    }\n    uVar3 = (s1->section_name_)._M_string_length;\n    uVar4 = (s2->section_name_)._M_string_length;\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if (__n != 0) {\n      __s = (s2->section_name_)._M_dataplus._M_p;\n      pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;\n      iVar7 = memcmp(pRVar8,__s,__n);\n      __n = extraout_RDX;\n      if (iVar7 != 0) {\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }\n    }\n    uVar11 = (uint)__n;\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return false;\n    }\n    if (-0x80000001 < lVar9) {\n      if ((int)lVar9 != 0) {\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }\n      if (s1->index_ != 0xffffffff) {\n        return s1->index_ < uVar1;\n      }\nLAB_001ef00d:\n                    /* WARNING: Subroutine does not return */\n      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);\n    }\n  }\n  return true;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "Relobj *pRVar8;" type_identifier (pointer_declarator "*pRVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "uint extraout_EDX;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "size_t extraout_RDX;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (if_statement "if ((s1->input_section_).shndx_ == 0xffffffff) {\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar5) {\n        return false;\n      }\n      goto LAB_001eee70;\n    }\n  }\n  else {\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n    if ((s2->input_section_).shndx_ == 0xffffffff) {\n      if (bVar5) {\n        return true;\n      }\n      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;\n    }\n    else {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtend");\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtend";\n      bVar6 = Layout::match_file_name(pRVar8,"crtend");\n      if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }\n    }\n    if (bVar5) {\n      return false;\n    }\n  }" if (parenthesized_expression "((s1->input_section_).shndx_ == 0xffffffff)" ( (binary_expression "(s1->input_section_).shndx_ == 0xffffffff" (field_expression "(s1->input_section_).shndx_" (parenthesized_expression "(s1->input_section_)" ( (field_expression "s1->input_section_" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar5) {\n        return false;\n      }\n      goto LAB_001eee70;\n    }\n  }" { (if_statement "if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar5) {\n        return false;\n      }\n      goto LAB_001eee70;\n    }" if (parenthesized_expression "((s2->input_section_).shndx_ != 0xffffffff)" ( (binary_expression "(s2->input_section_).shndx_ != 0xffffffff" (field_expression "(s2->input_section_).shndx_" (parenthesized_expression "(s2->input_section_)" ( (field_expression "s2->input_section_" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar5) {\n        return false;\n      }\n      goto LAB_001eee70;\n    }" { (ERROR "pRVar8 = Input_section::" (assignment_expression "pRVar8 = Input_section" identifier = identifier) : :) (expression_statement "relobj(&s2->input_section_);" (call_expression "relobj(&s2->input_section_)" identifier (argument_list "(&s2->input_section_)" ( (pointer_expression "&s2->input_section_" & (field_expression "s2->input_section_" identifier -> field_identifier)) ))) ;) (ERROR "bVar5 = Layout::" (assignment_expression "bVar5 = Layout" identifier = identifier) : :) (expression_statement "match_file_name(pRVar8,"crtbegin");" (call_expression "match_file_name(pRVar8,"crtbegin")" identifier (argument_list "(pRVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") ))) ;) (if_statement "if (bVar5) {\n        return false;\n      }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (goto_statement "goto LAB_001eee70;" goto statement_identifier ;) })) }) (else_clause "else {\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n    if ((s2->input_section_).shndx_ == 0xffffffff) {\n      if (bVar5) {\n        return true;\n      }\n      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;\n    }\n    else {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtend");\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtend";\n      bVar6 = Layout::match_file_name(pRVar8,"crtend");\n      if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }\n    }\n    if (bVar5) {\n      return false;\n    }\n  }" else (compound_statement "{\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtbegin");\n    if ((s2->input_section_).shndx_ == 0xffffffff) {\n      if (bVar5) {\n        return true;\n      }\n      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;\n    }\n    else {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }\n    pRVar8 = Input_section::relobj(&s1->input_section_);\n    bVar5 = Layout::match_file_name(pRVar8,"crtend");\n    if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtend";\n      bVar6 = Layout::match_file_name(pRVar8,"crtend");\n      if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }\n    }\n    if (bVar5) {\n      return false;\n    }\n  }" { (ERROR "pRVar8 = Input_section::" (assignment_expression "pRVar8 = Input_section" identifier = identifier) : :) (expression_statement "relobj(&s1->input_section_);" (call_expression "relobj(&s1->input_section_)" identifier (argument_list "(&s1->input_section_)" ( (pointer_expression "&s1->input_section_" & (field_expression "s1->input_section_" identifier -> field_identifier)) ))) ;) (ERROR "bVar5 = Layout::" (assignment_expression "bVar5 = Layout" identifier = identifier) : :) (expression_statement "match_file_name(pRVar8,"crtbegin");" (call_expression "match_file_name(pRVar8,"crtbegin")" identifier (argument_list "(pRVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") ))) ;) (if_statement "if ((s2->input_section_).shndx_ == 0xffffffff) {\n      if (bVar5) {\n        return true;\n      }\n      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;\n    }\n    else {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }" if (parenthesized_expression "((s2->input_section_).shndx_ == 0xffffffff)" ( (binary_expression "(s2->input_section_).shndx_ == 0xffffffff" (field_expression "(s2->input_section_).shndx_" (parenthesized_expression "(s2->input_section_)" ( (field_expression "s2->input_section_" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n      if (bVar5) {\n        return true;\n      }\n      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;\n    }" { (if_statement "if (bVar5) {\n        return true;\n      }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) (if_statement "if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;" if (parenthesized_expression "((s1->input_section_).shndx_ == 0xffffffff)" ( (binary_expression "(s1->input_section_).shndx_ == 0xffffffff" (field_expression "(s1->input_section_).shndx_" (parenthesized_expression "(s1->input_section_)" ( (field_expression "s1->input_section_" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (goto_statement "goto LAB_001eee00;" goto statement_identifier ;)) }) (else_clause "else {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }" else (compound_statement "{\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtbegin";\n      bVar6 = Layout::match_file_name(pRVar8,"crtbegin");\n      if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }\n      if (bVar5) {\n        return true;\n      }\nLAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }\n    }" { (ERROR "pRVar8 = Input_section::" (assignment_expression "pRVar8 = Input_section" identifier = identifier) : :) (expression_statement "relobj(&s2->input_section_);" (call_expression "relobj(&s2->input_section_)" identifier (argument_list "(&s2->input_section_)" ( (pointer_expression "&s2->input_section_" & (field_expression "s2->input_section_" identifier -> field_identifier)) ))) ;) (expression_statement "__s = "crtbegin";" (assignment_expression "__s = "crtbegin"" identifier = (string_literal ""crtbegin"" " string_content ")) ;) (ERROR "bVar6 = Layout::" (assignment_expression "bVar6 = Layout" identifier = identifier) : :) (expression_statement "match_file_name(pRVar8,"crtbegin");" (call_expression "match_file_name(pRVar8,"crtbegin")" identifier (argument_list "(pRVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") ))) ;) (if_statement "if (bVar6) {\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n        if (!bVar5) {\n          return false;\n        }\n        uVar11 = extraout_EDX;\n        if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }\n        goto LAB_001ef00d;\n      }" { (if_statement "if (!bVar5) {\n          return false;\n        }" if (parenthesized_expression "(!bVar5)" ( (unary_expression "!bVar5" ! identifier) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar11 = extraout_EDX;" (assignment_expression "uVar11 = extraout_EDX" identifier = identifier) ;) (if_statement "if ((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)) {\n          return s1->index_ < uVar11;\n        }" if (parenthesized_expression "((s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff))" ( (binary_expression "(s1->index_ != 0xffffffff) && (uVar11 = s2->index_, uVar11 != 0xffffffff)" (parenthesized_expression "(s1->index_ != 0xffffffff)" ( (binary_expression "s1->index_ != 0xffffffff" (field_expression "s1->index_" identifier -> field_identifier) != number_literal) )) && (parenthesized_expression "(uVar11 = s2->index_, uVar11 != 0xffffffff)" ( (comma_expression "uVar11 = s2->index_, uVar11 != 0xffffffff" (assignment_expression "uVar11 = s2->index_" identifier = (field_expression "s2->index_" identifier -> field_identifier)) , (binary_expression "uVar11 != 0xffffffff" identifier != number_literal)) ))) )) (compound_statement "{\n          return s1->index_ < uVar11;\n        }" { (return_statement "return s1->index_ < uVar11;" return (binary_expression "s1->index_ < uVar11" (field_expression "s1->index_" identifier -> field_identifier) < identifier) ;) })) (goto_statement "goto LAB_001ef00d;" goto statement_identifier ;) })) (if_statement "if (bVar5) {\n        return true;\n      }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) (labeled_statement "LAB_001eee70:\n      if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }" statement_identifier : (if_statement "if ((s1->input_section_).shndx_ == 0xffffffff) {\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }" if (parenthesized_expression "((s1->input_section_).shndx_ == 0xffffffff)" ( (binary_expression "(s1->input_section_).shndx_ == 0xffffffff" (field_expression "(s1->input_section_).shndx_" (parenthesized_expression "(s1->input_section_)" ( (field_expression "s1->input_section_" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n        if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }\n        goto LAB_001eee00;\n      }" { (if_statement "if ((s2->input_section_).shndx_ != 0xffffffff) {\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }" if (parenthesized_expression "((s2->input_section_).shndx_ != 0xffffffff)" ( (binary_expression "(s2->input_section_).shndx_ != 0xffffffff" (field_expression "(s2->input_section_).shndx_" (parenthesized_expression "(s2->input_section_)" ( (field_expression "s2->input_section_" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n          pRVar8 = Input_section::relobj(&s2->input_section_);\n          bVar5 = Layout::match_file_name(pRVar8,"crtend");\n          if (bVar5) {\n            return true;\n          }\n        }" { (ERROR "pRVar8 = Input_section::" (assignment_expression "pRVar8 = Input_section" identifier = identifier) : :) (expression_statement "relobj(&s2->input_section_);" (call_expression "relobj(&s2->input_section_)" identifier (argument_list "(&s2->input_section_)" ( (pointer_expression "&s2->input_section_" & (field_expression "s2->input_section_" identifier -> field_identifier)) ))) ;) (ERROR "bVar5 = Layout::" (assignment_expression "bVar5 = Layout" identifier = identifier) : :) (expression_statement "match_file_name(pRVar8,"crtend");" (call_expression "match_file_name(pRVar8,"crtend")" identifier (argument_list "(pRVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") ))) ;) (if_statement "if (bVar5) {\n            return true;\n          }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n            return true;\n          }" { (return_statement "return true;" return true ;) })) })) (goto_statement "goto LAB_001eee00;" goto statement_identifier ;) }))) }))) (ERROR "pRVar8 = Input_section::" (assignment_expression "pRVar8 = Input_section" identifier = identifier) : :) (expression_statement "relobj(&s1->input_section_);" (call_expression "relobj(&s1->input_section_)" identifier (argument_list "(&s1->input_section_)" ( (pointer_expression "&s1->input_section_" & (field_expression "s1->input_section_" identifier -> field_identifier)) ))) ;) (ERROR "bVar5 = Layout::" (assignment_expression "bVar5 = Layout" identifier = identifier) : :) (expression_statement "match_file_name(pRVar8,"crtend");" (call_expression "match_file_name(pRVar8,"crtend")" identifier (argument_list "(pRVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") ))) ;) (if_statement "if ((s2->input_section_).shndx_ != 0xffffffff) {\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtend";\n      bVar6 = Layout::match_file_name(pRVar8,"crtend");\n      if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }\n    }" if (parenthesized_expression "((s2->input_section_).shndx_ != 0xffffffff)" ( (binary_expression "(s2->input_section_).shndx_ != 0xffffffff" (field_expression "(s2->input_section_).shndx_" (parenthesized_expression "(s2->input_section_)" ( (field_expression "s2->input_section_" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n      pRVar8 = Input_section::relobj(&s2->input_section_);\n      __s = "crtend";\n      bVar6 = Layout::match_file_name(pRVar8,"crtend");\n      if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }\n    }" { (ERROR "pRVar8 = Input_section::" (assignment_expression "pRVar8 = Input_section" identifier = identifier) : :) (expression_statement "relobj(&s2->input_section_);" (call_expression "relobj(&s2->input_section_)" identifier (argument_list "(&s2->input_section_)" ( (pointer_expression "&s2->input_section_" & (field_expression "s2->input_section_" identifier -> field_identifier)) ))) ;) (expression_statement "__s = "crtend";" (assignment_expression "__s = "crtend"" identifier = (string_literal ""crtend"" " string_content ")) ;) (ERROR "bVar6 = Layout::" (assignment_expression "bVar6 = Layout" identifier = identifier) : :) (expression_statement "match_file_name(pRVar8,"crtend");" (call_expression "match_file_name(pRVar8,"crtend")" identifier (argument_list "(pRVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") ))) ;) (if_statement "if (bVar6) {\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n        if (!bVar5) {\n          return true;\n        }\n        uVar11 = s1->index_;\n        if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }\n        goto LAB_001ef00d;\n      }" { (if_statement "if (!bVar5) {\n          return true;\n        }" if (parenthesized_expression "(!bVar5)" ( (unary_expression "!bVar5" ! identifier) )) (compound_statement "{\n          return true;\n        }" { (return_statement "return true;" return true ;) })) (expression_statement "uVar11 = s1->index_;" (assignment_expression "uVar11 = s1->index_" identifier = (field_expression "s1->index_" identifier -> field_identifier)) ;) (if_statement "if ((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)) {\n          return uVar11 < s2->index_;\n        }" if (parenthesized_expression "((uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff))" ( (binary_expression "(uVar11 != 0xffffffff) && (s2->index_ != 0xffffffff)" (parenthesized_expression "(uVar11 != 0xffffffff)" ( (binary_expression "uVar11 != 0xffffffff" identifier != number_literal) )) && (parenthesized_expression "(s2->index_ != 0xffffffff)" ( (binary_expression "s2->index_ != 0xffffffff" (field_expression "s2->index_" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n          return uVar11 < s2->index_;\n        }" { (return_statement "return uVar11 < s2->index_;" return (binary_expression "uVar11 < s2->index_" identifier < (field_expression "s2->index_" identifier -> field_identifier)) ;) })) (goto_statement "goto LAB_001ef00d;" goto statement_identifier ;) })) })) (if_statement "if (bVar5) {\n      return false;\n    }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }))) (labeled_statement "LAB_001eee00:\n  lVar9 = std::string::find((string *)&s1->section_name_,'.',1);" statement_identifier : (ERROR "lVar9 = std::" (assignment_expression "lVar9 = std" identifier = identifier) : :) (labeled_statement "string::find((string *)&s1->section_name_,'.',1);" statement_identifier : (ERROR ":" :) (expression_statement "find((string *)&s1->section_name_,'.',1);" (call_expression "find((string *)&s1->section_name_,'.',1)" identifier (argument_list "((string *)&s1->section_name_,'.',1)" ( (cast_expression "(string *)&s1->section_name_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s1->section_name_" & (field_expression "s1->section_name_" identifier -> field_identifier))) , (char_literal "'.'" ' character ') , number_literal ))) ;))) (expression_statement "pRVar8 = (Relobj *)&s2->section_name_;" (assignment_expression "pRVar8 = (Relobj *)&s2->section_name_" identifier = (cast_expression "(Relobj *)&s2->section_name_" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s2->section_name_" & (field_expression "s2->section_name_" identifier -> field_identifier)))) ;) (ERROR "lVar10 = std::" (assignment_expression "lVar10 = std" identifier = identifier) : :) (labeled_statement "string::find((string *)pRVar8,'.',1);" statement_identifier : (ERROR ":" :) (expression_statement "find((string *)pRVar8,'.',1);" (call_expression "find((string *)pRVar8,'.',1)" identifier (argument_list "((string *)pRVar8,'.',1)" ( (cast_expression "(string *)pRVar8" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'.'" ' character ') , number_literal ))) ;)) (if_statement "if ((lVar9 != -1) && (lVar10 == -1)) {\n    return false;\n  }" if (parenthesized_expression "((lVar9 != -1) && (lVar10 == -1))" ( (binary_expression "(lVar9 != -1) && (lVar10 == -1)" (parenthesized_expression "(lVar9 != -1)" ( (binary_expression "lVar9 != -1" identifier != number_literal) )) && (parenthesized_expression "(lVar10 == -1)" ( (binary_expression "lVar10 == -1" identifier == number_literal) ))) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if (lVar10 == -1 || lVar9 != -1) {\n    uVar1 = s2->index_;\n    uVar11 = (s1->input_section_).section_order_index_;\n    __s = (char *)(ulong)uVar11;\n    if (uVar1 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n    }\n    uVar2 = (s2->input_section_).section_order_index_;\n    if (uVar11 != 0 && uVar2 != 0) {\n      if (uVar11 < uVar2) {\n        return uVar11 != 0 && uVar2 != 0;\n      }\n      if (uVar11 >= uVar2 && uVar11 != uVar2) {\n        return false;\n      }\n    }\n    uVar3 = (s1->section_name_)._M_string_length;\n    uVar4 = (s2->section_name_)._M_string_length;\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if (__n != 0) {\n      __s = (s2->section_name_)._M_dataplus._M_p;\n      pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;\n      iVar7 = memcmp(pRVar8,__s,__n);\n      __n = extraout_RDX;\n      if (iVar7 != 0) {\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }\n    }\n    uVar11 = (uint)__n;\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return false;\n    }\n    if (-0x80000001 < lVar9) {\n      if ((int)lVar9 != 0) {\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }\n      if (s1->index_ != 0xffffffff) {\n        return s1->index_ < uVar1;\n      }\nLAB_001ef00d:\n                    /* WARNING: Subroutine does not return */\n      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);\n    }\n  }" if (parenthesized_expression "(lVar10 == -1 || lVar9 != -1)" ( (binary_expression "lVar10 == -1 || lVar9 != -1" (binary_expression "lVar10 == -1" identifier == number_literal) || (binary_expression "lVar9 != -1" identifier != number_literal)) )) (compound_statement "{\n    uVar1 = s2->index_;\n    uVar11 = (s1->input_section_).section_order_index_;\n    __s = (char *)(ulong)uVar11;\n    if (uVar1 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n    }\n    uVar2 = (s2->input_section_).section_order_index_;\n    if (uVar11 != 0 && uVar2 != 0) {\n      if (uVar11 < uVar2) {\n        return uVar11 != 0 && uVar2 != 0;\n      }\n      if (uVar11 >= uVar2 && uVar11 != uVar2) {\n        return false;\n      }\n    }\n    uVar3 = (s1->section_name_)._M_string_length;\n    uVar4 = (s2->section_name_)._M_string_length;\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if (__n != 0) {\n      __s = (s2->section_name_)._M_dataplus._M_p;\n      pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;\n      iVar7 = memcmp(pRVar8,__s,__n);\n      __n = extraout_RDX;\n      if (iVar7 != 0) {\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }\n    }\n    uVar11 = (uint)__n;\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return false;\n    }\n    if (-0x80000001 < lVar9) {\n      if ((int)lVar9 != 0) {\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }\n      if (s1->index_ != 0xffffffff) {\n        return s1->index_ < uVar1;\n      }\nLAB_001ef00d:\n                    /* WARNING: Subroutine does not return */\n      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);\n    }\n  }" { (expression_statement "uVar1 = s2->index_;" (assignment_expression "uVar1 = s2->index_" identifier = (field_expression "s2->index_" identifier -> field_identifier)) ;) (expression_statement "uVar11 = (s1->input_section_).section_order_index_;" (assignment_expression "uVar11 = (s1->input_section_).section_order_index_" identifier = (field_expression "(s1->input_section_).section_order_index_" (parenthesized_expression "(s1->input_section_)" ( (field_expression "s1->input_section_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "__s = (char *)(ulong)uVar11;" (assignment_expression "__s = (char *)(ulong)uVar11" identifier = (cast_expression "(char *)(ulong)uVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(ulong)uVar11" ( (type_descriptor "ulong" type_identifier) ) identifier))) ;) (if_statement "if (uVar1 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n    }" if (parenthesized_expression "(uVar1 == 0xffffffff)" ( (binary_expression "uVar1 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");" (call_expression "do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section")" identifier (argument_list "("../../gold/output.cc",0xcf5,"input_section")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""input_section"" " string_content ") ))) ;) })) (expression_statement "uVar2 = (s2->input_section_).section_order_index_;" (assignment_expression "uVar2 = (s2->input_section_).section_order_index_" identifier = (field_expression "(s2->input_section_).section_order_index_" (parenthesized_expression "(s2->input_section_)" ( (field_expression "s2->input_section_" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (uVar11 != 0 && uVar2 != 0) {\n      if (uVar11 < uVar2) {\n        return uVar11 != 0 && uVar2 != 0;\n      }\n      if (uVar11 >= uVar2 && uVar11 != uVar2) {\n        return false;\n      }\n    }" if (parenthesized_expression "(uVar11 != 0 && uVar2 != 0)" ( (binary_expression "uVar11 != 0 && uVar2 != 0" (binary_expression "uVar11 != 0" identifier != number_literal) && (binary_expression "uVar2 != 0" identifier != number_literal)) )) (compound_statement "{\n      if (uVar11 < uVar2) {\n        return uVar11 != 0 && uVar2 != 0;\n      }\n      if (uVar11 >= uVar2 && uVar11 != uVar2) {\n        return false;\n      }\n    }" { (if_statement "if (uVar11 < uVar2) {\n        return uVar11 != 0 && uVar2 != 0;\n      }" if (parenthesized_expression "(uVar11 < uVar2)" ( (binary_expression "uVar11 < uVar2" identifier < identifier) )) (compound_statement "{\n        return uVar11 != 0 && uVar2 != 0;\n      }" { (return_statement "return uVar11 != 0 && uVar2 != 0;" return (binary_expression "uVar11 != 0 && uVar2 != 0" (binary_expression "uVar11 != 0" identifier != number_literal) && (binary_expression "uVar2 != 0" identifier != number_literal)) ;) })) (if_statement "if (uVar11 >= uVar2 && uVar11 != uVar2) {\n        return false;\n      }" if (parenthesized_expression "(uVar11 >= uVar2 && uVar11 != uVar2)" ( (binary_expression "uVar11 >= uVar2 && uVar11 != uVar2" (binary_expression "uVar11 >= uVar2" identifier >= identifier) && (binary_expression "uVar11 != uVar2" identifier != identifier)) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) })) (expression_statement "uVar3 = (s1->section_name_)._M_string_length;" (assignment_expression "uVar3 = (s1->section_name_)._M_string_length" identifier = (field_expression "(s1->section_name_)._M_string_length" (parenthesized_expression "(s1->section_name_)" ( (field_expression "s1->section_name_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar4 = (s2->section_name_)._M_string_length;" (assignment_expression "uVar4 = (s2->section_name_)._M_string_length" identifier = (field_expression "(s2->section_name_)._M_string_length" (parenthesized_expression "(s2->section_name_)" ( (field_expression "s2->section_name_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "__n = uVar4;" (assignment_expression "__n = uVar4" identifier = identifier) ;) (if_statement "if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }" if (parenthesized_expression "(uVar3 <= uVar4)" ( (binary_expression "uVar3 <= uVar4" identifier <= identifier) )) (compound_statement "{\n      __n = uVar3;\n    }" { (expression_statement "__n = uVar3;" (assignment_expression "__n = uVar3" identifier = identifier) ;) })) (if_statement "if (__n != 0) {\n      __s = (s2->section_name_)._M_dataplus._M_p;\n      pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;\n      iVar7 = memcmp(pRVar8,__s,__n);\n      __n = extraout_RDX;\n      if (iVar7 != 0) {\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }\n    }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n      __s = (s2->section_name_)._M_dataplus._M_p;\n      pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;\n      iVar7 = memcmp(pRVar8,__s,__n);\n      __n = extraout_RDX;\n      if (iVar7 != 0) {\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }\n    }" { (expression_statement "__s = (s2->section_name_)._M_dataplus._M_p;" (assignment_expression "__s = (s2->section_name_)._M_dataplus._M_p" identifier = (field_expression "(s2->section_name_)._M_dataplus._M_p" (field_expression "(s2->section_name_)._M_dataplus" (parenthesized_expression "(s2->section_name_)" ( (field_expression "s2->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p;" (assignment_expression "pRVar8 = (Relobj *)(s1->section_name_)._M_dataplus._M_p" identifier = (cast_expression "(Relobj *)(s1->section_name_)._M_dataplus._M_p" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(s1->section_name_)._M_dataplus._M_p" (field_expression "(s1->section_name_)._M_dataplus" (parenthesized_expression "(s1->section_name_)" ( (field_expression "s1->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "iVar7 = memcmp(pRVar8,__s,__n);" (assignment_expression "iVar7 = memcmp(pRVar8,__s,__n)" identifier = (call_expression "memcmp(pRVar8,__s,__n)" identifier (argument_list "(pRVar8,__s,__n)" ( identifier , identifier , identifier )))) ;) (expression_statement "__n = extraout_RDX;" (assignment_expression "__n = extraout_RDX" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        return SUB41((uint)iVar7 >> 0x1f,0);\n      }" { (return_statement "return SUB41((uint)iVar7 >> 0x1f,0);" return (call_expression "SUB41((uint)iVar7 >> 0x1f,0)" identifier (argument_list "((uint)iVar7 >> 0x1f,0)" ( (binary_expression "(uint)iVar7 >> 0x1f" (cast_expression "(uint)iVar7" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) , number_literal ))) ;) })) })) (expression_statement "uVar11 = (uint)__n;" (assignment_expression "uVar11 = (uint)__n" identifier = (cast_expression "(uint)__n" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "lVar9 = uVar3 - uVar4;" (assignment_expression "lVar9 = uVar3 - uVar4" identifier = (binary_expression "uVar3 - uVar4" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar9) {\n      return false;\n    }" if (parenthesized_expression "(0x7fffffff < lVar9)" ( (binary_expression "0x7fffffff < lVar9" number_literal < identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (if_statement "if (-0x80000001 < lVar9) {\n      if ((int)lVar9 != 0) {\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }\n      if (s1->index_ != 0xffffffff) {\n        return s1->index_ < uVar1;\n      }\nLAB_001ef00d:\n                    /* WARNING: Subroutine does not return */\n      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);\n    }" if (parenthesized_expression "(-0x80000001 < lVar9)" ( (binary_expression "-0x80000001 < lVar9" number_literal < identifier) )) (compound_statement "{\n      if ((int)lVar9 != 0) {\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }\n      if (s1->index_ != 0xffffffff) {\n        return s1->index_ < uVar1;\n      }\nLAB_001ef00d:\n                    /* WARNING: Subroutine does not return */\n      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);\n    }" { (if_statement "if ((int)lVar9 != 0) {\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }" if (parenthesized_expression "((int)lVar9 != 0)" ( (binary_expression "(int)lVar9 != 0" (cast_expression "(int)lVar9" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n        return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);\n      }" { (return_statement "return (bool)((byte)((ulong)lVar9 >> 0x18) >> 7);" return (cast_expression "(bool)((byte)((ulong)lVar9 >> 0x18) >> 7)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "((byte)((ulong)lVar9 >> 0x18) >> 7)" ( (binary_expression "(byte)((ulong)lVar9 >> 0x18) >> 7" (call_expression "(byte)((ulong)lVar9 >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((ulong)lVar9 >> 0x18)" ( (binary_expression "(ulong)lVar9 >> 0x18" (cast_expression "(ulong)lVar9" ( (type_descriptor "ulong" type_identifier) ) identifier) >> number_literal) ))) >> number_literal) ))) ;) })) (if_statement "if (s1->index_ != 0xffffffff) {\n        return s1->index_ < uVar1;\n      }" if (parenthesized_expression "(s1->index_ != 0xffffffff)" ( (binary_expression "s1->index_ != 0xffffffff" (field_expression "s1->index_" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n        return s1->index_ < uVar1;\n      }" { (return_statement "return s1->index_ < uVar1;" return (binary_expression "s1->index_ < uVar1" (field_expression "s1->index_" identifier -> field_identifier) < identifier) ;) })) (labeled_statement "LAB_001ef00d:\n                    /* WARNING: Subroutine does not return */\n      Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);" statement_identifier : comment (labeled_statement "Input_section_sort_entry::index((Input_section_sort_entry *)pRVar8,__s,uVar11);" statement_identifier : (ERROR ":" :) (expression_statement "index((Input_section_sort_entry *)pRVar8,__s,uVar11);" (call_expression "index((Input_section_sort_entry *)pRVar8,__s,uVar11)" identifier (argument_list "((Input_section_sort_entry *)pRVar8,__s,uVar11)" ( (cast_expression "(Input_section_sort_entry *)pRVar8" ( (type_descriptor "Input_section_sort_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;))) })) })) (return_statement "return true;" return true ;) })))
(translation_unit "uint FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  char cVar5;\n  char cVar6;\n  uint uVar7;\n  undefined8 uVar8;\n  long lVar9;\n  long lVar10;\n  ulong __n;\n  \n  if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }\nLAB_001ef00d:\n  FUN_001ed800();\nLAB_001ef012:\n                    \n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");\n}\n\n" (function_definition "uint FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  char cVar5;\n  char cVar6;\n  uint uVar7;\n  undefined8 uVar8;\n  long lVar9;\n  long lVar10;\n  ulong __n;\n  \n  if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }\nLAB_001ef00d:\n  FUN_001ed800();\nLAB_001ef012:\n                    \n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");\n}" type_identifier (function_declarator "FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)" identifier (parameter_list "(undefined8 param_1,int *param_2,int *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  char cVar5;\n  char cVar6;\n  uint uVar7;\n  undefined8 uVar8;\n  long lVar9;\n  long lVar10;\n  ulong __n;\n  \n  if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }\nLAB_001ef00d:\n  FUN_001ed800();\nLAB_001ef012:\n                    \n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong __n;" type_identifier identifier ;) (if_statement "if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" if (parenthesized_expression "(*param_2 == -1)" ( (binary_expression "*param_2 == -1" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }" { (if_statement "if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }" if (parenthesized_expression "(*param_3 != -1)" ( (binary_expression "*param_3 != -1" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }" { (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" identifier = (call_expression "FUN_001ee640(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtbegin")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtbegin")" identifier (argument_list "(uVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") )))) ;) (if_statement "if (cVar5 != '\0') {\n        return 0;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" statement_identifier : (if_statement "if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" if (parenthesized_expression "(*param_2 == -1)" ( (binary_expression "*param_2 == -1" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }" { (if_statement "if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }" if (parenthesized_expression "(*param_3 != -1)" ( (binary_expression "*param_3 != -1" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }" { (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" identifier = (call_expression "FUN_001ee640(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtend")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtend")" identifier (argument_list "(uVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") )))) ;) (if_statement "if (cVar5 != '\0') {\n            return 1;\n          }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) })) }) (else_clause "else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" else (compound_statement "{\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" { (labeled_statement "LAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);" statement_identifier : (expression_statement "uVar8 = FUN_001ee640(param_2);" (assignment_expression "uVar8 = FUN_001ee640(param_2)" identifier = (call_expression "FUN_001ee640(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;)) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtend")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtend")" identifier (argument_list "(uVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") )))) ;) (if_statement "if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }" if (parenthesized_expression "(*param_3 != -1)" ( (binary_expression "*param_3 != -1" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }" { (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" identifier = (call_expression "FUN_001ee640(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "cVar6 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar6 = FUN_001b5df0(uVar8,"crtend")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtend")" identifier (argument_list "(uVar8,"crtend")" ( identifier , (string_literal ""crtend"" " string_content ") )))) ;) (if_statement "if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }" { (if_statement "if (cVar5 == '\0') {\n              return 1;\n            }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              return 1;\n            }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }" if (parenthesized_expression "((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff))" ( (binary_expression "(param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)" (parenthesized_expression "(param_2[8] != 0xffffffff)" ( (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_3[8] != 0xffffffff)" ( (binary_expression "param_3[8] != 0xffffffff" (subscript_expression "param_3[8]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }" { (return_statement "return (uint)((uint)param_2[8] < (uint)param_3[8]);" return (call_expression "(uint)((uint)param_2[8] < (uint)param_3[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)param_2[8] < (uint)param_3[8])" ( (binary_expression "(uint)param_2[8] < (uint)param_3[8]" (cast_expression "(uint)param_2[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[8]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[8]" identifier [ number_literal ]))) ))) ;) })) (goto_statement "goto LAB_001ef00d;" goto statement_identifier ;) })) })) (if_statement "if (cVar5 != '\0') {\n          return 0;\n        }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })))) })) (labeled_statement "LAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);" statement_identifier : (expression_statement "lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);" (assignment_expression "lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1)" identifier = (call_expression "FUN_002ab0f0(param_2 + 10,0x2e,1)" identifier (argument_list "(param_2 + 10,0x2e,1)" ( (binary_expression "param_2 + 10" identifier + number_literal) , number_literal , number_literal )))) ;)) (expression_statement "lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);" (assignment_expression "lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1)" identifier = (call_expression "FUN_002ab0f0(param_3 + 10,0x2e,1)" identifier (argument_list "(param_3 + 10,0x2e,1)" ( (binary_expression "param_3 + 10" identifier + number_literal) , number_literal , number_literal )))) ;) (if_statement "if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }" if (parenthesized_expression "((lVar9 != -1) && (lVar10 == -1))" ( (binary_expression "(lVar9 != -1) && (lVar10 == -1)" (parenthesized_expression "(lVar9 != -1)" ( (binary_expression "lVar9 != -1" identifier != number_literal) )) && (parenthesized_expression "(lVar10 == -1)" ( (binary_expression "lVar10 == -1" identifier == number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }" if (parenthesized_expression "(lVar10 != -1 && lVar9 == -1)" ( (binary_expression "lVar10 != -1 && lVar9 == -1" (binary_expression "lVar10 != -1" identifier != number_literal) && (binary_expression "lVar9 == -1" identifier == number_literal)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar1 = param_3[8];" (assignment_expression "uVar1 = param_3[8]" identifier = (subscript_expression "param_3[8]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_2[6];" (assignment_expression "uVar7 = param_2[6]" identifier = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (if_statement "if (uVar1 == 0xffffffff) goto LAB_001ef012;" if (parenthesized_expression "(uVar1 == 0xffffffff)" ( (binary_expression "uVar1 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_001ef012;" goto statement_identifier ;)) (expression_statement "uVar2 = param_3[6];" (assignment_expression "uVar2 = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (if_statement "if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(uVar7 != 0 && uVar2 != 0)" ( (binary_expression "uVar7 != 0 && uVar2 != 0" (binary_expression "uVar7 != 0" identifier != number_literal) && (binary_expression "uVar2 != 0" identifier != number_literal)) )) (compound_statement "{\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }" { (if_statement "if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }" if (parenthesized_expression "(uVar7 < uVar2)" ( (binary_expression "uVar7 < uVar2" identifier < identifier) )) (compound_statement "{\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }" { (return_statement "return (uint)(uVar7 != 0 && uVar2 != 0);" return (call_expression "(uint)(uVar7 != 0 && uVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 != 0 && uVar2 != 0)" ( (binary_expression "uVar7 != 0 && uVar2 != 0" (binary_expression "uVar7 != 0" identifier != number_literal) && (binary_expression "uVar2 != 0" identifier != number_literal)) ))) ;) })) (if_statement "if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }" if (parenthesized_expression "(uVar7 >= uVar2 && uVar7 != uVar2)" ( (binary_expression "uVar7 >= uVar2 && uVar7 != uVar2" (binary_expression "uVar7 >= uVar2" identifier >= identifier) && (binary_expression "uVar7 != uVar2" identifier != identifier)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "uVar3 = *(ulong *)(param_2 + 0xc);" (assignment_expression "uVar3 = *(ulong *)(param_2 + 0xc)" identifier = (pointer_expression "*(ulong *)(param_2 + 0xc)" * (cast_expression "(ulong *)(param_2 + 0xc)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(ulong *)(param_3 + 0xc);" (assignment_expression "uVar4 = *(ulong *)(param_3 + 0xc)" identifier = (pointer_expression "*(ulong *)(param_3 + 0xc)" * (cast_expression "(ulong *)(param_3 + 0xc)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc)" ( (binary_expression "param_3 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "__n = uVar4;" (assignment_expression "__n = uVar4" identifier = identifier) ;) (if_statement "if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }" if (parenthesized_expression "(uVar3 <= uVar4)" ( (binary_expression "uVar3 <= uVar4" identifier <= identifier) )) (compound_statement "{\n      __n = uVar3;\n    }" { (expression_statement "__n = uVar3;" (assignment_expression "__n = uVar3" identifier = identifier) ;) })) (if_statement "if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }" if (parenthesized_expression "((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0))" ( (binary_expression "(__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)" (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)" ( (comma_expression "uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0" (assignment_expression "uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" identifier = (call_expression "memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" identifier (argument_list "(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" ( (pointer_expression "*(void **)(param_2 + 10)" * (cast_expression "(void **)(param_2 + 10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 10)" ( (binary_expression "param_2 + 10" identifier + number_literal) )))) , (pointer_expression "*(void **)(param_3 + 10)" * (cast_expression "(void **)(param_3 + 10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 10)" ( (binary_expression "param_3 + 10" identifier + number_literal) )))) , identifier )))) , (binary_expression "uVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      return uVar7 >> 0x1f;\n    }" { (return_statement "return uVar7 >> 0x1f;" return (binary_expression "uVar7 >> 0x1f" identifier >> number_literal) ;) })) (expression_statement "lVar9 = uVar3 - uVar4;" (assignment_expression "lVar9 = uVar3 - uVar4" identifier = (binary_expression "uVar3 - uVar4" identifier - identifier)) ;) (if_statement "if (0x7fffffff < lVar9) {\n      return 0;\n    }" if (parenthesized_expression "(0x7fffffff < lVar9)" ( (binary_expression "0x7fffffff < lVar9" number_literal < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (lVar9 < -0x80000000) {\n      return 1;\n    }" if (parenthesized_expression "(lVar9 < -0x80000000)" ( (binary_expression "lVar9 < -0x80000000" identifier < number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }" if (parenthesized_expression "((uint)lVar9 != 0)" ( (binary_expression "(uint)lVar9 != 0" (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier) != number_literal) )) (compound_statement "{\n      return (uint)lVar9 >> 0x1f;\n    }" { (return_statement "return (uint)lVar9 >> 0x1f;" return (binary_expression "(uint)lVar9 >> 0x1f" (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ;) })) (if_statement "if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }" if (parenthesized_expression "(param_2[8] != 0xffffffff)" ( (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      return (uint)((uint)param_2[8] < uVar1);\n    }" { (return_statement "return (uint)((uint)param_2[8] < uVar1);" return (call_expression "(uint)((uint)param_2[8] < uVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)param_2[8] < uVar1)" ( (binary_expression "(uint)param_2[8] < uVar1" (cast_expression "(uint)param_2[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[8]" identifier [ number_literal ])) < identifier) ))) ;) })) }) (else_clause "else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" else (compound_statement "{\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" { (expression_statement "uVar8 = FUN_001ee640(param_2);" (assignment_expression "uVar8 = FUN_001ee640(param_2)" identifier = (call_expression "FUN_001ee640(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtbegin")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtbegin")" identifier (argument_list "(uVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") )))) ;) (if_statement "if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }" if (parenthesized_expression "(*param_3 == -1)" ( (binary_expression "*param_3 == -1" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }" { (if_statement "if (cVar5 != '\0') {\n        return 1;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (*param_2 != -1) goto LAB_001eee79;" if (parenthesized_expression "(*param_2 != -1)" ( (binary_expression "*param_2 != -1" (pointer_expression "*param_2" * identifier) != number_literal) )) (goto_statement "goto LAB_001eee79;" goto statement_identifier ;)) (goto_statement "goto LAB_001eee00;" goto statement_identifier ;) })) (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" identifier = (call_expression "FUN_001ee640(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "cVar6 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar6 = FUN_001b5df0(uVar8,"crtbegin")" identifier = (call_expression "FUN_001b5df0(uVar8,"crtbegin")" identifier (argument_list "(uVar8,"crtbegin")" ( identifier , (string_literal ""crtbegin"" " string_content ") )))) ;) (if_statement "if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }" { (if_statement "if (cVar5 != '\0') {\n        return 1;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_001eee70;" goto statement_identifier ;) })) (if_statement "if (cVar5 == '\0') {\n      return 0;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }" if (parenthesized_expression "((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff))" ( (binary_expression "(param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)" (parenthesized_expression "(param_2[8] != 0xffffffff)" ( (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_3[8] != 0xffffffff)" ( (binary_expression "param_3[8] != 0xffffffff" (subscript_expression "param_3[8]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }" { (return_statement "return (uint)((uint)param_2[8] < (uint)param_3[8]);" return (call_expression "(uint)((uint)param_2[8] < (uint)param_3[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)param_2[8] < (uint)param_3[8])" ( (binary_expression "(uint)param_2[8] < (uint)param_3[8]" (cast_expression "(uint)param_2[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[8]" identifier [ number_literal ])) < (cast_expression "(uint)param_3[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[8]" identifier [ number_literal ]))) ))) ;) })) }))) (labeled_statement "LAB_001ef00d:\n  FUN_001ed800();" statement_identifier : (expression_statement "FUN_001ed800();" (call_expression "FUN_001ed800()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_001ef012:\n                    \n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");" statement_identifier : (expression_statement "FUN_00199900("../../gold/output.cc",0xcf5,"input_section");" (call_expression "FUN_00199900("../../gold/output.cc",0xcf5,"input_section")" identifier (argument_list "("../../gold/output.cc",0xcf5,"input_section")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""input_section"" " string_content ") ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * 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 (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) ;) })) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) })))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , LIT )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT != LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT != LIT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >= IDENT) && (binary_expression IDENT != IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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 <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (return_statement return (binary_expression IDENT >> LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (return_statement return (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) ;) })) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })))
(function_definition "uint FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  char cVar5;\n  char cVar6;\n  uint uVar7;\n  undefined8 uVar8;\n  long lVar9;\n  long lVar10;\n  ulong __n;\n  \n  if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }\nLAB_001ef00d:\n  FUN_001ed800();\nLAB_001ef012:\n                    \n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");\n}" (type_identifier "uint") (function_declarator "FUN_001eed80(undefined8 param_1,int *param_2,int *param_3)" (identifier "FUN_001eed80") (parameter_list "(undefined8 param_1,int *param_2,int *param_3)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  ulong uVar3;\n  ulong uVar4;\n  char cVar5;\n  char cVar6;\n  uint uVar7;\n  undefined8 uVar8;\n  long lVar9;\n  long lVar10;\n  ulong __n;\n  \n  if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }\nLAB_001ef00d:\n  FUN_001ed800();\nLAB_001ef012:\n                    \n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "char cVar6;" (primitive_type "char") (identifier "cVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "ulong __n;" (type_identifier "ulong") (identifier "__n") (; ";")) (if_statement "if (*param_2 == -1) {\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }\n  else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" (if "if") (parenthesized_expression "(*param_2 == -1)" (( "(") (binary_expression "*param_2 == -1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }\nLAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);\n    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);\n    if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }\n    if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }\n    uVar1 = param_3[8];\n    uVar7 = param_2[6];\n    if (uVar1 == 0xffffffff) goto LAB_001ef012;\n    uVar2 = param_3[6];\n    if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }\n    uVar3 = *(ulong *)(param_2 + 0xc);\n    uVar4 = *(ulong *)(param_3 + 0xc);\n    __n = uVar4;\n    if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }\n    if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }\n    lVar9 = uVar3 - uVar4;\n    if (0x7fffffff < lVar9) {\n      return 0;\n    }\n    if (lVar9 < -0x80000000) {\n      return 1;\n    }\n    if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }\n    if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }\n  }" ({ "{") (if_statement "if (*param_3 != -1) {\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(*param_3 != -1)" (( "(") (binary_expression "*param_3 != -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n      uVar8 = FUN_001ee640(param_3);\n      cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n      if (cVar5 != '\0') {\n        return 0;\n      }\nLAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }\n    }" ({ "{") (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" (identifier "uVar8") (= "=") (call_expression "FUN_001ee640(param_3)" (identifier "FUN_001ee640") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtbegin")" (identifier "cVar5") (= "=") (call_expression "FUN_001b5df0(uVar8,"crtbegin")" (identifier "FUN_001b5df0") (argument_list "(uVar8,"crtbegin")" (( "(") (identifier "uVar8") (, ",") (string_literal ""crtbegin"" (" """) (string_content "crtbegin") (" """)) () ")")))) (; ";")) (if_statement "if (cVar5 != '\0') {\n        return 0;\n      }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_001eee70:\n      if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" (statement_identifier "LAB_001eee70") (: ":") (if_statement "if (*param_2 == -1) {\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }\n      else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" (if "if") (parenthesized_expression "(*param_2 == -1)" (( "(") (binary_expression "*param_2 == -1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }\n      }" ({ "{") (if_statement "if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }" (if "if") (parenthesized_expression "(*param_3 != -1)" (( "(") (binary_expression "*param_3 != -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n          uVar8 = FUN_001ee640(param_3);\n          cVar5 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar5 != '\0') {\n            return 1;\n          }\n        }" ({ "{") (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" (identifier "uVar8") (= "=") (call_expression "FUN_001ee640(param_3)" (identifier "FUN_001ee640") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtend")" (identifier "cVar5") (= "=") (call_expression "FUN_001b5df0(uVar8,"crtend")" (identifier "FUN_001b5df0") (argument_list "(uVar8,"crtend")" (( "(") (identifier "uVar8") (, ",") (string_literal ""crtend"" (" """) (string_content "crtend") (" """)) () ")")))) (; ";")) (if_statement "if (cVar5 != '\0') {\n            return 1;\n          }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            return 1;\n          }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" (else "else") (compound_statement "{\nLAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);\n        cVar5 = FUN_001b5df0(uVar8,"crtend");\n        if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }\n        if (cVar5 != '\0') {\n          return 0;\n        }\n      }" ({ "{") (labeled_statement "LAB_001eee79:\n        uVar8 = FUN_001ee640(param_2);" (statement_identifier "LAB_001eee79") (: ":") (expression_statement "uVar8 = FUN_001ee640(param_2);" (assignment_expression "uVar8 = FUN_001ee640(param_2)" (identifier "uVar8") (= "=") (call_expression "FUN_001ee640(param_2)" (identifier "FUN_001ee640") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";"))) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtend")" (identifier "cVar5") (= "=") (call_expression "FUN_001b5df0(uVar8,"crtend")" (identifier "FUN_001b5df0") (argument_list "(uVar8,"crtend")" (( "(") (identifier "uVar8") (, ",") (string_literal ""crtend"" (" """) (string_content "crtend") (" """)) () ")")))) (; ";")) (if_statement "if (*param_3 != -1) {\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }" (if "if") (parenthesized_expression "(*param_3 != -1)" (( "(") (binary_expression "*param_3 != -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n          uVar8 = FUN_001ee640(param_3);\n          cVar6 = FUN_001b5df0(uVar8,"crtend");\n          if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }\n        }" ({ "{") (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" (identifier "uVar8") (= "=") (call_expression "FUN_001ee640(param_3)" (identifier "FUN_001ee640") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "cVar6 = FUN_001b5df0(uVar8,"crtend");" (assignment_expression "cVar6 = FUN_001b5df0(uVar8,"crtend")" (identifier "cVar6") (= "=") (call_expression "FUN_001b5df0(uVar8,"crtend")" (identifier "FUN_001b5df0") (argument_list "(uVar8,"crtend")" (( "(") (identifier "uVar8") (, ",") (string_literal ""crtend"" (" """) (string_content "crtend") (" """)) () ")")))) (; ";")) (if_statement "if (cVar6 != '\0') {\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }" (if "if") (parenthesized_expression "(cVar6 != '\0')" (( "(") (binary_expression "cVar6 != '\0'" (identifier "cVar6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            if (cVar5 == '\0') {\n              return 1;\n            }\n            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }\n            goto LAB_001ef00d;\n          }" ({ "{") (if_statement "if (cVar5 == '\0') {\n              return 1;\n            }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              return 1;\n            }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }" (if "if") (parenthesized_expression "((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff))" (( "(") (binary_expression "(param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)" (parenthesized_expression "(param_2[8] != 0xffffffff)" (( "(") (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0xffffffff")) () ")")) (&& "&&") (parenthesized_expression "(param_3[8] != 0xffffffff)" (( "(") (binary_expression "param_3[8] != 0xffffffff" (subscript_expression "param_3[8]" (identifier "param_3") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0xffffffff")) () ")"))) () ")")) (compound_statement "{\n              return (uint)((uint)param_2[8] < (uint)param_3[8]);\n            }" ({ "{") (return_statement "return (uint)((uint)param_2[8] < (uint)param_3[8]);" (return "return") (call_expression "(uint)((uint)param_2[8] < (uint)param_3[8])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)param_2[8] < (uint)param_3[8])" (( "(") (binary_expression "(uint)param_2[8] < (uint)param_3[8]" (cast_expression "(uint)param_2[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]"))) (< "<") (cast_expression "(uint)param_3[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[8]" (identifier "param_3") ([ "[") (number_literal "8") (] "]")))) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_001ef00d;" (goto "goto") (statement_identifier "LAB_001ef00d") (; ";")) (} "}"))) (} "}"))) (if_statement "if (cVar5 != '\0') {\n          return 0;\n        }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))))) (} "}"))) (labeled_statement "LAB_001eee00:\n    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);" (statement_identifier "LAB_001eee00") (: ":") (expression_statement "lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);" (assignment_expression "lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1)" (identifier "lVar9") (= "=") (call_expression "FUN_002ab0f0(param_2 + 10,0x2e,1)" (identifier "FUN_002ab0f0") (argument_list "(param_2 + 10,0x2e,1)" (( "(") (binary_expression "param_2 + 10" (identifier "param_2") (+ "+") (number_literal "10")) (, ",") (number_literal "0x2e") (, ",") (number_literal "1") () ")")))) (; ";"))) (expression_statement "lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);" (assignment_expression "lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1)" (identifier "lVar10") (= "=") (call_expression "FUN_002ab0f0(param_3 + 10,0x2e,1)" (identifier "FUN_002ab0f0") (argument_list "(param_3 + 10,0x2e,1)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) (, ",") (number_literal "0x2e") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if ((lVar9 != -1) && (lVar10 == -1)) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((lVar9 != -1) && (lVar10 == -1))" (( "(") (binary_expression "(lVar9 != -1) && (lVar10 == -1)" (parenthesized_expression "(lVar9 != -1)" (( "(") (binary_expression "lVar9 != -1" (identifier "lVar9") (!= "!=") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(lVar10 == -1)" (( "(") (binary_expression "lVar10 == -1" (identifier "lVar10") (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (lVar10 != -1 && lVar9 == -1) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(lVar10 != -1 && lVar9 == -1)" (( "(") (binary_expression "lVar10 != -1 && lVar9 == -1" (binary_expression "lVar10 != -1" (identifier "lVar10") (!= "!=") (number_literal "-1")) (&& "&&") (binary_expression "lVar9 == -1" (identifier "lVar9") (== "==") (number_literal "-1"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar1 = param_3[8];" (assignment_expression "uVar1 = param_3[8]" (identifier "uVar1") (= "=") (subscript_expression "param_3[8]" (identifier "param_3") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "uVar7 = param_2[6];" (assignment_expression "uVar7 = param_2[6]" (identifier "uVar7") (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (uVar1 == 0xffffffff) goto LAB_001ef012;" (if "if") (parenthesized_expression "(uVar1 == 0xffffffff)" (( "(") (binary_expression "uVar1 == 0xffffffff" (identifier "uVar1") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_001ef012;" (goto "goto") (statement_identifier "LAB_001ef012") (; ";"))) (expression_statement "uVar2 = param_3[6];" (assignment_expression "uVar2 = param_3[6]" (identifier "uVar2") (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (uVar7 != 0 && uVar2 != 0) {\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }" (if "if") (parenthesized_expression "(uVar7 != 0 && uVar2 != 0)" (( "(") (binary_expression "uVar7 != 0 && uVar2 != 0" (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) (&& "&&") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n      if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }\n      if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }\n    }" ({ "{") (if_statement "if (uVar7 < uVar2) {\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }" (if "if") (parenthesized_expression "(uVar7 < uVar2)" (( "(") (binary_expression "uVar7 < uVar2" (identifier "uVar7") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n        return (uint)(uVar7 != 0 && uVar2 != 0);\n      }" ({ "{") (return_statement "return (uint)(uVar7 != 0 && uVar2 != 0);" (return "return") (call_expression "(uint)(uVar7 != 0 && uVar2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 != 0 && uVar2 != 0)" (( "(") (binary_expression "uVar7 != 0 && uVar2 != 0" (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) (&& "&&") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0"))) () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar7 >= uVar2 && uVar7 != uVar2) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(uVar7 >= uVar2 && uVar7 != uVar2)" (( "(") (binary_expression "uVar7 >= uVar2 && uVar7 != uVar2" (binary_expression "uVar7 >= uVar2" (identifier "uVar7") (>= ">=") (identifier "uVar2")) (&& "&&") (binary_expression "uVar7 != uVar2" (identifier "uVar7") (!= "!=") (identifier "uVar2"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = *(ulong *)(param_2 + 0xc);" (assignment_expression "uVar3 = *(ulong *)(param_2 + 0xc)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(param_2 + 0xc)" (* "*") (cast_expression "(ulong *)(param_2 + 0xc)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(ulong *)(param_3 + 0xc);" (assignment_expression "uVar4 = *(ulong *)(param_3 + 0xc)" (identifier "uVar4") (= "=") (pointer_expression "*(ulong *)(param_3 + 0xc)" (* "*") (cast_expression "(ulong *)(param_3 + 0xc)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc)" (( "(") (binary_expression "param_3 + 0xc" (identifier "param_3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "__n = uVar4;" (assignment_expression "__n = uVar4" (identifier "__n") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (uVar3 <= uVar4) {\n      __n = uVar3;\n    }" (if "if") (parenthesized_expression "(uVar3 <= uVar4)" (( "(") (binary_expression "uVar3 <= uVar4" (identifier "uVar3") (<= "<=") (identifier "uVar4")) () ")")) (compound_statement "{\n      __n = uVar3;\n    }" ({ "{") (expression_statement "__n = uVar3;" (assignment_expression "__n = uVar3" (identifier "__n") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (if_statement "if ((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {\n      return uVar7 >> 0x1f;\n    }" (if "if") (parenthesized_expression "((__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0))" (( "(") (binary_expression "(__n != 0) &&\n       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)" (parenthesized_expression "(__n != 0)" (( "(") (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)" (( "(") (comma_expression "uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0" (assignment_expression "uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" (identifier "uVar7") (= "=") (call_expression "memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" (identifier "memcmp") (argument_list "(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n)" (( "(") (pointer_expression "*(void **)(param_2 + 10)" (* "*") (cast_expression "(void **)(param_2 + 10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 10)" (( "(") (binary_expression "param_2 + 10" (identifier "param_2") (+ "+") (number_literal "10")) () ")")))) (, ",") (pointer_expression "*(void **)(param_3 + 10)" (* "*") (cast_expression "(void **)(param_3 + 10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 10)" (( "(") (binary_expression "param_3 + 10" (identifier "param_3") (+ "+") (number_literal "10")) () ")")))) (, ",") (identifier "__n") () ")")))) (, ",") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      return uVar7 >> 0x1f;\n    }" ({ "{") (return_statement "return uVar7 >> 0x1f;" (return "return") (binary_expression "uVar7 >> 0x1f" (identifier "uVar7") (>> ">>") (number_literal "0x1f")) (; ";")) (} "}"))) (expression_statement "lVar9 = uVar3 - uVar4;" (assignment_expression "lVar9 = uVar3 - uVar4" (identifier "lVar9") (= "=") (binary_expression "uVar3 - uVar4" (identifier "uVar3") (- "-") (identifier "uVar4"))) (; ";")) (if_statement "if (0x7fffffff < lVar9) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(0x7fffffff < lVar9)" (( "(") (binary_expression "0x7fffffff < lVar9" (number_literal "0x7fffffff") (< "<") (identifier "lVar9")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (lVar9 < -0x80000000) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(lVar9 < -0x80000000)" (( "(") (binary_expression "lVar9 < -0x80000000" (identifier "lVar9") (< "<") (number_literal "-0x80000000")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if ((uint)lVar9 != 0) {\n      return (uint)lVar9 >> 0x1f;\n    }" (if "if") (parenthesized_expression "((uint)lVar9 != 0)" (( "(") (binary_expression "(uint)lVar9 != 0" (cast_expression "(uint)lVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar9")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return (uint)lVar9 >> 0x1f;\n    }" ({ "{") (return_statement "return (uint)lVar9 >> 0x1f;" (return "return") (binary_expression "(uint)lVar9 >> 0x1f" (cast_expression "(uint)lVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar9")) (>> ">>") (number_literal "0x1f")) (; ";")) (} "}"))) (if_statement "if (param_2[8] != 0xffffffff) {\n      return (uint)((uint)param_2[8] < uVar1);\n    }" (if "if") (parenthesized_expression "(param_2[8] != 0xffffffff)" (( "(") (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      return (uint)((uint)param_2[8] < uVar1);\n    }" ({ "{") (return_statement "return (uint)((uint)param_2[8] < uVar1);" (return "return") (call_expression "(uint)((uint)param_2[8] < uVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)param_2[8] < uVar1)" (( "(") (binary_expression "(uint)param_2[8] < uVar1" (cast_expression "(uint)param_2[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]"))) (< "<") (identifier "uVar1")) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" (else "else") (compound_statement "{\n    uVar8 = FUN_001ee640(param_2);\n    cVar5 = FUN_001b5df0(uVar8,"crtbegin");\n    if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }\n    uVar8 = FUN_001ee640(param_3);\n    cVar6 = FUN_001b5df0(uVar8,"crtbegin");\n    if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }\n    if (cVar5 == '\0') {\n      return 0;\n    }\n    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }\n  }" ({ "{") (expression_statement "uVar8 = FUN_001ee640(param_2);" (assignment_expression "uVar8 = FUN_001ee640(param_2)" (identifier "uVar8") (= "=") (call_expression "FUN_001ee640(param_2)" (identifier "FUN_001ee640") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "cVar5 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar5 = FUN_001b5df0(uVar8,"crtbegin")" (identifier "cVar5") (= "=") (call_expression "FUN_001b5df0(uVar8,"crtbegin")" (identifier "FUN_001b5df0") (argument_list "(uVar8,"crtbegin")" (( "(") (identifier "uVar8") (, ",") (string_literal ""crtbegin"" (" """) (string_content "crtbegin") (" """)) () ")")))) (; ";")) (if_statement "if (*param_3 == -1) {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }" (if "if") (parenthesized_expression "(*param_3 == -1)" (( "(") (binary_expression "*param_3 == -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      if (*param_2 != -1) goto LAB_001eee79;\n      goto LAB_001eee00;\n    }" ({ "{") (if_statement "if (cVar5 != '\0') {\n        return 1;\n      }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (*param_2 != -1) goto LAB_001eee79;" (if "if") (parenthesized_expression "(*param_2 != -1)" (( "(") (binary_expression "*param_2 != -1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "-1")) () ")")) (goto_statement "goto LAB_001eee79;" (goto "goto") (statement_identifier "LAB_001eee79") (; ";"))) (goto_statement "goto LAB_001eee00;" (goto "goto") (statement_identifier "LAB_001eee00") (; ";")) (} "}"))) (expression_statement "uVar8 = FUN_001ee640(param_3);" (assignment_expression "uVar8 = FUN_001ee640(param_3)" (identifier "uVar8") (= "=") (call_expression "FUN_001ee640(param_3)" (identifier "FUN_001ee640") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "cVar6 = FUN_001b5df0(uVar8,"crtbegin");" (assignment_expression "cVar6 = FUN_001b5df0(uVar8,"crtbegin")" (identifier "cVar6") (= "=") (call_expression "FUN_001b5df0(uVar8,"crtbegin")" (identifier "FUN_001b5df0") (argument_list "(uVar8,"crtbegin")" (( "(") (identifier "uVar8") (, ",") (string_literal ""crtbegin"" (" """) (string_content "crtbegin") (" """)) () ")")))) (; ";")) (if_statement "if (cVar6 == '\0') {\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }" (if "if") (parenthesized_expression "(cVar6 == '\0')" (( "(") (binary_expression "cVar6 == '\0'" (identifier "cVar6") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (cVar5 != '\0') {\n        return 1;\n      }\n      goto LAB_001eee70;\n    }" ({ "{") (if_statement "if (cVar5 != '\0') {\n        return 1;\n      }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (goto_statement "goto LAB_001eee70;" (goto "goto") (statement_identifier "LAB_001eee70") (; ";")) (} "}"))) (if_statement "if (cVar5 == '\0') {\n      return 0;\n    }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }" (if "if") (parenthesized_expression "((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff))" (( "(") (binary_expression "(param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)" (parenthesized_expression "(param_2[8] != 0xffffffff)" (( "(") (binary_expression "param_2[8] != 0xffffffff" (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0xffffffff")) () ")")) (&& "&&") (parenthesized_expression "(param_3[8] != 0xffffffff)" (( "(") (binary_expression "param_3[8] != 0xffffffff" (subscript_expression "param_3[8]" (identifier "param_3") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0xffffffff")) () ")"))) () ")")) (compound_statement "{\n      return (uint)((uint)param_2[8] < (uint)param_3[8]);\n    }" ({ "{") (return_statement "return (uint)((uint)param_2[8] < (uint)param_3[8]);" (return "return") (call_expression "(uint)((uint)param_2[8] < (uint)param_3[8])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)param_2[8] < (uint)param_3[8])" (( "(") (binary_expression "(uint)param_2[8] < (uint)param_3[8]" (cast_expression "(uint)param_2[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]"))) (< "<") (cast_expression "(uint)param_3[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[8]" (identifier "param_3") ([ "[") (number_literal "8") (] "]")))) () ")"))) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_001ef00d:\n  FUN_001ed800();" (statement_identifier "LAB_001ef00d") (: ":") (expression_statement "FUN_001ed800();" (call_expression "FUN_001ed800()" (identifier "FUN_001ed800") (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_001ef012:\n                    \n  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");" (statement_identifier "LAB_001ef012") (: ":") (expression_statement "FUN_00199900("../../gold/output.cc",0xcf5,"input_section");" (call_expression "FUN_00199900("../../gold/output.cc",0xcf5,"input_section")" (identifier "FUN_00199900") (argument_list "("../../gold/output.cc",0xcf5,"input_section")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0xcf5") (, ",") (string_literal ""input_section"" (" """) (string_content "input_section") (" """)) () ")"))) (; ";"))) (} "}")))

/* DWARF original prototype: bool operator()(Input_section_sort_compare * this,
   Input_section_sort_entry * s1, Input_section_sort_entry * s2) */

bool __thiscall
gold::Output_section::type_1::function_1()
          (type_1 *this,type_2 *s1,
          type_2 *s2)

{
  type_3 var_7;
  type_3 var_9;
  type_4 var_10;
  type_4 var_11;
  bool bVar5;
  bool bVar6;
  int var_14;
  type_5 *pRVar8;
  long var_5;
  long var_6;
  type_3 extraout_EDX;
  type_3 var_3;
  size_t extraout_RDX;
  char *__s;
  size_t var_12;
  
  if ((s1->input_section_).shndx_ == 0xffffffff) {
    if ((s2->input_section_).shndx_ != 0xffffffff) {
      pRVar8 = Input_section::var_1(&s2->input_section_);
      bVar5 = Layout::var_2(pRVar8,"crtbegin");
      if (bVar5) {
        return false;
      }
      goto LAB_001eee70;
    }
  }
  else {
    pRVar8 = Input_section::var_1(&s1->input_section_);
    bVar5 = Layout::var_2(pRVar8,"crtbegin");
    if ((s2->input_section_).shndx_ == 0xffffffff) {
      if (bVar5) {
        return true;
      }
      if ((s1->input_section_).shndx_ == 0xffffffff) goto LAB_001eee00;
    }
    else {
      pRVar8 = Input_section::var_1(&s2->input_section_);
      __s = "crtbegin";
      bVar6 = Layout::var_2(pRVar8,"crtbegin");
      if (bVar6) {
        if (!bVar5) {
          return false;
        }
        var_3 = extraout_EDX;
        if ((s1->index_ != 0xffffffff) && (var_3 = s2->index_, var_3 != 0xffffffff)) {
          return s1->index_ < var_3;
        }
        goto LAB_001ef00d;
      }
      if (bVar5) {
        return true;
      }
LAB_001eee70:
      if ((s1->input_section_).shndx_ == 0xffffffff) {
        if ((s2->input_section_).shndx_ != 0xffffffff) {
          pRVar8 = Input_section::var_1(&s2->input_section_);
          bVar5 = Layout::var_2(pRVar8,"crtend");
          if (bVar5) {
            return true;
          }
        }
        goto LAB_001eee00;
      }
    }
    pRVar8 = Input_section::var_1(&s1->input_section_);
    bVar5 = Layout::var_2(pRVar8,"crtend");
    if ((s2->input_section_).shndx_ != 0xffffffff) {
      pRVar8 = Input_section::var_1(&s2->input_section_);
      __s = "crtend";
      bVar6 = Layout::var_2(pRVar8,"crtend");
      if (bVar6) {
        if (!bVar5) {
          return true;
        }
        var_3 = s1->index_;
        if ((var_3 != 0xffffffff) && (s2->index_ != 0xffffffff)) {
          return var_3 < s2->index_;
        }
        goto LAB_001ef00d;
      }
    }
    if (bVar5) {
      return false;
    }
  }
LAB_001eee00:
  var_5 = std::string::var_4((type_6 *)&s1->section_name_,'.',1);
  pRVar8 = (type_5 *)&s2->section_name_;
  var_6 = std::string::var_4((type_6 *)pRVar8,'.',1);
  if ((var_5 != -1) && (var_6 == -1)) {
    return false;
  }
  if (var_6 == -1 || var_5 != -1) {
    var_7 = s2->index_;
    var_3 = (s1->input_section_).section_order_index_;
    __s = (char *)(type_4)var_3;
    if (var_7 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
      var_8("../../gold/output.cc",0xcf5,"input_section");
    }
    var_9 = (s2->input_section_).section_order_index_;
    if (var_3 != 0 && var_9 != 0) {
      if (var_3 < var_9) {
        return var_3 != 0 && var_9 != 0;
      }
      if (var_3 >= var_9 && var_3 != var_9) {
        return false;
      }
    }
    var_10 = (s1->section_name_)._M_string_length;
    var_11 = (s2->section_name_)._M_string_length;
    var_12 = var_11;
    if (var_10 <= var_11) {
      var_12 = var_10;
    }
    if (var_12 != 0) {
      __s = (s2->section_name_)._M_dataplus._M_p;
      pRVar8 = (type_5 *)(s1->section_name_)._M_dataplus._M_p;
      var_14 = var_13(pRVar8,__s,var_12);
      var_12 = extraout_RDX;
      if (var_14 != 0) {
        return var_15((type_3)var_14 >> 0x1f,0);
      }
    }
    var_3 = (type_3)var_12;
    var_5 = var_10 - var_11;
    if (0x7fffffff < var_5) {
      return false;
    }
    if (-0x80000001 < var_5) {
      if ((int)var_5 != 0) {
        return (bool)((byte)((type_4)var_5 >> 0x18) >> 7);
      }
      if (s1->index_ != 0xffffffff) {
        return s1->index_ < var_7;
      }
LAB_001ef00d:
                    /* WARNING: Subroutine does not return */
      Input_section_sort_entry::var_16((type_2 *)pRVar8,__s,var_3);
    }
  }
  return true;
}


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

uint MASKED(undefined8 param_1,int *param_2,int *param_3)

{
  uint uVar1;
  uint uVar2;
  ulong uVar3;
  ulong uVar4;
  char cVar5;
  char cVar6;
  uint uVar7;
  undefined8 uVar8;
  long lVar9;
  long lVar10;
  ulong __n;
  
  if (*param_2 == -1) {
    if (*param_3 != -1) {
      uVar8 = FUN_001ee640(param_3);
      cVar5 = FUN_001b5df0(uVar8,"crtbegin");
      if (cVar5 != '\0') {
        return 0;
      }
LAB_001eee70:
      if (*param_2 == -1) {
        if (*param_3 != -1) {
          uVar8 = FUN_001ee640(param_3);
          cVar5 = FUN_001b5df0(uVar8,"crtend");
          if (cVar5 != '\0') {
            return 1;
          }
        }
      }
      else {
LAB_001eee79:
        uVar8 = FUN_001ee640(param_2);
        cVar5 = FUN_001b5df0(uVar8,"crtend");
        if (*param_3 != -1) {
          uVar8 = FUN_001ee640(param_3);
          cVar6 = FUN_001b5df0(uVar8,"crtend");
          if (cVar6 != '\0') {
            if (cVar5 == '\0') {
              return 1;
            }
            if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {
              return (uint)((uint)param_2[8] < (uint)param_3[8]);
            }
            goto LAB_001ef00d;
          }
        }
        if (cVar5 != '\0') {
          return 0;
        }
      }
    }
LAB_001eee00:
    lVar9 = FUN_002ab0f0(param_2 + 10,0x2e,1);
    lVar10 = FUN_002ab0f0(param_3 + 10,0x2e,1);
    if ((lVar9 != -1) && (lVar10 == -1)) {
      return 0;
    }
    if (lVar10 != -1 && lVar9 == -1) {
      return 1;
    }
    uVar1 = param_3[8];
    uVar7 = param_2[6];
    if (uVar1 == 0xffffffff) goto LAB_001ef012;
    uVar2 = param_3[6];
    if (uVar7 != 0 && uVar2 != 0) {
      if (uVar7 < uVar2) {
        return (uint)(uVar7 != 0 && uVar2 != 0);
      }
      if (uVar7 >= uVar2 && uVar7 != uVar2) {
        return 0;
      }
    }
    uVar3 = *(ulong *)(param_2 + 0xc);
    uVar4 = *(ulong *)(param_3 + 0xc);
    __n = uVar4;
    if (uVar3 <= uVar4) {
      __n = uVar3;
    }
    if ((__n != 0) &&
       (uVar7 = memcmp(*(void **)(param_2 + 10),*(void **)(param_3 + 10),__n), uVar7 != 0)) {
      return uVar7 >> 0x1f;
    }
    lVar9 = uVar3 - uVar4;
    if (0x7fffffff < lVar9) {
      return 0;
    }
    if (lVar9 < -0x80000000) {
      return 1;
    }
    if ((uint)lVar9 != 0) {
      return (uint)lVar9 >> 0x1f;
    }
    if (param_2[8] != 0xffffffff) {
      return (uint)((uint)param_2[8] < uVar1);
    }
  }
  else {
    uVar8 = FUN_001ee640(param_2);
    cVar5 = FUN_001b5df0(uVar8,"crtbegin");
    if (*param_3 == -1) {
      if (cVar5 != '\0') {
        return 1;
      }
      if (*param_2 != -1) goto LAB_001eee79;
      goto LAB_001eee00;
    }
    uVar8 = FUN_001ee640(param_3);
    cVar6 = FUN_001b5df0(uVar8,"crtbegin");
    if (cVar6 == '\0') {
      if (cVar5 != '\0') {
        return 1;
      }
      goto LAB_001eee70;
    }
    if (cVar5 == '\0') {
      return 0;
    }
    if ((param_2[8] != 0xffffffff) && (param_3[8] != 0xffffffff)) {
      return (uint)((uint)param_2[8] < (uint)param_3[8]);
    }
  }
LAB_001ef00d:
  FUN_001ed800();
LAB_001ef012:
                    /* WARNING: Subroutine does not return */
  FUN_00199900("../../gold/output.cc",0xcf5,"input_section");
}

