
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: bool operator()(Input_section_sort_init_fini_compare * this,
   Input_section_sort_entry * s1, Input_section_sort_entry * s2) */

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

{
  string *this_00;
  string *this_01;
  byte *pbVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  size_t sVar5;
  char *pcVar6;
  char *pcVar7;
  uint uVar8;
  char *__s;
  ulong uVar9;
  int iVar10;
  char *pcVar11;
  byte *pbVar12;
  byte *pbVar13;
  bool bVar14;
  bool bVar15;
  bool bVar16;
  byte bVar17;
  Input_section_sort_entry *in_stack_ffffffc4;
  undefined4 in_stack_ffffffc8;
  char *in_stack_ffffffcc;
  char *end;
  undefined4 uStack_14;
  
  bVar17 = 0;
  uStack_14 = 0xbb6a9;
  this_00 = &s1->section_name_;
  pcVar6 = (char *)std::string::find((string *)this_00,'.',1);
  this_01 = &s2->section_name_;
  pcVar7 = (char *)std::string::find((string *)this_01,'.',1);
  bVar16 = pcVar7 == (char *)0xffffffff && pcVar6 != (char *)0xffffffff;
  __s = (char *)CONCAT31((int3)((uint)in_stack_ffffffc8 >> 8),bVar16);
  if (bVar16) {
    return true;
  }
  if (pcVar6 == (char *)0xffffffff && pcVar7 != (char *)0xffffffff) goto LAB_000bb8c3;
  if (pcVar6 == (char *)0xffffffff) {
    pcVar11 = ".ctors";
    iVar10 = std::string::compare((string *)this_00,".ctors");
    in_stack_ffffffcc = pcVar11;
    if (((iVar10 == 0) ||
        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,
        iVar10 == 0)) &&
       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length
        || ((sVar5 != 0 &&
            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,
                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7
            , iVar10 != 0)))))) goto LAB_000bb8c3;
    if (pcVar7 == (char *)0xffffffff) goto LAB_000bb950;
  }
  else {
    pcVar11 = ".ctors";
    bVar16 = pcVar7 == (char *)0xffffffff;
    if (bVar16) {
LAB_000bb950:
      iVar10 = std::string::compare((string *)this_01,pcVar11);
      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))
      {
        sVar5 = (s2->section_name_)._M_string_length;
        if (sVar5 != (s1->section_name_)._M_string_length) {
          return true;
        }
        if ((sVar5 != 0) &&
           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,
                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {
          return true;
        }
      }
      bVar16 = pcVar6 == (char *)0xffffffff;
      pcVar7 = pcVar6;
      if (bVar16) goto LAB_000bb83f;
    }
    bVar14 = pcVar7 != (char *)0xffffffff;
    iVar10 = 7;
    pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p;
    pbVar12 = (byte *)".ctors.";
    pbVar13 = pbVar1;
    do {
      if (iVar10 == 0) break;
      iVar10 = iVar10 + -1;
      bVar14 = *pbVar12 < *pbVar13;
      bVar16 = *pbVar12 == *pbVar13;
      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
    } while (bVar16);
    bVar15 = false;
    bVar16 = (!bVar14 && !bVar16) == bVar14;
    if (bVar16) {
LAB_000bb990:
      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);
      if (*end == '\0') {
        bVar16 = 0xffff < uVar9;
        pcVar7 = (char *)(0xffff - uVar9);
        bVar14 = pcVar7 == (char *)0x0;
      }
      else {
LAB_000bb7a8:
        bVar16 = false;
        pcVar7 = (char *)0x0;
        bVar14 = true;
      }
    }
    else {
      iVar10 = 7;
      pbVar12 = (byte *)".dtors.";
      pbVar13 = pbVar1;
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar16 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
      } while (bVar16);
      bVar14 = false;
      bVar16 = (!bVar15 && !bVar16) == bVar15;
      if (bVar16) goto LAB_000bb990;
      iVar10 = 0xc;
      pbVar12 = (byte *)".init_array.";
      pbVar13 = pbVar1;
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar14 = *pbVar12 < *pbVar13;
        bVar16 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
      } while (bVar16);
      bVar15 = false;
      bVar16 = (!bVar14 && !bVar16) == bVar14;
      if (!bVar16) {
        iVar10 = 0xc;
        pbVar12 = (byte *)".fini_array.";
        pbVar13 = pbVar1;
        do {
          if (iVar10 == 0) break;
          iVar10 = iVar10 + -1;
          bVar15 = *pbVar12 < *pbVar13;
          bVar16 = *pbVar12 == *pbVar13;
          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
        } while (bVar16);
        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;
        goto LAB_000bb7a8;
      }
LAB_000bb782:
      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);
      bVar16 = false;
      bVar14 = *end == '\0';
      if (!bVar14) goto LAB_000bb7a8;
    }
    iVar10 = 7;
    pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p;
    pbVar12 = (byte *)".ctors.";
    pbVar13 = pbVar1;
    do {
      if (iVar10 == 0) break;
      iVar10 = iVar10 + -1;
      bVar16 = *pbVar12 < *pbVar13;
      bVar14 = *pbVar12 == *pbVar13;
      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
    } while (bVar14);
    bVar15 = false;
    bVar16 = (!bVar16 && !bVar14) == bVar16;
    if (bVar16) {
LAB_000bb9c0:
      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);
      if (*end == '\0') {
        pcVar6 = (char *)(0xffff - uVar9);
LAB_000bb82f:
        in_stack_ffffffcc = pcVar7;
        if (pcVar7 < pcVar6) {
          return true;
        }
      }
      else {
LAB_000bb9e7:
        pcVar6 = (char *)0x0;
        in_stack_ffffffcc = pcVar7;
      }
    }
    else {
      iVar10 = 7;
      pbVar12 = (byte *)".dtors.";
      pbVar13 = pbVar1;
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar16 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
      } while (bVar16);
      bVar14 = false;
      bVar16 = (!bVar15 && !bVar16) == bVar15;
      if (bVar16) goto LAB_000bb9c0;
      iVar10 = 0xc;
      pbVar12 = (byte *)".init_array.";
      pbVar13 = pbVar1;
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar14 = *pbVar12 < *pbVar13;
        bVar16 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
      } while (bVar16);
      bVar15 = false;
      bVar16 = (!bVar14 && !bVar16) == bVar14;
      if (bVar16) {
LAB_000bb804:
        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);
        if (*end != '\0') goto LAB_000bb9e7;
        goto LAB_000bb82f;
      }
      iVar10 = 0xc;
      pbVar12 = (byte *)".fini_array.";
      pbVar13 = pbVar1;
      do {
        if (iVar10 == 0) break;
        iVar10 = iVar10 + -1;
        bVar15 = *pbVar12 < *pbVar13;
        bVar16 = *pbVar12 == *pbVar13;
        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;
        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;
      } while (bVar16);
      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;
      pcVar6 = (char *)0x0;
    }
    if (pcVar6 < pcVar7) goto LAB_000bb8c3;
  }
LAB_000bb83f:
  uVar2 = (s1->input_section_).section_order_index_;
  uVar3 = s2->index_;
  if (uVar3 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");
  }
  uVar4 = (s2->input_section_).section_order_index_;
  __s = (char *)CONCAT31((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0);
  if (uVar2 != 0 && uVar4 != 0) {
    if (uVar2 < uVar4) goto LAB_000bb8c3;
    if (uVar2 >= uVar4 && uVar2 != uVar4) {
      __s = (char *)0x0;
      goto LAB_000bb8c3;
    }
  }
  uVar2 = (s1->section_name_)._M_string_length;
  uVar4 = (s2->section_name_)._M_string_length;
  uVar8 = uVar4;
  if (uVar2 <= uVar4) {
    uVar8 = uVar2;
  }
  if (((uVar8 == 0) ||
      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,
                      uVar8), uVar8 == 0)) && (uVar8 = uVar2 - uVar4, uVar8 == 0)) {
    if (s1->index_ != 0xffffffff) {
      return s1->index_ < uVar3;
    }
                    /* WARNING: Subroutine does not return */
    Input_section_sort_entry::index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);
  }
  __s = (char *)(uVar8 >> 0x1f);
LAB_000bb8c3:
  return (bool)(char)__s;
}



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

uint FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)

{
  int iVar1;
  byte *pbVar2;
  uint uVar3;
  uint uVar4;
  size_t sVar5;
  int iVar6;
  int iVar7;
  ulong uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  ulong uVar12;
  int iVar13;
  byte *pbVar14;
  byte *pbVar15;
  bool bVar16;
  bool bVar17;
  bool bVar18;
  byte bVar19;
  uint local_38;
  char *local_20 [3];
  undefined4 uStack_14;
  
  bVar19 = 0;
  uStack_14 = 0xbb6a9;
  iVar13 = param_2 + 0x1c;
  iVar6 = FUN_0018a600(iVar13,0x2e,1);
  iVar1 = param_3 + 0x1c;
  iVar7 = FUN_0018a600(iVar1,0x2e,1);
  bVar18 = iVar7 == -1 && iVar6 != -1;
  local_38 = (uint)bVar18;
  if (bVar18) {
    return 1;
  }
  if (iVar6 == -1 && iVar7 != -1) {
    return local_38;
  }
  if (iVar6 == -1) {
    iVar11 = FUN_0018ad60(iVar13,".ctors");
    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {
      sVar5 = *(size_t *)(param_2 + 0x20);
      if (sVar5 != *(size_t *)(param_3 + 0x20)) {
        return local_38;
      }
      if ((sVar5 != 0) &&
         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)
         ) {
        return local_38;
      }
    }
    if (iVar7 != -1) goto LAB_000bb83f;
LAB_000bb950:
    iVar13 = FUN_0018ad60(iVar1,".ctors");
    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {
      sVar5 = *(size_t *)(param_3 + 0x20);
      if (sVar5 != *(size_t *)(param_2 + 0x20)) {
        return 1;
      }
      if ((sVar5 != 0) &&
         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)
         ) {
        return 1;
      }
    }
    bVar18 = iVar6 == -1;
    iVar7 = iVar6;
    if (bVar18) goto LAB_000bb83f;
  }
  else {
    bVar18 = iVar7 == -1;
    if (bVar18) goto LAB_000bb950;
  }
  bVar16 = iVar7 != -1;
  iVar13 = 7;
  pbVar2 = *(byte **)(param_2 + 0x1c);
  pbVar14 = (byte *)".ctors.";
  pbVar15 = pbVar2;
  do {
    if (iVar13 == 0) break;
    iVar13 = iVar13 + -1;
    bVar16 = *pbVar14 < *pbVar15;
    bVar18 = *pbVar14 == *pbVar15;
    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
  } while (bVar18);
  bVar17 = false;
  bVar18 = (!bVar16 && !bVar18) == bVar16;
  if (bVar18) {
LAB_000bb990:
    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);
    if (*local_20[0] == '\0') {
      bVar18 = 0xffff < uVar8;
      uVar8 = 0xffff - uVar8;
      bVar16 = uVar8 == 0;
    }
    else {
LAB_000bb7a8:
      bVar18 = false;
      uVar8 = 0;
      bVar16 = true;
    }
  }
  else {
    iVar13 = 7;
    pbVar14 = (byte *)".dtors.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar17 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    bVar16 = false;
    bVar18 = (!bVar17 && !bVar18) == bVar17;
    if (bVar18) goto LAB_000bb990;
    iVar13 = 0xc;
    pbVar14 = (byte *)".init_array.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar16 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    bVar17 = false;
    bVar18 = (!bVar16 && !bVar18) == bVar16;
    if (!bVar18) {
      iVar13 = 0xc;
      pbVar14 = (byte *)".fini_array.";
      pbVar15 = pbVar2;
      do {
        if (iVar13 == 0) break;
        iVar13 = iVar13 + -1;
        bVar17 = *pbVar14 < *pbVar15;
        bVar18 = *pbVar14 == *pbVar15;
        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
      } while (bVar18);
      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;
      goto LAB_000bb7a8;
    }
LAB_000bb782:
    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);
    bVar18 = false;
    bVar16 = *local_20[0] == '\0';
    if (!bVar16) goto LAB_000bb7a8;
  }
  iVar13 = 7;
  pbVar2 = *(byte **)(param_3 + 0x1c);
  pbVar14 = (byte *)".ctors.";
  pbVar15 = pbVar2;
  do {
    if (iVar13 == 0) break;
    iVar13 = iVar13 + -1;
    bVar18 = *pbVar14 < *pbVar15;
    bVar16 = *pbVar14 == *pbVar15;
    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
  } while (bVar16);
  bVar17 = false;
  bVar18 = (!bVar18 && !bVar16) == bVar18;
  if (bVar18) {
LAB_000bb9c0:
    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);
    if (*local_20[0] == '\0') {
      uVar9 = 0xffff - uVar12;
LAB_000bb82f:
      if (uVar8 < uVar9) {
        return 1;
      }
    }
    else {
LAB_000bb9e7:
      uVar9 = 0;
    }
  }
  else {
    iVar13 = 7;
    pbVar14 = (byte *)".dtors.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar17 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    bVar16 = false;
    bVar18 = (!bVar17 && !bVar18) == bVar17;
    if (bVar18) goto LAB_000bb9c0;
    iVar13 = 0xc;
    pbVar14 = (byte *)".init_array.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar16 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    bVar17 = false;
    bVar18 = (!bVar16 && !bVar18) == bVar16;
    if (bVar18) {
LAB_000bb804:
      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);
      if (*local_20[0] != '\0') goto LAB_000bb9e7;
      goto LAB_000bb82f;
    }
    iVar13 = 0xc;
    pbVar14 = (byte *)".fini_array.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar17 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;
    uVar9 = 0;
  }
  if (uVar9 < uVar8) {
    return local_38;
  }
LAB_000bb83f:
  uVar9 = *(uint *)(param_2 + 0x14);
  uVar3 = *(uint *)(param_3 + 0x18);
  if (uVar3 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);
  }
  uVar4 = *(uint *)(param_3 + 0x14);
  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);
  if (uVar9 != 0 && uVar4 != 0) {
    if (uVar9 < uVar4) {
      return local_38;
    }
    if (uVar9 >= uVar4 && uVar9 != uVar4) {
      return 0;
    }
  }
  uVar9 = *(uint *)(param_2 + 0x20);
  uVar4 = *(uint *)(param_3 + 0x20);
  uVar10 = uVar4;
  if (uVar9 <= uVar4) {
    uVar10 = uVar9;
  }
  if (((uVar10 == 0) ||
      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))
     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {
    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {
      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);
    }
                    /* WARNING: Subroutine does not return */
    FUN_000b9930();
  }
  return uVar10 >> 0x1f;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x246957
SUB ESP,0x30
MOV EAX,dword ptr [ESP + 0x48]
PUSH 0x1
PUSH 0x2e
LEA EDI,[EAX + 0x1c]
PUSH EDI
CALL 0x0018a600
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x58]
ADD ESP,0xc
PUSH 0x1
LEA ESI,[EAX + 0x1c]
PUSH 0x2e
PUSH ESI
CALL 0x0018a600
ADD ESP,0x10
CMP EAX,-0x1
MOV EDX,EAX
SETZ CL
CMP EBP,-0x1
SETNZ AL
AND CL,AL
MOV byte ptr [ESP + 0x4],CL
JNZ 0x000bb979
CMP EBP,-0x1
SETZ CL
CMP EDX,-0x1
SETNZ AL
TEST CL,AL
JNZ 0x000bb8c3
CMP EBP,-0x1
JZ 0x000bb8d0
LEA ECX,[EBX + 0xfff20ff2]
CMP EDX,-0x1
JZ 0x000bb950
MOV EAX,dword ptr [ESP + 0x44]
LEA EBP,[EBX + 0xfff21018]
MOV ECX,0x7
MOV ESI,EBP
MOV EAX,dword ptr [EAX + 0x1c]
MOV EDI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000bb990
MOV ECX,0x7
LEA ESI,[EBX + 0xfff21020]
MOV EDI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000bb990
MOV ECX,0xc
LEA ESI,[EBX + 0xfff21d68]
MOV EDI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JNZ 0x000bba58
SUB ESP,0x4
ADD EAX,0xc
PUSH 0xa
LEA EDX,[ESP + 0x24]
PUSH EDX
PUSH EAX
CALL 0x000265e0
ADD ESP,0x10
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x1c]
CMP byte ptr [EAX],0x0
JZ 0x000bb7aa
LEA ESI,[ESI]
NOP
XOR EDX,EDX
MOV EAX,dword ptr [ESP + 0x48]
MOV ECX,0x7
MOV ESI,EBP
MOV EAX,dword ptr [EAX + 0x1c]
MOV EDI,EAX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x000bb9c0
MOV ECX,0x7
LEA ESI,[EBX + 0xfff21020]
MOV EDI,EAX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x000bb9c0
MOV ECX,0xc
LEA ESI,[EBX + 0xfff21d68]
MOV EDI,EAX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x000bba30
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0x4
ADD EAX,0xc
PUSH 0xa
LEA ECX,[ESP + 0x24]
PUSH ECX
PUSH EAX
CALL 0x000265e0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x8]
CMP byte ptr [ECX],0x0
JNZ 0x000bb9e7
CMP EAX,EDX
JA 0x000bb979
CMP EDX,EAX
JA 0x000bb8c3
MOV EAX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [EAX + 0x14]
MOV EAX,dword ptr [ESP + 0x48]
MOV ESI,dword ptr [EAX + 0x18]
CMP ESI,-0x1
JZ 0x000bbb1a
MOV EAX,dword ptr [ESP + 0x48]
TEST ECX,ECX
MOV EBP,dword ptr [EAX + 0x14]
SETNZ AL
MOV EDI,EAX
TEST EBP,EBP
MOV EDX,EDI
SETNZ AL
AND DL,AL
MOV byte ptr [ESP + 0x4],DL
JZ 0x000bb87d
CMP ECX,EBP
JC 0x000bb8c3
JA 0x000bbb10
MOV EAX,dword ptr [ESP + 0x44]
MOV EBP,dword ptr [EAX + 0x20]
MOV EAX,dword ptr [ESP + 0x48]
MOV EDI,dword ptr [EAX + 0x20]
CMP EBP,EDI
MOV EAX,EDI
CMOVBE EAX,EBP
TEST EAX,EAX
JZ 0x000bba00
SUB ESP,0x4
PUSH EAX
MOV EAX,dword ptr [ESP + 0x50]
PUSH dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [ESP + 0x50]
PUSH dword ptr [EAX + 0x1c]
CALL 0x00026130
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000bba00
SHR EAX,0x1f
MOV dword ptr [ESP + 0x4],EAX
MOVZX EAX,byte ptr [ESP + 0x4]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0xc],EDX
LEA ECX,[EBX + 0xfff20ff2]
SUB ESP,0x8
PUSH ECX
MOV dword ptr [ESP + 0x14],ECX
PUSH EDI
CALL 0x0018ad60
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JNZ 0x000bbab8
MOV EAX,dword ptr [ESP + 0x44]
MOV EDI,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [EAX + 0x20]
CMP EAX,dword ptr [EDI + 0x20]
JNZ 0x000bb8c3
TEST EAX,EAX
JZ 0x000bb93d
MOV dword ptr [ESP + 0xc],ECX
SUB ESP,0x4
MOV dword ptr [ESP + 0xc],EDX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x50]
PUSH dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [ESP + 0x50]
PUSH dword ptr [EAX + 0x1c]
CALL 0x00026130
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JNZ 0x000bb8c3
CMP EDX,-0x1
JNZ 0x000bb83f
LEA ESI,[ESI]
LEA ESI,[ESI]
SUB ESP,0x8
PUSH ECX
PUSH ESI
CALL 0x0018ad60
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000bbaf0
MOV EAX,dword ptr [ESP + 0x48]
MOV ESI,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX + 0x20]
CMP EAX,dword ptr [ESI + 0x20]
JZ 0x000bba80
MOV byte ptr [ESP + 0x4],0x1
MOVZX EAX,byte ptr [ESP + 0x4]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
ADD EAX,0x7
PUSH 0xa
LEA EDX,[ESP + 0x24]
PUSH EDX
PUSH EAX
CALL 0x000265e0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x1c]
CMP byte ptr [EDX],0x0
JNZ 0x000bb7a8
MOV EDX,0xffff
SUB EDX,EAX
JMP 0x000bb7aa
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0x4
ADD EAX,0x7
PUSH 0xa
LEA ECX,[ESP + 0x24]
PUSH ECX
PUSH EAX
CALL 0x000265e0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x8]
CMP byte ptr [ECX],0x0
JZ 0x000bb9f0
XOR EAX,EAX
JMP 0x000bb837
MOV ECX,0xffff
SUB ECX,EAX
MOV EAX,ECX
JMP 0x000bb82f
MOV EAX,EBP
SUB EAX,EDI
JNZ 0x000bb8bc
MOV EAX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX + 0x18]
CMP EAX,-0x1
JZ 0x000bbb33
CMP EAX,ESI
SETC byte ptr [ESP + 0x4]
MOVZX EAX,byte ptr [ESP + 0x4]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,0xc
LEA ESI,[EBX + 0xfff21d75]
MOV EDI,EAX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x000bb804
XOR EAX,EAX
JMP 0x000bb837
MOV ECX,0xc
LEA ESI,[EBX + 0xfff21d75]
MOV EDI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000bb782
JMP 0x000bb7a8
TEST EAX,EAX
JZ 0x000bbaa6
SUB ESP,0x4
PUSH EAX
MOV EAX,dword ptr [ESP + 0x4c]
PUSH dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [ESP + 0x54]
PUSH dword ptr [EAX + 0x1c]
CALL 0x00026130
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000bb979
CMP EBP,-0x1
JZ 0x000bb83f
JMP 0x000bb722
MOV dword ptr [ESP + 0xc],ECX
LEA EAX,[EBX + 0xfff21011]
SUB ESP,0x8
MOV dword ptr [ESP + 0x10],EDX
PUSH EAX
PUSH EDI
CALL 0x0018ad60
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x000bb8fb
JMP 0x000bb93d
SUB ESP,0x8
LEA EAX,[EBX + 0xfff21011]
PUSH EAX
PUSH ESI
CALL 0x0018ad60
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000bb965
JMP 0x000bbaa6
MOV byte ptr [ESP + 0x4],0x0
JMP 0x000bb8c3
PUSH EAX
LEA EAX,[EBX + 0xfff29700]
PUSH EAX
LEA EAX,[EBX + 0xfff2864b]
PUSH 0xcf5
PUSH EAX
CALL 0x0005f0b0
CALL 0x000b9930
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  int iVar6;\n  int iVar7;\n  ulong uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  ulong uVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  uint local_38;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar19 = 0;\n  uStack_14 = 0xbb6a9;\n  iVar13 = param_2 + 0x1c;\n  iVar6 = FUN_0018a600(iVar13,0x2e,1);\n  iVar1 = param_3 + 0x1c;\n  iVar7 = FUN_0018a600(iVar1,0x2e,1);\n  bVar18 = iVar7 == -1 && iVar6 != -1;\n  local_38 = (uint)bVar18;\n  if (bVar18) {\n    return 1;\n  }\n  if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }\n  if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }\n  bVar16 = iVar7 != -1;\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_2 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);\n  bVar17 = false;\n  bVar18 = (!bVar16 && !bVar18) == bVar16;\n  if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_3 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);\n  bVar17 = false;\n  bVar18 = (!bVar18 && !bVar16) == bVar18;\n  if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }\n  if (uVar9 < uVar8) {\n    return local_38;\n  }\nLAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);\n  uVar3 = *(uint *)(param_3 + 0x18);\n  if (uVar3 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }\n  uVar4 = *(uint *)(param_3 + 0x14);\n  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);\n  if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }\n  uVar9 = *(uint *)(param_2 + 0x20);\n  uVar4 = *(uint *)(param_3 + 0x20);\n  uVar10 = uVar4;\n  if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }\n  if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000b9930();\n  }\n  return uVar10 >> 0x1f;\n}\n\n" comment (function_definition "uint FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  int iVar6;\n  int iVar7;\n  ulong uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  ulong uVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  uint local_38;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar19 = 0;\n  uStack_14 = 0xbb6a9;\n  iVar13 = param_2 + 0x1c;\n  iVar6 = FUN_0018a600(iVar13,0x2e,1);\n  iVar1 = param_3 + 0x1c;\n  iVar7 = FUN_0018a600(iVar1,0x2e,1);\n  bVar18 = iVar7 == -1 && iVar6 != -1;\n  local_38 = (uint)bVar18;\n  if (bVar18) {\n    return 1;\n  }\n  if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }\n  if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }\n  bVar16 = iVar7 != -1;\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_2 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);\n  bVar17 = false;\n  bVar18 = (!bVar16 && !bVar18) == bVar16;\n  if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_3 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);\n  bVar17 = false;\n  bVar18 = (!bVar18 && !bVar16) == bVar18;\n  if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }\n  if (uVar9 < uVar8) {\n    return local_38;\n  }\nLAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);\n  uVar3 = *(uint *)(param_3 + 0x18);\n  if (uVar3 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }\n  uVar4 = *(uint *)(param_3 + 0x14);\n  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);\n  if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }\n  uVar9 = *(uint *)(param_2 + 0x20);\n  uVar4 = *(uint *)(param_3 + 0x20);\n  uVar10 = uVar4;\n  if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }\n  if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000b9930();\n  }\n  return uVar10 >> 0x1f;\n}" type_identifier (function_declarator "FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  byte *pbVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  int iVar6;\n  int iVar7;\n  ulong uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  ulong uVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  uint local_38;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar19 = 0;\n  uStack_14 = 0xbb6a9;\n  iVar13 = param_2 + 0x1c;\n  iVar6 = FUN_0018a600(iVar13,0x2e,1);\n  iVar1 = param_3 + 0x1c;\n  iVar7 = FUN_0018a600(iVar1,0x2e,1);\n  bVar18 = iVar7 == -1 && iVar6 != -1;\n  local_38 = (uint)bVar18;\n  if (bVar18) {\n    return 1;\n  }\n  if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }\n  if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }\n  bVar16 = iVar7 != -1;\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_2 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);\n  bVar17 = false;\n  bVar18 = (!bVar16 && !bVar18) == bVar16;\n  if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_3 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);\n  bVar17 = false;\n  bVar18 = (!bVar18 && !bVar16) == bVar18;\n  if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }\n  if (uVar9 < uVar8) {\n    return local_38;\n  }\nLAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);\n  uVar3 = *(uint *)(param_3 + 0x18);\n  if (uVar3 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }\n  uVar4 = *(uint *)(param_3 + 0x14);\n  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);\n  if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }\n  uVar9 = *(uint *)(param_2 + 0x20);\n  uVar4 = *(uint *)(param_3 + 0x20);\n  uVar10 = uVar4;\n  if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }\n  if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000b9930();\n  }\n  return uVar10 >> 0x1f;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "char *local_20 [3];" primitive_type (pointer_declarator "*local_20 [3]" * (array_declarator "local_20 [3]" identifier [ number_literal ])) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0xbb6a9;" (assignment_expression "uStack_14 = 0xbb6a9" identifier = number_literal) ;) (expression_statement "iVar13 = param_2 + 0x1c;" (assignment_expression "iVar13 = param_2 + 0x1c" identifier = (binary_expression "param_2 + 0x1c" identifier + number_literal)) ;) (expression_statement "iVar6 = FUN_0018a600(iVar13,0x2e,1);" (assignment_expression "iVar6 = FUN_0018a600(iVar13,0x2e,1)" identifier = (call_expression "FUN_0018a600(iVar13,0x2e,1)" identifier (argument_list "(iVar13,0x2e,1)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar1 = param_3 + 0x1c;" (assignment_expression "iVar1 = param_3 + 0x1c" identifier = (binary_expression "param_3 + 0x1c" identifier + number_literal)) ;) (expression_statement "iVar7 = FUN_0018a600(iVar1,0x2e,1);" (assignment_expression "iVar7 = FUN_0018a600(iVar1,0x2e,1)" identifier = (call_expression "FUN_0018a600(iVar1,0x2e,1)" identifier (argument_list "(iVar1,0x2e,1)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "bVar18 = iVar7 == -1 && iVar6 != -1;" (assignment_expression "bVar18 = iVar7 == -1 && iVar6 != -1" identifier = (binary_expression "iVar7 == -1 && iVar6 != -1" (binary_expression "iVar7 == -1" identifier == number_literal) && (binary_expression "iVar6 != -1" identifier != number_literal))) ;) (expression_statement "local_38 = (uint)bVar18;" (assignment_expression "local_38 = (uint)bVar18" identifier = (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar18) {\n    return 1;\n  }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }" if (parenthesized_expression "(iVar6 == -1 && iVar7 != -1)" ( (binary_expression "iVar6 == -1 && iVar7 != -1" (binary_expression "iVar6 == -1" identifier == number_literal) && (binary_expression "iVar7 != -1" identifier != number_literal)) )) (compound_statement "{\n    return local_38;\n  }" { (return_statement "return local_38;" return identifier ;) })) (if_statement "if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }" { (expression_statement "iVar11 = FUN_0018ad60(iVar13,".ctors");" (assignment_expression "iVar11 = FUN_0018ad60(iVar13,".ctors")" identifier = (call_expression "FUN_0018ad60(iVar13,".ctors")" identifier (argument_list "(iVar13,".ctors")" ( identifier , (string_literal "".ctors"" " string_content ") )))) ;) (if_statement "if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }" if (parenthesized_expression "((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0))" ( (binary_expression "(iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)" (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)" ( (comma_expression "iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0" (assignment_expression "iVar13 = FUN_0018ad60(iVar13,".dtors")" identifier = (call_expression "FUN_0018ad60(iVar13,".dtors")" identifier (argument_list "(iVar13,".dtors")" ( identifier , (string_literal "".dtors"" " string_content ") )))) , (binary_expression "iVar13 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }" { (expression_statement "sVar5 = *(size_t *)(param_2 + 0x20);" (assignment_expression "sVar5 = *(size_t *)(param_2 + 0x20)" identifier = (pointer_expression "*(size_t *)(param_2 + 0x20)" * (cast_expression "(size_t *)(param_2 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }" if (parenthesized_expression "(sVar5 != *(size_t *)(param_3 + 0x20))" ( (binary_expression "sVar5 != *(size_t *)(param_3 + 0x20)" identifier != (pointer_expression "*(size_t *)(param_3 + 0x20)" * (cast_expression "(size_t *)(param_3 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n        return local_38;\n      }" { (return_statement "return local_38;" return identifier ;) })) (if_statement "if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }" if (parenthesized_expression "((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         )" ( (binary_expression "(sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)" (parenthesized_expression "(sVar5 != 0)" ( (binary_expression "sVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)" ( (comma_expression "iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0" (assignment_expression "iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" identifier = (call_expression "memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" identifier (argument_list "(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" ( (pointer_expression "*(void **)(param_2 + 0x1c)" * (cast_expression "(void **)(param_2 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(void **)(param_3 + 0x1c)" * (cast_expression "(void **)(param_3 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return local_38;\n      }" { (return_statement "return local_38;" return identifier ;) })) })) (if_statement "if (iVar7 != -1) goto LAB_000bb83f;" if (parenthesized_expression "(iVar7 != -1)" ( (binary_expression "iVar7 != -1" identifier != number_literal) )) (goto_statement "goto LAB_000bb83f;" goto statement_identifier ;)) (labeled_statement "LAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");" statement_identifier : (expression_statement "iVar13 = FUN_0018ad60(iVar1,".ctors");" (assignment_expression "iVar13 = FUN_0018ad60(iVar1,".ctors")" identifier = (call_expression "FUN_0018ad60(iVar1,".ctors")" identifier (argument_list "(iVar1,".ctors")" ( identifier , (string_literal "".ctors"" " string_content ") )))) ;)) (if_statement "if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }" if (parenthesized_expression "((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0))" ( (binary_expression "(iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)" ( (comma_expression "iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0" (assignment_expression "iVar13 = FUN_0018ad60(iVar1,".dtors")" identifier = (call_expression "FUN_0018ad60(iVar1,".dtors")" identifier (argument_list "(iVar1,".dtors")" ( identifier , (string_literal "".dtors"" " string_content ") )))) , (binary_expression "iVar13 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }" { (expression_statement "sVar5 = *(size_t *)(param_3 + 0x20);" (assignment_expression "sVar5 = *(size_t *)(param_3 + 0x20)" identifier = (pointer_expression "*(size_t *)(param_3 + 0x20)" * (cast_expression "(size_t *)(param_3 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }" if (parenthesized_expression "(sVar5 != *(size_t *)(param_2 + 0x20))" ( (binary_expression "sVar5 != *(size_t *)(param_2 + 0x20)" identifier != (pointer_expression "*(size_t *)(param_2 + 0x20)" * (cast_expression "(size_t *)(param_2 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }" if (parenthesized_expression "((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         )" ( (binary_expression "(sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)" (parenthesized_expression "(sVar5 != 0)" ( (binary_expression "sVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)" ( (comma_expression "iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0" (assignment_expression "iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" identifier = (call_expression "memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" identifier (argument_list "(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" ( (pointer_expression "*(void **)(param_3 + 0x1c)" * (cast_expression "(void **)(param_3 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(void **)(param_2 + 0x1c)" * (cast_expression "(void **)(param_2 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "bVar18 = iVar6 == -1;" (assignment_expression "bVar18 = iVar6 == -1" identifier = (binary_expression "iVar6 == -1" identifier == number_literal)) ;) (expression_statement "iVar7 = iVar6;" (assignment_expression "iVar7 = iVar6" identifier = identifier) ;) (if_statement "if (bVar18) goto LAB_000bb83f;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000bb83f;" goto statement_identifier ;)) }) (else_clause "else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" else (compound_statement "{\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" { (expression_statement "bVar18 = iVar7 == -1;" (assignment_expression "bVar18 = iVar7 == -1" identifier = (binary_expression "iVar7 == -1" identifier == number_literal)) ;) (if_statement "if (bVar18) goto LAB_000bb950;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000bb950;" goto statement_identifier ;)) }))) (expression_statement "bVar16 = iVar7 != -1;" (assignment_expression "bVar16 = iVar7 != -1" identifier = (binary_expression "iVar7 != -1" identifier != number_literal)) ;) (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) (expression_statement "pbVar2 = *(byte **)(param_2 + 0x1c);" (assignment_expression "pbVar2 = *(byte **)(param_2 + 0x1c)" identifier = (pointer_expression "*(byte **)(param_2 + 0x1c)" * (cast_expression "(byte **)(param_2 + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "pbVar14 = (byte *)".ctors.";" (assignment_expression "pbVar14 = (byte *)".ctors."" identifier = (cast_expression "(byte *)".ctors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);" do (compound_statement "{\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }" { (labeled_statement "LAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);" statement_identifier : (expression_statement "uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);" (assignment_expression "uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10)" identifier = (call_expression "strtoul((char *)(pbVar2 + 7),local_20,10)" identifier (argument_list "((char *)(pbVar2 + 7),local_20,10)" ( (cast_expression "(char *)(pbVar2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 7)" ( (binary_expression "pbVar2 + 7" identifier + number_literal) ))) , identifier , number_literal )))) ;)) (if_statement "if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" if (parenthesized_expression "(*local_20[0] == '\0')" ( (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }" { (expression_statement "bVar18 = 0xffff < uVar8;" (assignment_expression "bVar18 = 0xffff < uVar8" identifier = (binary_expression "0xffff < uVar8" number_literal < identifier)) ;) (expression_statement "uVar8 = 0xffff - uVar8;" (assignment_expression "uVar8 = 0xffff - uVar8" identifier = (binary_expression "0xffff - uVar8" number_literal - identifier)) ;) (expression_statement "bVar16 = uVar8 == 0;" (assignment_expression "bVar16 = uVar8 == 0" identifier = (binary_expression "uVar8 == 0" identifier == number_literal)) ;) }) (else_clause "else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" else (compound_statement "{\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" { (labeled_statement "LAB_000bb7a8:\n      bVar18 = false;" statement_identifier : (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "bVar16 = true;" (assignment_expression "bVar16 = true" identifier = true) ;) }))) }) (else_clause "else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" else (compound_statement "{\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" { (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".dtors.";" (assignment_expression "pbVar14 = (byte *)".dtors."" identifier = (cast_expression "(byte *)".dtors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar17 && !bVar18) == bVar17;" (assignment_expression "bVar18 = (!bVar17 && !bVar18) == bVar17" identifier = (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" ( (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) goto LAB_000bb990;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000bb990;" goto statement_identifier ;)) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".init_array.";" (assignment_expression "pbVar14 = (byte *)".init_array."" identifier = (cast_expression "(byte *)".init_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (compound_statement "{\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }" { (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".fini_array.";" (assignment_expression "pbVar14 = (byte *)".fini_array."" identifier = (cast_expression "(byte *)".fini_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (if_statement "if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;" if (parenthesized_expression "((!bVar17 && !bVar18) == bVar17)" ( (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" ( (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000bb782;" goto statement_identifier ;)) (goto_statement "goto LAB_000bb7a8;" goto statement_identifier ;) })) (labeled_statement "LAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" statement_identifier : (expression_statement "uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" (assignment_expression "uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10)" identifier = (call_expression "strtoul((char *)(pbVar2 + 0xc),local_20,10)" identifier (argument_list "((char *)(pbVar2 + 0xc),local_20,10)" ( (cast_expression "(char *)(pbVar2 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 0xc)" ( (binary_expression "pbVar2 + 0xc" identifier + number_literal) ))) , identifier , number_literal )))) ;)) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar16 = *local_20[0] == '\0';" (assignment_expression "bVar16 = *local_20[0] == '\0'" identifier = (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar16) goto LAB_000bb7a8;" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (goto_statement "goto LAB_000bb7a8;" goto statement_identifier ;)) }))) (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) (expression_statement "pbVar2 = *(byte **)(param_3 + 0x1c);" (assignment_expression "pbVar2 = *(byte **)(param_3 + 0x1c)" identifier = (pointer_expression "*(byte **)(param_3 + 0x1c)" * (cast_expression "(byte **)(param_3 + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "pbVar14 = (byte *)".ctors.";" (assignment_expression "pbVar14 = (byte *)".ctors."" identifier = (cast_expression "(byte *)".ctors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);" do (compound_statement "{\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar14 < *pbVar15;" (assignment_expression "bVar18 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar16 = *pbVar14 == *pbVar15;" (assignment_expression "bVar16 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar18 && !bVar16) == bVar18;" (assignment_expression "bVar18 = (!bVar18 && !bVar16) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar16) == bVar18" (parenthesized_expression "(!bVar18 && !bVar16)" ( (binary_expression "!bVar18 && !bVar16" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }" { (labeled_statement "LAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);" statement_identifier : (expression_statement "uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);" (assignment_expression "uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10)" identifier = (call_expression "strtoul((char *)(pbVar2 + 7),local_20,10)" identifier (argument_list "((char *)(pbVar2 + 7),local_20,10)" ( (cast_expression "(char *)(pbVar2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 7)" ( (binary_expression "pbVar2 + 7" identifier + number_literal) ))) , identifier , number_literal )))) ;)) (if_statement "if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" if (parenthesized_expression "(*local_20[0] == '\0')" ( (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }" { (expression_statement "uVar9 = 0xffff - uVar12;" (assignment_expression "uVar9 = 0xffff - uVar12" identifier = (binary_expression "0xffff - uVar12" number_literal - identifier)) ;) (labeled_statement "LAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }" statement_identifier : (if_statement "if (uVar8 < uVar9) {\n        return 1;\n      }" if (parenthesized_expression "(uVar8 < uVar9)" ( (binary_expression "uVar8 < uVar9" identifier < identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) }))) }) (else_clause "else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" else (compound_statement "{\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" { (labeled_statement "LAB_000bb9e7:\n      uVar9 = 0;" statement_identifier : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;)) }))) }) (else_clause "else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" else (compound_statement "{\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" { (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".dtors.";" (assignment_expression "pbVar14 = (byte *)".dtors."" identifier = (cast_expression "(byte *)".dtors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar17 && !bVar18) == bVar17;" (assignment_expression "bVar18 = (!bVar17 && !bVar18) == bVar17" identifier = (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" ( (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) goto LAB_000bb9c0;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000bb9c0;" goto statement_identifier ;)) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".init_array.";" (assignment_expression "pbVar14 = (byte *)".init_array."" identifier = (cast_expression "(byte *)".init_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }" { (labeled_statement "LAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" statement_identifier : (expression_statement "uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" (assignment_expression "uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10)" identifier = (call_expression "strtoul((char *)(pbVar2 + 0xc),local_20,10)" identifier (argument_list "((char *)(pbVar2 + 0xc),local_20,10)" ( (cast_expression "(char *)(pbVar2 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 0xc)" ( (binary_expression "pbVar2 + 0xc" identifier + number_literal) ))) , identifier , number_literal )))) ;)) (if_statement "if (*local_20[0] != '\0') goto LAB_000bb9e7;" if (parenthesized_expression "(*local_20[0] != '\0')" ( (binary_expression "*local_20[0] != '\0'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000bb9e7;" goto statement_identifier ;)) (goto_statement "goto LAB_000bb82f;" goto statement_identifier ;) })) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".fini_array.";" (assignment_expression "pbVar14 = (byte *)".fini_array."" identifier = (cast_expression "(byte *)".fini_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (if_statement "if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;" if (parenthesized_expression "((!bVar17 && !bVar18) == bVar17)" ( (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" ( (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000bb804;" goto statement_identifier ;)) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }))) (if_statement "if (uVar9 < uVar8) {\n    return local_38;\n  }" if (parenthesized_expression "(uVar9 < uVar8)" ( (binary_expression "uVar9 < uVar8" identifier < identifier) )) (compound_statement "{\n    return local_38;\n  }" { (return_statement "return local_38;" return identifier ;) })) (labeled_statement "LAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);" statement_identifier : (expression_statement "uVar9 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar9 = *(uint *)(param_2 + 0x14)" identifier = (pointer_expression "*(uint *)(param_2 + 0x14)" * (cast_expression "(uint *)(param_2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;)) (expression_statement "uVar3 = *(uint *)(param_3 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_3 + 0x18)" identifier = (pointer_expression "*(uint *)(param_3 + 0x18)" * (cast_expression "(uint *)(param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }" { comment (expression_statement "FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);" (call_expression "FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3)" identifier (argument_list "("../../gold/output.cc",0xcf5,"input_section",param_3)" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""input_section"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar4 = *(uint *)(param_3 + 0x14);" (assignment_expression "uVar4 = *(uint *)(param_3 + 0x14)" identifier = (pointer_expression "*(uint *)(param_3 + 0x14)" * (cast_expression "(uint *)(param_3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_38 = (uint)(uVar9 != 0 && uVar4 != 0);" (assignment_expression "local_38 = (uint)(uVar9 != 0 && uVar4 != 0)" identifier = (call_expression "(uint)(uVar9 != 0 && uVar4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 != 0 && uVar4 != 0)" ( (binary_expression "uVar9 != 0 && uVar4 != 0" (binary_expression "uVar9 != 0" identifier != number_literal) && (binary_expression "uVar4 != 0" identifier != number_literal)) )))) ;) (if_statement "if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(uVar9 != 0 && uVar4 != 0)" ( (binary_expression "uVar9 != 0 && uVar4 != 0" (binary_expression "uVar9 != 0" identifier != number_literal) && (binary_expression "uVar4 != 0" identifier != number_literal)) )) (compound_statement "{\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }" { (if_statement "if (uVar9 < uVar4) {\n      return local_38;\n    }" if (parenthesized_expression "(uVar9 < uVar4)" ( (binary_expression "uVar9 < uVar4" identifier < identifier) )) (compound_statement "{\n      return local_38;\n    }" { (return_statement "return local_38;" return identifier ;) })) (if_statement "if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }" if (parenthesized_expression "(uVar9 >= uVar4 && uVar9 != uVar4)" ( (binary_expression "uVar9 >= uVar4 && uVar9 != uVar4" (binary_expression "uVar9 >= uVar4" identifier >= identifier) && (binary_expression "uVar9 != uVar4" identifier != identifier)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "uVar9 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar9 = *(uint *)(param_2 + 0x20)" identifier = (pointer_expression "*(uint *)(param_2 + 0x20)" * (cast_expression "(uint *)(param_2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_3 + 0x20);" (assignment_expression "uVar4 = *(uint *)(param_3 + 0x20)" identifier = (pointer_expression "*(uint *)(param_3 + 0x20)" * (cast_expression "(uint *)(param_3 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" identifier = identifier) ;) (if_statement "if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }" if (parenthesized_expression "(uVar9 <= uVar4)" ( (binary_expression "uVar9 <= uVar4" identifier <= identifier) )) (compound_statement "{\n    uVar10 = uVar9;\n  }" { (expression_statement "uVar10 = uVar9;" (assignment_expression "uVar10 = uVar9" identifier = identifier) ;) })) (if_statement "if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000b9930();\n  }" if (parenthesized_expression "(((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0))" ( (binary_expression "((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)" (parenthesized_expression "((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))" ( (binary_expression "(uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0)" (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0)" ( (comma_expression "uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0" (assignment_expression "uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" identifier = (call_expression "memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" identifier (argument_list "(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" ( (pointer_expression "*(void **)(param_2 + 0x1c)" * (cast_expression "(void **)(param_2 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(void **)(param_3 + 0x1c)" * (cast_expression "(void **)(param_3 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) , identifier )))) , (binary_expression "uVar10 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(uVar10 = uVar9 - uVar4, uVar10 == 0)" ( (comma_expression "uVar10 = uVar9 - uVar4, uVar10 == 0" (assignment_expression "uVar10 = uVar9 - uVar4" identifier = (binary_expression "uVar9 - uVar4" identifier - identifier)) , (binary_expression "uVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000b9930();\n  }" { (if_statement "if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }" if (parenthesized_expression "(*(uint *)(param_2 + 0x18) != 0xffffffff)" ( (binary_expression "*(uint *)(param_2 + 0x18) != 0xffffffff" (pointer_expression "*(uint *)(param_2 + 0x18)" * (cast_expression "(uint *)(param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }" { (return_statement "return (uint)(*(uint *)(param_2 + 0x18) < uVar3);" return (call_expression "(uint)(*(uint *)(param_2 + 0x18) < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 0x18) < uVar3)" ( (binary_expression "*(uint *)(param_2 + 0x18) < uVar3" (pointer_expression "*(uint *)(param_2 + 0x18)" * (cast_expression "(uint *)(param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) < identifier) ))) ;) })) comment (expression_statement "FUN_000b9930();" (call_expression "FUN_000b9930()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return uVar10 >> 0x1f;" return (binary_expression "uVar10 >> 0x1f" identifier >> number_literal) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: bool operator()(Input_section_sort_init_fini_compare * this,\n   Input_section_sort_entry * s1, Input_section_sort_entry * s2) */\n\nbool __thiscall\ngold::Output_section::Input_section_sort_init_fini_compare::operator()\n          (Input_section_sort_init_fini_compare *this,Input_section_sort_entry *s1,\n          Input_section_sort_entry *s2)\n\n{\n  string *this_00;\n  string *this_01;\n  byte *pbVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  char *__s;\n  ulong uVar9;\n  int iVar10;\n  char *pcVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  Input_section_sort_entry *in_stack_ffffffc4;\n  undefined4 in_stack_ffffffc8;\n  char *in_stack_ffffffcc;\n  char *end;\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0xbb6a9;\n  this_00 = &s1->section_name_;\n  pcVar6 = (char *)std::string::find((string *)this_00,'.',1);\n  this_01 = &s2->section_name_;\n  pcVar7 = (char *)std::string::find((string *)this_01,'.',1);\n  bVar16 = pcVar7 == (char *)0xffffffff && pcVar6 != (char *)0xffffffff;\n  __s = (char *)CONCAT31((int3)((uint)in_stack_ffffffc8 >> 8),bVar16);\n  if (bVar16) {\n    return true;\n  }\n  if (pcVar6 == (char *)0xffffffff && pcVar7 != (char *)0xffffffff) goto LAB_000bb8c3;\n  if (pcVar6 == (char *)0xffffffff) {\n    pcVar11 = ".ctors";\n    iVar10 = std::string::compare((string *)this_00,".ctors");\n    in_stack_ffffffcc = pcVar11;\n    if (((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)) &&\n       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))))) goto LAB_000bb8c3;\n    if (pcVar7 == (char *)0xffffffff) goto LAB_000bb950;\n  }\n  else {\n    pcVar11 = ".ctors";\n    bVar16 = pcVar7 == (char *)0xffffffff;\n    if (bVar16) {\nLAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);\n      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }\n      bVar16 = pcVar6 == (char *)0xffffffff;\n      pcVar7 = pcVar6;\n      if (bVar16) goto LAB_000bb83f;\n    }\n    bVar14 = pcVar7 != (char *)0xffffffff;\n    iVar10 = 7;\n    pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar14 = *pbVar12 < *pbVar13;\n      bVar16 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    bVar15 = false;\n    bVar16 = (!bVar14 && !bVar16) == bVar14;\n    if (bVar16) {\nLAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }\n    iVar10 = 7;\n    pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar14 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar14);\n    bVar15 = false;\n    bVar16 = (!bVar16 && !bVar14) == bVar16;\n    if (bVar16) {\nLAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }\n    if (pcVar6 < pcVar7) goto LAB_000bb8c3;\n  }\nLAB_000bb83f:\n  uVar2 = (s1->input_section_).section_order_index_;\n  uVar3 = s2->index_;\n  if (uVar3 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n  }\n  uVar4 = (s2->input_section_).section_order_index_;\n  __s = (char *)CONCAT31((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0);\n  if (uVar2 != 0 && uVar4 != 0) {\n    if (uVar2 < uVar4) goto LAB_000bb8c3;\n    if (uVar2 >= uVar4 && uVar2 != uVar4) {\n      __s = (char *)0x0;\n      goto LAB_000bb8c3;\n    }\n  }\n  uVar2 = (s1->section_name_)._M_string_length;\n  uVar4 = (s2->section_name_)._M_string_length;\n  uVar8 = uVar4;\n  if (uVar2 <= uVar4) {\n    uVar8 = uVar2;\n  }\n  if (((uVar8 == 0) ||\n      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0)) && (uVar8 = uVar2 - uVar4, uVar8 == 0)) {\n    if (s1->index_ != 0xffffffff) {\n      return s1->index_ < uVar3;\n    }\n                    /* WARNING: Subroutine does not return */\n    Input_section_sort_entry::index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);\n  }\n  __s = (char *)(uVar8 >> 0x1f);\nLAB_000bb8c3:\n  return (bool)(char)__s;\n}\n\n" comment comment (function_definition "bool __thiscall\ngold::Output_section::Input_section_sort_init_fini_compare::operator()\n          (Input_section_sort_init_fini_compare *this,Input_section_sort_entry *s1,\n          Input_section_sort_entry *s2)\n\n{\n  string *this_00;\n  string *this_01;\n  byte *pbVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  char *__s;\n  ulong uVar9;\n  int iVar10;\n  char *pcVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  Input_section_sort_entry *in_stack_ffffffc4;\n  undefined4 in_stack_ffffffc8;\n  char *in_stack_ffffffcc;\n  char *end;\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0xbb6a9;\n  this_00 = &s1->section_name_;\n  pcVar6 = (char *)std::string::find((string *)this_00,'.',1);\n  this_01 = &s2->section_name_;\n  pcVar7 = (char *)std::string::find((string *)this_01,'.',1);\n  bVar16 = pcVar7 == (char *)0xffffffff && pcVar6 != (char *)0xffffffff;\n  __s = (char *)CONCAT31((int3)((uint)in_stack_ffffffc8 >> 8),bVar16);\n  if (bVar16) {\n    return true;\n  }\n  if (pcVar6 == (char *)0xffffffff && pcVar7 != (char *)0xffffffff) goto LAB_000bb8c3;\n  if (pcVar6 == (char *)0xffffffff) {\n    pcVar11 = ".ctors";\n    iVar10 = std::string::compare((string *)this_00,".ctors");\n    in_stack_ffffffcc = pcVar11;\n    if (((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)) &&\n       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))))) goto LAB_000bb8c3;\n    if (pcVar7 == (char *)0xffffffff) goto LAB_000bb950;\n  }\n  else {\n    pcVar11 = ".ctors";\n    bVar16 = pcVar7 == (char *)0xffffffff;\n    if (bVar16) {\nLAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);\n      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }\n      bVar16 = pcVar6 == (char *)0xffffffff;\n      pcVar7 = pcVar6;\n      if (bVar16) goto LAB_000bb83f;\n    }\n    bVar14 = pcVar7 != (char *)0xffffffff;\n    iVar10 = 7;\n    pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar14 = *pbVar12 < *pbVar13;\n      bVar16 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    bVar15 = false;\n    bVar16 = (!bVar14 && !bVar16) == bVar14;\n    if (bVar16) {\nLAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }\n    iVar10 = 7;\n    pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar14 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar14);\n    bVar15 = false;\n    bVar16 = (!bVar16 && !bVar14) == bVar16;\n    if (bVar16) {\nLAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }\n    if (pcVar6 < pcVar7) goto LAB_000bb8c3;\n  }\nLAB_000bb83f:\n  uVar2 = (s1->input_section_).section_order_index_;\n  uVar3 = s2->index_;\n  if (uVar3 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n  }\n  uVar4 = (s2->input_section_).section_order_index_;\n  __s = (char *)CONCAT31((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0);\n  if (uVar2 != 0 && uVar4 != 0) {\n    if (uVar2 < uVar4) goto LAB_000bb8c3;\n    if (uVar2 >= uVar4 && uVar2 != uVar4) {\n      __s = (char *)0x0;\n      goto LAB_000bb8c3;\n    }\n  }\n  uVar2 = (s1->section_name_)._M_string_length;\n  uVar4 = (s2->section_name_)._M_string_length;\n  uVar8 = uVar4;\n  if (uVar2 <= uVar4) {\n    uVar8 = uVar2;\n  }\n  if (((uVar8 == 0) ||\n      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0)) && (uVar8 = uVar2 - uVar4, uVar8 == 0)) {\n    if (s1->index_ != 0xffffffff) {\n      return s1->index_ < uVar3;\n    }\n                    /* WARNING: Subroutine does not return */\n    Input_section_sort_entry::index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);\n  }\n  __s = (char *)(uVar8 >> 0x1f);\nLAB_000bb8c3:\n  return (bool)(char)__s;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::Input_section_sort_init_fini_compare::" identifier : : identifier : : identifier : :) (function_declarator "operator()\n          (Input_section_sort_init_fini_compare *this,Input_section_sort_entry *s1,\n          Input_section_sort_entry *s2)" (function_declarator "operator()" identifier (parameter_list "()" ( ))) (parameter_list "(Input_section_sort_init_fini_compare *this,Input_section_sort_entry *s1,\n          Input_section_sort_entry *s2)" ( (parameter_declaration "Input_section_sort_init_fini_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  string *this_00;\n  string *this_01;\n  byte *pbVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *pcVar7;\n  uint uVar8;\n  char *__s;\n  ulong uVar9;\n  int iVar10;\n  char *pcVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  Input_section_sort_entry *in_stack_ffffffc4;\n  undefined4 in_stack_ffffffc8;\n  char *in_stack_ffffffcc;\n  char *end;\n  undefined4 uStack_14;\n  \n  bVar17 = 0;\n  uStack_14 = 0xbb6a9;\n  this_00 = &s1->section_name_;\n  pcVar6 = (char *)std::string::find((string *)this_00,'.',1);\n  this_01 = &s2->section_name_;\n  pcVar7 = (char *)std::string::find((string *)this_01,'.',1);\n  bVar16 = pcVar7 == (char *)0xffffffff && pcVar6 != (char *)0xffffffff;\n  __s = (char *)CONCAT31((int3)((uint)in_stack_ffffffc8 >> 8),bVar16);\n  if (bVar16) {\n    return true;\n  }\n  if (pcVar6 == (char *)0xffffffff && pcVar7 != (char *)0xffffffff) goto LAB_000bb8c3;\n  if (pcVar6 == (char *)0xffffffff) {\n    pcVar11 = ".ctors";\n    iVar10 = std::string::compare((string *)this_00,".ctors");\n    in_stack_ffffffcc = pcVar11;\n    if (((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)) &&\n       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))))) goto LAB_000bb8c3;\n    if (pcVar7 == (char *)0xffffffff) goto LAB_000bb950;\n  }\n  else {\n    pcVar11 = ".ctors";\n    bVar16 = pcVar7 == (char *)0xffffffff;\n    if (bVar16) {\nLAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);\n      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }\n      bVar16 = pcVar6 == (char *)0xffffffff;\n      pcVar7 = pcVar6;\n      if (bVar16) goto LAB_000bb83f;\n    }\n    bVar14 = pcVar7 != (char *)0xffffffff;\n    iVar10 = 7;\n    pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar14 = *pbVar12 < *pbVar13;\n      bVar16 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    bVar15 = false;\n    bVar16 = (!bVar14 && !bVar16) == bVar14;\n    if (bVar16) {\nLAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }\n    iVar10 = 7;\n    pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar14 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar14);\n    bVar15 = false;\n    bVar16 = (!bVar16 && !bVar14) == bVar16;\n    if (bVar16) {\nLAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }\n    if (pcVar6 < pcVar7) goto LAB_000bb8c3;\n  }\nLAB_000bb83f:\n  uVar2 = (s1->input_section_).section_order_index_;\n  uVar3 = s2->index_;\n  if (uVar3 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n  }\n  uVar4 = (s2->input_section_).section_order_index_;\n  __s = (char *)CONCAT31((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0);\n  if (uVar2 != 0 && uVar4 != 0) {\n    if (uVar2 < uVar4) goto LAB_000bb8c3;\n    if (uVar2 >= uVar4 && uVar2 != uVar4) {\n      __s = (char *)0x0;\n      goto LAB_000bb8c3;\n    }\n  }\n  uVar2 = (s1->section_name_)._M_string_length;\n  uVar4 = (s2->section_name_)._M_string_length;\n  uVar8 = uVar4;\n  if (uVar2 <= uVar4) {\n    uVar8 = uVar2;\n  }\n  if (((uVar8 == 0) ||\n      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0)) && (uVar8 = uVar2 - uVar4, uVar8 == 0)) {\n    if (s1->index_ != 0xffffffff) {\n      return s1->index_ < uVar3;\n    }\n                    /* WARNING: Subroutine does not return */\n    Input_section_sort_entry::index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);\n  }\n  __s = (char *)(uVar8 >> 0x1f);\nLAB_000bb8c3:\n  return (bool)(char)__s;\n}" { (declaration "string *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "string *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "Input_section_sort_entry *in_stack_ffffffc4;" type_identifier (pointer_declarator "*in_stack_ffffffc4" * identifier) ;) (declaration "undefined4 in_stack_ffffffc8;" type_identifier identifier ;) (declaration "char *in_stack_ffffffcc;" primitive_type (pointer_declarator "*in_stack_ffffffcc" * identifier) ;) (declaration "char *end;" primitive_type (pointer_declarator "*end" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0xbb6a9;" (assignment_expression "uStack_14 = 0xbb6a9" identifier = number_literal) ;) (expression_statement "this_00 = &s1->section_name_;" (assignment_expression "this_00 = &s1->section_name_" identifier = (pointer_expression "&s1->section_name_" & (field_expression "s1->section_name_" identifier -> field_identifier))) ;) (ERROR "pcVar6 = (char *)std::" (assignment_expression "pcVar6 = (char *)std" identifier = (cast_expression "(char *)std" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::find((string *)this_00,'.',1);" statement_identifier : (ERROR ":" :) (expression_statement "find((string *)this_00,'.',1);" (call_expression "find((string *)this_00,'.',1)" identifier (argument_list "((string *)this_00,'.',1)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'.'" ' character ') , number_literal ))) ;)) (expression_statement "this_01 = &s2->section_name_;" (assignment_expression "this_01 = &s2->section_name_" identifier = (pointer_expression "&s2->section_name_" & (field_expression "s2->section_name_" identifier -> field_identifier))) ;) (ERROR "pcVar7 = (char *)std::" (assignment_expression "pcVar7 = (char *)std" identifier = (cast_expression "(char *)std" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::find((string *)this_01,'.',1);" statement_identifier : (ERROR ":" :) (expression_statement "find((string *)this_01,'.',1);" (call_expression "find((string *)this_01,'.',1)" identifier (argument_list "((string *)this_01,'.',1)" ( (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'.'" ' character ') , number_literal ))) ;)) (expression_statement "bVar16 = pcVar7 == (char *)0xffffffff && pcVar6 != (char *)0xffffffff;" (assignment_expression "bVar16 = pcVar7 == (char *)0xffffffff && pcVar6 != (char *)0xffffffff" identifier = (binary_expression "pcVar7 == (char *)0xffffffff && pcVar6 != (char *)0xffffffff" (binary_expression "pcVar7 == (char *)0xffffffff" identifier == (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "pcVar6 != (char *)0xffffffff" identifier != (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ;) (expression_statement "__s = (char *)CONCAT31((int3)((uint)in_stack_ffffffc8 >> 8),bVar16);" (assignment_expression "__s = (char *)CONCAT31((int3)((uint)in_stack_ffffffc8 >> 8),bVar16)" identifier = (cast_expression "(char *)CONCAT31((int3)((uint)in_stack_ffffffc8 >> 8),bVar16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31((int3)((uint)in_stack_ffffffc8 >> 8),bVar16)" identifier (argument_list "((int3)((uint)in_stack_ffffffc8 >> 8),bVar16)" ( (call_expression "(int3)((uint)in_stack_ffffffc8 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)in_stack_ffffffc8 >> 8)" ( (binary_expression "(uint)in_stack_ffffffc8 >> 8" (cast_expression "(uint)in_stack_ffffffc8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , identifier ))))) ;) (if_statement "if (bVar16) {\n    return true;\n  }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if (pcVar6 == (char *)0xffffffff && pcVar7 != (char *)0xffffffff) goto LAB_000bb8c3;" if (parenthesized_expression "(pcVar6 == (char *)0xffffffff && pcVar7 != (char *)0xffffffff)" ( (binary_expression "pcVar6 == (char *)0xffffffff && pcVar7 != (char *)0xffffffff" (binary_expression "pcVar6 == (char *)0xffffffff" identifier == (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "pcVar7 != (char *)0xffffffff" identifier != (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (goto_statement "goto LAB_000bb8c3;" goto statement_identifier ;)) (if_statement "if (pcVar6 == (char *)0xffffffff) {\n    pcVar11 = ".ctors";\n    iVar10 = std::string::compare((string *)this_00,".ctors");\n    in_stack_ffffffcc = pcVar11;\n    if (((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)) &&\n       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))))) goto LAB_000bb8c3;\n    if (pcVar7 == (char *)0xffffffff) goto LAB_000bb950;\n  }\n  else {\n    pcVar11 = ".ctors";\n    bVar16 = pcVar7 == (char *)0xffffffff;\n    if (bVar16) {\nLAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);\n      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }\n      bVar16 = pcVar6 == (char *)0xffffffff;\n      pcVar7 = pcVar6;\n      if (bVar16) goto LAB_000bb83f;\n    }\n    bVar14 = pcVar7 != (char *)0xffffffff;\n    iVar10 = 7;\n    pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar14 = *pbVar12 < *pbVar13;\n      bVar16 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    bVar15 = false;\n    bVar16 = (!bVar14 && !bVar16) == bVar14;\n    if (bVar16) {\nLAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }\n    iVar10 = 7;\n    pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar14 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar14);\n    bVar15 = false;\n    bVar16 = (!bVar16 && !bVar14) == bVar16;\n    if (bVar16) {\nLAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }\n    if (pcVar6 < pcVar7) goto LAB_000bb8c3;\n  }" if (parenthesized_expression "(pcVar6 == (char *)0xffffffff)" ( (binary_expression "pcVar6 == (char *)0xffffffff" identifier == (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar11 = ".ctors";\n    iVar10 = std::string::compare((string *)this_00,".ctors");\n    in_stack_ffffffcc = pcVar11;\n    if (((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)) &&\n       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))))) goto LAB_000bb8c3;\n    if (pcVar7 == (char *)0xffffffff) goto LAB_000bb950;\n  }" { (expression_statement "pcVar11 = ".ctors";" (assignment_expression "pcVar11 = ".ctors"" identifier = (string_literal "".ctors"" " string_content ")) ;) (ERROR "iVar10 = std::" (assignment_expression "iVar10 = std" identifier = identifier) : :) (labeled_statement "string::compare((string *)this_00,".ctors");" statement_identifier : (ERROR ":" :) (expression_statement "compare((string *)this_00,".ctors");" (call_expression "compare((string *)this_00,".ctors")" identifier (argument_list "((string *)this_00,".ctors")" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal "".ctors"" " string_content ") ))) ;)) (expression_statement "in_stack_ffffffcc = pcVar11;" (assignment_expression "in_stack_ffffffcc = pcVar11" identifier = identifier) ;) (if_statement "if (((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)) &&\n       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))))) goto LAB_000bb8c3;" if (parenthesized_expression "(((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)) &&\n       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0))))))" ( (binary_expression "((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)) &&\n       ((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))))" (parenthesized_expression "((iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0))" ( (binary_expression "(iVar10 == 0) ||\n        (iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar10 = std::string::compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0)" ( (ERROR "iVar10 = std::string::" (assignment_expression "iVar10 = std" identifier = identifier) : : identifier : :) (comma_expression "compare((string *)this_00,".dtors"), in_stack_ffffffcc = pcVar7,\n        iVar10 == 0" (call_expression "compare((string *)this_00,".dtors")" identifier (argument_list "((string *)this_00,".dtors")" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal "".dtors"" " string_content ") ))) , (comma_expression "in_stack_ffffffcc = pcVar7,\n        iVar10 == 0" (assignment_expression "in_stack_ffffffcc = pcVar7" identifier = identifier) , (binary_expression "iVar10 == 0" identifier == number_literal))) ))) )) && (parenthesized_expression "((sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))))" ( (parenthesized_expression "(sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0))))" ( (comma_expression "sVar5 = (s1->section_name_)._M_string_length, sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))" (assignment_expression "sVar5 = (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)) , (binary_expression "sVar5 != (s2->section_name_)._M_string_length\n        || ((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))" (binary_expression "sVar5 != (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)) || (parenthesized_expression "((sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)))" ( (parenthesized_expression "(sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0))" ( (binary_expression "sVar5 != 0 &&\n            (iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)" (binary_expression "sVar5 != 0" identifier != number_literal) && (parenthesized_expression "(iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0)" ( (comma_expression "iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5), in_stack_ffffffcc = pcVar7\n            , iVar10 != 0" (assignment_expression "iVar10 = memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5)" identifier = (call_expression "memcmp((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5)" identifier (argument_list "((s1->section_name_)._M_dataplus._M_p,\n                             (s2->section_name_)._M_dataplus._M_p,sVar5)" ( (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) , (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) , identifier )))) , (comma_expression "in_stack_ffffffcc = pcVar7\n            , iVar10 != 0" (assignment_expression "in_stack_ffffffcc = pcVar7" identifier = identifier) , (binary_expression "iVar10 != 0" identifier != number_literal))) ))) )) )))) )) ))) )) (goto_statement "goto LAB_000bb8c3;" goto statement_identifier ;)) (if_statement "if (pcVar7 == (char *)0xffffffff) goto LAB_000bb950;" if (parenthesized_expression "(pcVar7 == (char *)0xffffffff)" ( (binary_expression "pcVar7 == (char *)0xffffffff" identifier == (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000bb950;" goto statement_identifier ;)) }) (else_clause "else {\n    pcVar11 = ".ctors";\n    bVar16 = pcVar7 == (char *)0xffffffff;\n    if (bVar16) {\nLAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);\n      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }\n      bVar16 = pcVar6 == (char *)0xffffffff;\n      pcVar7 = pcVar6;\n      if (bVar16) goto LAB_000bb83f;\n    }\n    bVar14 = pcVar7 != (char *)0xffffffff;\n    iVar10 = 7;\n    pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar14 = *pbVar12 < *pbVar13;\n      bVar16 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    bVar15 = false;\n    bVar16 = (!bVar14 && !bVar16) == bVar14;\n    if (bVar16) {\nLAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }\n    iVar10 = 7;\n    pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar14 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar14);\n    bVar15 = false;\n    bVar16 = (!bVar16 && !bVar14) == bVar16;\n    if (bVar16) {\nLAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }\n    if (pcVar6 < pcVar7) goto LAB_000bb8c3;\n  }" else (compound_statement "{\n    pcVar11 = ".ctors";\n    bVar16 = pcVar7 == (char *)0xffffffff;\n    if (bVar16) {\nLAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);\n      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }\n      bVar16 = pcVar6 == (char *)0xffffffff;\n      pcVar7 = pcVar6;\n      if (bVar16) goto LAB_000bb83f;\n    }\n    bVar14 = pcVar7 != (char *)0xffffffff;\n    iVar10 = 7;\n    pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar14 = *pbVar12 < *pbVar13;\n      bVar16 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);\n    bVar15 = false;\n    bVar16 = (!bVar14 && !bVar16) == bVar14;\n    if (bVar16) {\nLAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }\n    iVar10 = 7;\n    pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p;\n    pbVar12 = (byte *)".ctors.";\n    pbVar13 = pbVar1;\n    do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar14 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar14);\n    bVar15 = false;\n    bVar16 = (!bVar16 && !bVar14) == bVar16;\n    if (bVar16) {\nLAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }\n    if (pcVar6 < pcVar7) goto LAB_000bb8c3;\n  }" { (expression_statement "pcVar11 = ".ctors";" (assignment_expression "pcVar11 = ".ctors"" identifier = (string_literal "".ctors"" " string_content ")) ;) (expression_statement "bVar16 = pcVar7 == (char *)0xffffffff;" (assignment_expression "bVar16 = pcVar7 == (char *)0xffffffff" identifier = (binary_expression "pcVar7 == (char *)0xffffffff" identifier == (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar16) {\nLAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);\n      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }\n      bVar16 = pcVar6 == (char *)0xffffffff;\n      pcVar7 = pcVar6;\n      if (bVar16) goto LAB_000bb83f;\n    }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\nLAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);\n      if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }\n      bVar16 = pcVar6 == (char *)0xffffffff;\n      pcVar7 = pcVar6;\n      if (bVar16) goto LAB_000bb83f;\n    }" { (labeled_statement "LAB_000bb950:\n      iVar10 = std::string::compare((string *)this_01,pcVar11);" statement_identifier : (ERROR "iVar10 = std::" (assignment_expression "iVar10 = std" identifier = identifier) : :) (labeled_statement "string::compare((string *)this_01,pcVar11);" statement_identifier : (ERROR ":" :) (expression_statement "compare((string *)this_01,pcVar11);" (call_expression "compare((string *)this_01,pcVar11)" identifier (argument_list "((string *)this_01,pcVar11)" ( (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (if_statement "if ((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))\n      {\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }" if (parenthesized_expression "((iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0))" ( (binary_expression "(iVar10 == 0) || (iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar10 = std::string::compare((string *)this_01,".dtors"), iVar10 == 0)" ( (ERROR "iVar10 = std::string::" (assignment_expression "iVar10 = std" identifier = identifier) : : identifier : :) (comma_expression "compare((string *)this_01,".dtors"), iVar10 == 0" (call_expression "compare((string *)this_01,".dtors")" identifier (argument_list "((string *)this_01,".dtors")" ( (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal "".dtors"" " string_content ") ))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        sVar5 = (s2->section_name_)._M_string_length;\n        if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }\n        if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }\n      }" { (expression_statement "sVar5 = (s2->section_name_)._M_string_length;" (assignment_expression "sVar5 = (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)) ;) (if_statement "if (sVar5 != (s1->section_name_)._M_string_length) {\n          return true;\n        }" if (parenthesized_expression "(sVar5 != (s1->section_name_)._M_string_length)" ( (binary_expression "sVar5 != (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)) )) (compound_statement "{\n          return true;\n        }" { (return_statement "return true;" return true ;) })) (if_statement "if ((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)) {\n          return true;\n        }" if (parenthesized_expression "((sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0))" ( (binary_expression "(sVar5 != 0) &&\n           (iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)" (parenthesized_expression "(sVar5 != 0)" ( (binary_expression "sVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0)" ( (comma_expression "iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5), iVar10 != 0" (assignment_expression "iVar10 = memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5)" identifier = (call_expression "memcmp((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5)" identifier (argument_list "((s2->section_name_)._M_dataplus._M_p,\n                            (s1->section_name_)._M_dataplus._M_p,sVar5)" ( (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) , (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) , identifier )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n          return true;\n        }" { (return_statement "return true;" return true ;) })) })) (expression_statement "bVar16 = pcVar6 == (char *)0xffffffff;" (assignment_expression "bVar16 = pcVar6 == (char *)0xffffffff" identifier = (binary_expression "pcVar6 == (char *)0xffffffff" identifier == (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "pcVar7 = pcVar6;" (assignment_expression "pcVar7 = pcVar6" identifier = identifier) ;) (if_statement "if (bVar16) goto LAB_000bb83f;" if (parenthesized_expression "(bVar16)" ( identifier )) (goto_statement "goto LAB_000bb83f;" goto statement_identifier ;)) })) (expression_statement "bVar14 = pcVar7 != (char *)0xffffffff;" (assignment_expression "bVar14 = pcVar7 != (char *)0xffffffff" identifier = (binary_expression "pcVar7 != (char *)0xffffffff" identifier != (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p;" (assignment_expression "pbVar1 = (byte *)(s1->section_name_)._M_dataplus._M_p" identifier = (cast_expression "(byte *)(s1->section_name_)._M_dataplus._M_p" ( (type_descriptor "byte *" 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 "pbVar12 = (byte *)".ctors.";" (assignment_expression "pbVar12 = (byte *)".ctors."" identifier = (cast_expression "(byte *)".ctors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors."" " string_content "))) ;) (expression_statement "pbVar13 = pbVar1;" (assignment_expression "pbVar13 = pbVar1" identifier = identifier) ;) (do_statement "do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar14 = *pbVar12 < *pbVar13;\n      bVar16 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar16);" do (compound_statement "{\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar14 = *pbVar12 < *pbVar13;\n      bVar16 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar12 < *pbVar13;" (assignment_expression "bVar14 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar13;" (assignment_expression "bVar16 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar16 = (!bVar14 && !bVar16) == bVar14;" (assignment_expression "bVar16 = (!bVar14 && !bVar16) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar16) {\nLAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\nLAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }\n    }" { (labeled_statement "LAB_000bb990:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);" statement_identifier : (expression_statement "uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);" (assignment_expression "uVar9 = strtoul((char *)(pbVar1 + 7),&end,10)" identifier = (call_expression "strtoul((char *)(pbVar1 + 7),&end,10)" identifier (argument_list "((char *)(pbVar1 + 7),&end,10)" ( (cast_expression "(char *)(pbVar1 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar1 + 7)" ( (binary_expression "pbVar1 + 7" identifier + number_literal) ))) , (pointer_expression "&end" & identifier) , number_literal )))) ;)) (if_statement "if (*end == '\0') {\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }\n      else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }" if (parenthesized_expression "(*end == '\0')" ( (binary_expression "*end == '\0'" (pointer_expression "*end" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        bVar16 = 0xffff < uVar9;\n        pcVar7 = (char *)(0xffff - uVar9);\n        bVar14 = pcVar7 == (char *)0x0;\n      }" { (expression_statement "bVar16 = 0xffff < uVar9;" (assignment_expression "bVar16 = 0xffff < uVar9" identifier = (binary_expression "0xffff < uVar9" number_literal < identifier)) ;) (expression_statement "pcVar7 = (char *)(0xffff - uVar9);" (assignment_expression "pcVar7 = (char *)(0xffff - uVar9)" identifier = (cast_expression "(char *)(0xffff - uVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(0xffff - uVar9)" ( (binary_expression "0xffff - uVar9" number_literal - identifier) )))) ;) (expression_statement "bVar14 = pcVar7 == (char *)0x0;" (assignment_expression "bVar14 = pcVar7 == (char *)0x0" identifier = (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) }) (else_clause "else {\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }" else (compound_statement "{\nLAB_000bb7a8:\n        bVar16 = false;\n        pcVar7 = (char *)0x0;\n        bVar14 = true;\n      }" { (labeled_statement "LAB_000bb7a8:\n        bVar16 = false;" statement_identifier : (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;)) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar14 = true;" (assignment_expression "bVar14 = true" identifier = true) ;) }))) }) (else_clause "else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }" else (compound_statement "{\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb990;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }\nLAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n      bVar16 = false;\n      bVar14 = *end == '\0';\n      if (!bVar14) goto LAB_000bb7a8;\n    }" { (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".dtors.";" (assignment_expression "pbVar12 = (byte *)".dtors."" identifier = (cast_expression "(byte *)".dtors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors."" " string_content "))) ;) (expression_statement "pbVar13 = pbVar1;" (assignment_expression "pbVar13 = pbVar1" identifier = identifier) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar13;" (assignment_expression "bVar16 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = (!bVar15 && !bVar16) == bVar15;" (assignment_expression "bVar16 = (!bVar15 && !bVar16) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar16) == bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" ( (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar16) goto LAB_000bb990;" if (parenthesized_expression "(bVar16)" ( identifier )) (goto_statement "goto LAB_000bb990;" goto statement_identifier ;)) (expression_statement "iVar10 = 0xc;" (assignment_expression "iVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".init_array.";" (assignment_expression "pbVar12 = (byte *)".init_array."" identifier = (cast_expression "(byte *)".init_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array."" " string_content "))) ;) (expression_statement "pbVar13 = pbVar1;" (assignment_expression "pbVar13 = pbVar1" identifier = identifier) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar12 < *pbVar13;" (assignment_expression "bVar14 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar13;" (assignment_expression "bVar16 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar16 = (!bVar14 && !bVar16) == bVar14;" (assignment_expression "bVar16 = (!bVar14 && !bVar16) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar16) {\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n        iVar10 = 0xc;\n        pbVar12 = (byte *)".fini_array.";\n        pbVar13 = pbVar1;\n        do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);\n        if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;\n        goto LAB_000bb7a8;\n      }" { (expression_statement "iVar10 = 0xc;" (assignment_expression "iVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".fini_array.";" (assignment_expression "pbVar12 = (byte *)".fini_array."" identifier = (cast_expression "(byte *)".fini_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array."" " string_content "))) ;) (expression_statement "pbVar13 = pbVar1;" (assignment_expression "pbVar13 = pbVar1" identifier = identifier) ;) (do_statement "do {\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        } while (bVar16);" do (compound_statement "{\n          if (iVar10 == 0) break;\n          iVar10 = iVar10 + -1;\n          bVar15 = *pbVar12 < *pbVar13;\n          bVar16 = *pbVar12 == *pbVar13;\n          pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n          pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n        }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar13;" (assignment_expression "bVar16 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb782;" if (parenthesized_expression "((!bVar15 && !bVar16) == bVar15)" ( (binary_expression "(!bVar15 && !bVar16) == bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" ( (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000bb782;" goto statement_identifier ;)) (goto_statement "goto LAB_000bb7a8;" goto statement_identifier ;) })) (labeled_statement "LAB_000bb782:\n      pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);" statement_identifier : (expression_statement "pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);" (assignment_expression "pcVar7 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10)" identifier = (cast_expression "(char *)strtoul((char *)(pbVar1 + 0xc),&end,10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "strtoul((char *)(pbVar1 + 0xc),&end,10)" identifier (argument_list "((char *)(pbVar1 + 0xc),&end,10)" ( (cast_expression "(char *)(pbVar1 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar1 + 0xc)" ( (binary_expression "pbVar1 + 0xc" identifier + number_literal) ))) , (pointer_expression "&end" & identifier) , number_literal ))))) ;)) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar14 = *end == '\0';" (assignment_expression "bVar14 = *end == '\0'" identifier = (binary_expression "*end == '\0'" (pointer_expression "*end" * identifier) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar14) goto LAB_000bb7a8;" if (parenthesized_expression "(!bVar14)" ( (unary_expression "!bVar14" ! identifier) )) (goto_statement "goto LAB_000bb7a8;" goto statement_identifier ;)) }))) (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p;" (assignment_expression "pbVar1 = (byte *)(s2->section_name_)._M_dataplus._M_p" identifier = (cast_expression "(byte *)(s2->section_name_)._M_dataplus._M_p" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (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 "pbVar12 = (byte *)".ctors.";" (assignment_expression "pbVar12 = (byte *)".ctors."" identifier = (cast_expression "(byte *)".ctors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors."" " string_content "))) ;) (expression_statement "pbVar13 = pbVar1;" (assignment_expression "pbVar13 = pbVar1" identifier = identifier) ;) (do_statement "do {\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar14 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (iVar10 == 0) break;\n      iVar10 = iVar10 + -1;\n      bVar16 = *pbVar12 < *pbVar13;\n      bVar14 = *pbVar12 == *pbVar13;\n      pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n      pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n    }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar12 < *pbVar13;" (assignment_expression "bVar16 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar14 = *pbVar12 == *pbVar13;" (assignment_expression "bVar14 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar16 = (!bVar16 && !bVar14) == bVar16;" (assignment_expression "bVar16 = (!bVar16 && !bVar14) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar14) == bVar16" (parenthesized_expression "(!bVar16 && !bVar14)" ( (binary_expression "!bVar16 && !bVar14" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar16) {\nLAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }\n    }\n    else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\nLAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);\n      if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }\n    }" { (labeled_statement "LAB_000bb9c0:\n      uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);" statement_identifier : (expression_statement "uVar9 = strtoul((char *)(pbVar1 + 7),&end,10);" (assignment_expression "uVar9 = strtoul((char *)(pbVar1 + 7),&end,10)" identifier = (call_expression "strtoul((char *)(pbVar1 + 7),&end,10)" identifier (argument_list "((char *)(pbVar1 + 7),&end,10)" ( (cast_expression "(char *)(pbVar1 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar1 + 7)" ( (binary_expression "pbVar1 + 7" identifier + number_literal) ))) , (pointer_expression "&end" & identifier) , number_literal )))) ;)) (if_statement "if (*end == '\0') {\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }\n      else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }" if (parenthesized_expression "(*end == '\0')" ( (binary_expression "*end == '\0'" (pointer_expression "*end" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pcVar6 = (char *)(0xffff - uVar9);\nLAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;\n        if (pcVar7 < pcVar6) {\n          return true;\n        }\n      }" { (expression_statement "pcVar6 = (char *)(0xffff - uVar9);" (assignment_expression "pcVar6 = (char *)(0xffff - uVar9)" identifier = (cast_expression "(char *)(0xffff - uVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(0xffff - uVar9)" ( (binary_expression "0xffff - uVar9" number_literal - identifier) )))) ;) (labeled_statement "LAB_000bb82f:\n        in_stack_ffffffcc = pcVar7;" statement_identifier : (expression_statement "in_stack_ffffffcc = pcVar7;" (assignment_expression "in_stack_ffffffcc = pcVar7" identifier = identifier) ;)) (if_statement "if (pcVar7 < pcVar6) {\n          return true;\n        }" if (parenthesized_expression "(pcVar7 < pcVar6)" ( (binary_expression "pcVar7 < pcVar6" identifier < identifier) )) (compound_statement "{\n          return true;\n        }" { (return_statement "return true;" return true ;) })) }) (else_clause "else {\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }" else (compound_statement "{\nLAB_000bb9e7:\n        pcVar6 = (char *)0x0;\n        in_stack_ffffffcc = pcVar7;\n      }" { (labeled_statement "LAB_000bb9e7:\n        pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "in_stack_ffffffcc = pcVar7;" (assignment_expression "in_stack_ffffffcc = pcVar7" identifier = identifier) ;) }))) }) (else_clause "else {\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }" else (compound_statement "{\n      iVar10 = 7;\n      pbVar12 = (byte *)".dtors.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar14 = false;\n      bVar16 = (!bVar15 && !bVar16) == bVar15;\n      if (bVar16) goto LAB_000bb9c0;\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".init_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      bVar15 = false;\n      bVar16 = (!bVar14 && !bVar16) == bVar14;\n      if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }\n      iVar10 = 0xc;\n      pbVar12 = (byte *)".fini_array.";\n      pbVar13 = pbVar1;\n      do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;\n      pcVar6 = (char *)0x0;\n    }" { (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".dtors.";" (assignment_expression "pbVar12 = (byte *)".dtors."" identifier = (cast_expression "(byte *)".dtors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors."" " string_content "))) ;) (expression_statement "pbVar13 = pbVar1;" (assignment_expression "pbVar13 = pbVar1" identifier = identifier) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar13;" (assignment_expression "bVar16 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = (!bVar15 && !bVar16) == bVar15;" (assignment_expression "bVar16 = (!bVar15 && !bVar16) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar16) == bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" ( (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar16) goto LAB_000bb9c0;" if (parenthesized_expression "(bVar16)" ( identifier )) (goto_statement "goto LAB_000bb9c0;" goto statement_identifier ;)) (expression_statement "iVar10 = 0xc;" (assignment_expression "iVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".init_array.";" (assignment_expression "pbVar12 = (byte *)".init_array."" identifier = (cast_expression "(byte *)".init_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array."" " string_content "))) ;) (expression_statement "pbVar13 = pbVar1;" (assignment_expression "pbVar13 = pbVar1" identifier = identifier) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar14 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar12 < *pbVar13;" (assignment_expression "bVar14 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar13;" (assignment_expression "bVar16 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar16 = (!bVar14 && !bVar16) == bVar14;" (assignment_expression "bVar16 = (!bVar14 && !bVar16) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar16) {\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }" if (parenthesized_expression "(bVar16)" ( identifier )) (compound_statement "{\nLAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);\n        if (*end != '\0') goto LAB_000bb9e7;\n        goto LAB_000bb82f;\n      }" { (labeled_statement "LAB_000bb804:\n        pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);" statement_identifier : (expression_statement "pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10);" (assignment_expression "pcVar6 = (char *)strtoul((char *)(pbVar1 + 0xc),&end,10)" identifier = (cast_expression "(char *)strtoul((char *)(pbVar1 + 0xc),&end,10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "strtoul((char *)(pbVar1 + 0xc),&end,10)" identifier (argument_list "((char *)(pbVar1 + 0xc),&end,10)" ( (cast_expression "(char *)(pbVar1 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar1 + 0xc)" ( (binary_expression "pbVar1 + 0xc" identifier + number_literal) ))) , (pointer_expression "&end" & identifier) , number_literal ))))) ;)) (if_statement "if (*end != '\0') goto LAB_000bb9e7;" if (parenthesized_expression "(*end != '\0')" ( (binary_expression "*end != '\0'" (pointer_expression "*end" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000bb9e7;" goto statement_identifier ;)) (goto_statement "goto LAB_000bb82f;" goto statement_identifier ;) })) (expression_statement "iVar10 = 0xc;" (assignment_expression "iVar10 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar12 = (byte *)".fini_array.";" (assignment_expression "pbVar12 = (byte *)".fini_array."" identifier = (cast_expression "(byte *)".fini_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array."" " string_content "))) ;) (expression_statement "pbVar13 = pbVar1;" (assignment_expression "pbVar13 = pbVar1" identifier = identifier) ;) (do_statement "do {\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);" do (compound_statement "{\n        if (iVar10 == 0) break;\n        iVar10 = iVar10 + -1;\n        bVar15 = *pbVar12 < *pbVar13;\n        bVar16 = *pbVar12 == *pbVar13;\n        pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;\n        pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;\n      }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar12 < *pbVar13;" (assignment_expression "bVar15 = *pbVar12 < *pbVar13" identifier = (binary_expression "*pbVar12 < *pbVar13" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "bVar16 = *pbVar12 == *pbVar13;" (assignment_expression "bVar16 = *pbVar12 == *pbVar13" identifier = (binary_expression "*pbVar12 == *pbVar13" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar13" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar16) == bVar15) goto LAB_000bb804;" if (parenthesized_expression "((!bVar15 && !bVar16) == bVar15)" ( (binary_expression "(!bVar15 && !bVar16) == bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" ( (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000bb804;" goto statement_identifier ;)) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (pcVar6 < pcVar7) goto LAB_000bb8c3;" if (parenthesized_expression "(pcVar6 < pcVar7)" ( (binary_expression "pcVar6 < pcVar7" identifier < identifier) )) (goto_statement "goto LAB_000bb8c3;" goto statement_identifier ;)) }))) (labeled_statement "LAB_000bb83f:\n  uVar2 = (s1->input_section_).section_order_index_;" statement_identifier : (expression_statement "uVar2 = (s1->input_section_).section_order_index_;" (assignment_expression "uVar2 = (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 "uVar3 = s2->index_;" (assignment_expression "uVar3 = s2->index_" identifier = (field_expression "s2->index_" identifier -> field_identifier)) ;) (if_statement "if (uVar3 == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0xcf5,"input_section");\n  }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 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 "uVar4 = (s2->input_section_).section_order_index_;" (assignment_expression "uVar4 = (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)) ;) (expression_statement "__s = (char *)CONCAT31((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0);" (assignment_expression "__s = (char *)CONCAT31((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0)" identifier = (cast_expression "(char *)CONCAT31((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT31((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0)" identifier (argument_list "((int3)((uint)__s >> 8),uVar2 != 0 && uVar4 != 0)" ( (call_expression "(int3)((uint)__s >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)__s >> 8)" ( (binary_expression "(uint)__s >> 8" (cast_expression "(uint)__s" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , (binary_expression "uVar2 != 0 && uVar4 != 0" (binary_expression "uVar2 != 0" identifier != number_literal) && (binary_expression "uVar4 != 0" identifier != number_literal)) ))))) ;) (if_statement "if (uVar2 != 0 && uVar4 != 0) {\n    if (uVar2 < uVar4) goto LAB_000bb8c3;\n    if (uVar2 >= uVar4 && uVar2 != uVar4) {\n      __s = (char *)0x0;\n      goto LAB_000bb8c3;\n    }\n  }" if (parenthesized_expression "(uVar2 != 0 && uVar4 != 0)" ( (binary_expression "uVar2 != 0 && uVar4 != 0" (binary_expression "uVar2 != 0" identifier != number_literal) && (binary_expression "uVar4 != 0" identifier != number_literal)) )) (compound_statement "{\n    if (uVar2 < uVar4) goto LAB_000bb8c3;\n    if (uVar2 >= uVar4 && uVar2 != uVar4) {\n      __s = (char *)0x0;\n      goto LAB_000bb8c3;\n    }\n  }" { (if_statement "if (uVar2 < uVar4) goto LAB_000bb8c3;" if (parenthesized_expression "(uVar2 < uVar4)" ( (binary_expression "uVar2 < uVar4" identifier < identifier) )) (goto_statement "goto LAB_000bb8c3;" goto statement_identifier ;)) (if_statement "if (uVar2 >= uVar4 && uVar2 != uVar4) {\n      __s = (char *)0x0;\n      goto LAB_000bb8c3;\n    }" if (parenthesized_expression "(uVar2 >= uVar4 && uVar2 != uVar4)" ( (binary_expression "uVar2 >= uVar4 && uVar2 != uVar4" (binary_expression "uVar2 >= uVar4" identifier >= identifier) && (binary_expression "uVar2 != uVar4" identifier != identifier)) )) (compound_statement "{\n      __s = (char *)0x0;\n      goto LAB_000bb8c3;\n    }" { (expression_statement "__s = (char *)0x0;" (assignment_expression "__s = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000bb8c3;" goto statement_identifier ;) })) })) (expression_statement "uVar2 = (s1->section_name_)._M_string_length;" (assignment_expression "uVar2 = (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 "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar4) {\n    uVar8 = uVar2;\n  }" if (parenthesized_expression "(uVar2 <= uVar4)" ( (binary_expression "uVar2 <= uVar4" identifier <= identifier) )) (compound_statement "{\n    uVar8 = uVar2;\n  }" { (expression_statement "uVar8 = uVar2;" (assignment_expression "uVar8 = uVar2" identifier = identifier) ;) })) (if_statement "if (((uVar8 == 0) ||\n      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0)) && (uVar8 = uVar2 - uVar4, uVar8 == 0)) {\n    if (s1->index_ != 0xffffffff) {\n      return s1->index_ < uVar3;\n    }\n                    /* WARNING: Subroutine does not return */\n    Input_section_sort_entry::index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);\n  }" if (parenthesized_expression "(((uVar8 == 0) ||\n      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0)) && (uVar8 = uVar2 - uVar4, uVar8 == 0))" ( (binary_expression "((uVar8 == 0) ||\n      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0)) && (uVar8 = uVar2 - uVar4, uVar8 == 0)" (parenthesized_expression "((uVar8 == 0) ||\n      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0))" ( (binary_expression "(uVar8 == 0) ||\n      (uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0)" (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0)" ( (comma_expression "uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8), uVar8 == 0" (assignment_expression "uVar8 = memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8)" identifier = (call_expression "memcmp((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8)" identifier (argument_list "((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,\n                      uVar8)" ( (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) , (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) , identifier )))) , (binary_expression "uVar8 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(uVar8 = uVar2 - uVar4, uVar8 == 0)" ( (comma_expression "uVar8 = uVar2 - uVar4, uVar8 == 0" (assignment_expression "uVar8 = uVar2 - uVar4" identifier = (binary_expression "uVar2 - uVar4" identifier - identifier)) , (binary_expression "uVar8 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    if (s1->index_ != 0xffffffff) {\n      return s1->index_ < uVar3;\n    }\n                    /* WARNING: Subroutine does not return */\n    Input_section_sort_entry::index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);\n  }" { (if_statement "if (s1->index_ != 0xffffffff) {\n      return s1->index_ < uVar3;\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_ < uVar3;\n    }" { (return_statement "return s1->index_ < uVar3;" return (binary_expression "s1->index_ < uVar3" (field_expression "s1->index_" identifier -> field_identifier) < identifier) ;) })) comment (labeled_statement "Input_section_sort_entry::index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);" statement_identifier : (ERROR ":" :) (expression_statement "index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);" (call_expression "index(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc)" identifier (argument_list "(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc)" ( identifier , identifier , (cast_expression "(int)in_stack_ffffffcc" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) })) (expression_statement "__s = (char *)(uVar8 >> 0x1f);" (assignment_expression "__s = (char *)(uVar8 >> 0x1f)" identifier = (cast_expression "(char *)(uVar8 >> 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 >> 0x1f)" ( (binary_expression "uVar8 >> 0x1f" identifier >> number_literal) )))) ;) (labeled_statement "LAB_000bb8c3:\n  return (bool)(char)__s;" statement_identifier : (return_statement "return (bool)(char)__s;" return (cast_expression "(bool)(char)__s" ( (type_descriptor "bool" primitive_type) ) (cast_expression "(char)__s" ( (type_descriptor "char" primitive_type) ) identifier)) ;)) })))
(translation_unit "uint FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  int iVar6;\n  int iVar7;\n  ulong uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  ulong uVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  uint local_38;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar19 = 0;\n  uStack_14 = 0xbb6a9;\n  iVar13 = param_2 + 0x1c;\n  iVar6 = FUN_0018a600(iVar13,0x2e,1);\n  iVar1 = param_3 + 0x1c;\n  iVar7 = FUN_0018a600(iVar1,0x2e,1);\n  bVar18 = iVar7 == -1 && iVar6 != -1;\n  local_38 = (uint)bVar18;\n  if (bVar18) {\n    return 1;\n  }\n  if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }\n  if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }\n  bVar16 = iVar7 != -1;\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_2 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);\n  bVar17 = false;\n  bVar18 = (!bVar16 && !bVar18) == bVar16;\n  if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_3 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);\n  bVar17 = false;\n  bVar18 = (!bVar18 && !bVar16) == bVar18;\n  if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }\n  if (uVar9 < uVar8) {\n    return local_38;\n  }\nLAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);\n  uVar3 = *(uint *)(param_3 + 0x18);\n  if (uVar3 == 0xffffffff) {\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }\n  uVar4 = *(uint *)(param_3 + 0x14);\n  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);\n  if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }\n  uVar9 = *(uint *)(param_2 + 0x20);\n  uVar4 = *(uint *)(param_3 + 0x20);\n  uVar10 = uVar4;\n  if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }\n  if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }\n  return uVar10 >> 0x1f;\n}\n\n" (function_definition "uint FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  int iVar6;\n  int iVar7;\n  ulong uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  ulong uVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  uint local_38;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar19 = 0;\n  uStack_14 = 0xbb6a9;\n  iVar13 = param_2 + 0x1c;\n  iVar6 = FUN_0018a600(iVar13,0x2e,1);\n  iVar1 = param_3 + 0x1c;\n  iVar7 = FUN_0018a600(iVar1,0x2e,1);\n  bVar18 = iVar7 == -1 && iVar6 != -1;\n  local_38 = (uint)bVar18;\n  if (bVar18) {\n    return 1;\n  }\n  if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }\n  if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }\n  bVar16 = iVar7 != -1;\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_2 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);\n  bVar17 = false;\n  bVar18 = (!bVar16 && !bVar18) == bVar16;\n  if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_3 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);\n  bVar17 = false;\n  bVar18 = (!bVar18 && !bVar16) == bVar18;\n  if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }\n  if (uVar9 < uVar8) {\n    return local_38;\n  }\nLAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);\n  uVar3 = *(uint *)(param_3 + 0x18);\n  if (uVar3 == 0xffffffff) {\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }\n  uVar4 = *(uint *)(param_3 + 0x14);\n  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);\n  if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }\n  uVar9 = *(uint *)(param_2 + 0x20);\n  uVar4 = *(uint *)(param_3 + 0x20);\n  uVar10 = uVar4;\n  if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }\n  if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }\n  return uVar10 >> 0x1f;\n}" type_identifier (function_declarator "FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  byte *pbVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  int iVar6;\n  int iVar7;\n  ulong uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  ulong uVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  uint local_38;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar19 = 0;\n  uStack_14 = 0xbb6a9;\n  iVar13 = param_2 + 0x1c;\n  iVar6 = FUN_0018a600(iVar13,0x2e,1);\n  iVar1 = param_3 + 0x1c;\n  iVar7 = FUN_0018a600(iVar1,0x2e,1);\n  bVar18 = iVar7 == -1 && iVar6 != -1;\n  local_38 = (uint)bVar18;\n  if (bVar18) {\n    return 1;\n  }\n  if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }\n  if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }\n  bVar16 = iVar7 != -1;\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_2 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);\n  bVar17 = false;\n  bVar18 = (!bVar16 && !bVar18) == bVar16;\n  if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_3 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);\n  bVar17 = false;\n  bVar18 = (!bVar18 && !bVar16) == bVar18;\n  if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }\n  if (uVar9 < uVar8) {\n    return local_38;\n  }\nLAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);\n  uVar3 = *(uint *)(param_3 + 0x18);\n  if (uVar3 == 0xffffffff) {\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }\n  uVar4 = *(uint *)(param_3 + 0x14);\n  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);\n  if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }\n  uVar9 = *(uint *)(param_2 + 0x20);\n  uVar4 = *(uint *)(param_3 + 0x20);\n  uVar10 = uVar4;\n  if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }\n  if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }\n  return uVar10 >> 0x1f;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "char *local_20 [3];" primitive_type (pointer_declarator "*local_20 [3]" * (array_declarator "local_20 [3]" identifier [ number_literal ])) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0xbb6a9;" (assignment_expression "uStack_14 = 0xbb6a9" identifier = number_literal) ;) (expression_statement "iVar13 = param_2 + 0x1c;" (assignment_expression "iVar13 = param_2 + 0x1c" identifier = (binary_expression "param_2 + 0x1c" identifier + number_literal)) ;) (expression_statement "iVar6 = FUN_0018a600(iVar13,0x2e,1);" (assignment_expression "iVar6 = FUN_0018a600(iVar13,0x2e,1)" identifier = (call_expression "FUN_0018a600(iVar13,0x2e,1)" identifier (argument_list "(iVar13,0x2e,1)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "iVar1 = param_3 + 0x1c;" (assignment_expression "iVar1 = param_3 + 0x1c" identifier = (binary_expression "param_3 + 0x1c" identifier + number_literal)) ;) (expression_statement "iVar7 = FUN_0018a600(iVar1,0x2e,1);" (assignment_expression "iVar7 = FUN_0018a600(iVar1,0x2e,1)" identifier = (call_expression "FUN_0018a600(iVar1,0x2e,1)" identifier (argument_list "(iVar1,0x2e,1)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "bVar18 = iVar7 == -1 && iVar6 != -1;" (assignment_expression "bVar18 = iVar7 == -1 && iVar6 != -1" identifier = (binary_expression "iVar7 == -1 && iVar6 != -1" (binary_expression "iVar7 == -1" identifier == number_literal) && (binary_expression "iVar6 != -1" identifier != number_literal))) ;) (expression_statement "local_38 = (uint)bVar18;" (assignment_expression "local_38 = (uint)bVar18" identifier = (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar18) {\n    return 1;\n  }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }" if (parenthesized_expression "(iVar6 == -1 && iVar7 != -1)" ( (binary_expression "iVar6 == -1 && iVar7 != -1" (binary_expression "iVar6 == -1" identifier == number_literal) && (binary_expression "iVar7 != -1" identifier != number_literal)) )) (compound_statement "{\n    return local_38;\n  }" { (return_statement "return local_38;" return identifier ;) })) (if_statement "if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }" { (expression_statement "iVar11 = FUN_0018ad60(iVar13,".ctors");" (assignment_expression "iVar11 = FUN_0018ad60(iVar13,".ctors")" identifier = (call_expression "FUN_0018ad60(iVar13,".ctors")" identifier (argument_list "(iVar13,".ctors")" ( identifier , (string_literal "".ctors"" " string_content ") )))) ;) (if_statement "if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }" if (parenthesized_expression "((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0))" ( (binary_expression "(iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)" (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)" ( (comma_expression "iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0" (assignment_expression "iVar13 = FUN_0018ad60(iVar13,".dtors")" identifier = (call_expression "FUN_0018ad60(iVar13,".dtors")" identifier (argument_list "(iVar13,".dtors")" ( identifier , (string_literal "".dtors"" " string_content ") )))) , (binary_expression "iVar13 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }" { (expression_statement "sVar5 = *(size_t *)(param_2 + 0x20);" (assignment_expression "sVar5 = *(size_t *)(param_2 + 0x20)" identifier = (pointer_expression "*(size_t *)(param_2 + 0x20)" * (cast_expression "(size_t *)(param_2 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }" if (parenthesized_expression "(sVar5 != *(size_t *)(param_3 + 0x20))" ( (binary_expression "sVar5 != *(size_t *)(param_3 + 0x20)" identifier != (pointer_expression "*(size_t *)(param_3 + 0x20)" * (cast_expression "(size_t *)(param_3 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n        return local_38;\n      }" { (return_statement "return local_38;" return identifier ;) })) (if_statement "if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }" if (parenthesized_expression "((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         )" ( (binary_expression "(sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)" (parenthesized_expression "(sVar5 != 0)" ( (binary_expression "sVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)" ( (comma_expression "iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0" (assignment_expression "iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" identifier = (call_expression "memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" identifier (argument_list "(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" ( (pointer_expression "*(void **)(param_2 + 0x1c)" * (cast_expression "(void **)(param_2 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(void **)(param_3 + 0x1c)" * (cast_expression "(void **)(param_3 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return local_38;\n      }" { (return_statement "return local_38;" return identifier ;) })) })) (if_statement "if (iVar7 != -1) goto LAB_000bb83f;" if (parenthesized_expression "(iVar7 != -1)" ( (binary_expression "iVar7 != -1" identifier != number_literal) )) (goto_statement "goto LAB_000bb83f;" goto statement_identifier ;)) (labeled_statement "LAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");" statement_identifier : (expression_statement "iVar13 = FUN_0018ad60(iVar1,".ctors");" (assignment_expression "iVar13 = FUN_0018ad60(iVar1,".ctors")" identifier = (call_expression "FUN_0018ad60(iVar1,".ctors")" identifier (argument_list "(iVar1,".ctors")" ( identifier , (string_literal "".ctors"" " string_content ") )))) ;)) (if_statement "if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }" if (parenthesized_expression "((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0))" ( (binary_expression "(iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)" ( (comma_expression "iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0" (assignment_expression "iVar13 = FUN_0018ad60(iVar1,".dtors")" identifier = (call_expression "FUN_0018ad60(iVar1,".dtors")" identifier (argument_list "(iVar1,".dtors")" ( identifier , (string_literal "".dtors"" " string_content ") )))) , (binary_expression "iVar13 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }" { (expression_statement "sVar5 = *(size_t *)(param_3 + 0x20);" (assignment_expression "sVar5 = *(size_t *)(param_3 + 0x20)" identifier = (pointer_expression "*(size_t *)(param_3 + 0x20)" * (cast_expression "(size_t *)(param_3 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }" if (parenthesized_expression "(sVar5 != *(size_t *)(param_2 + 0x20))" ( (binary_expression "sVar5 != *(size_t *)(param_2 + 0x20)" identifier != (pointer_expression "*(size_t *)(param_2 + 0x20)" * (cast_expression "(size_t *)(param_2 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }" if (parenthesized_expression "((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         )" ( (binary_expression "(sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)" (parenthesized_expression "(sVar5 != 0)" ( (binary_expression "sVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)" ( (comma_expression "iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0" (assignment_expression "iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" identifier = (call_expression "memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" identifier (argument_list "(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" ( (pointer_expression "*(void **)(param_3 + 0x1c)" * (cast_expression "(void **)(param_3 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(void **)(param_2 + 0x1c)" * (cast_expression "(void **)(param_2 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "bVar18 = iVar6 == -1;" (assignment_expression "bVar18 = iVar6 == -1" identifier = (binary_expression "iVar6 == -1" identifier == number_literal)) ;) (expression_statement "iVar7 = iVar6;" (assignment_expression "iVar7 = iVar6" identifier = identifier) ;) (if_statement "if (bVar18) goto LAB_000bb83f;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000bb83f;" goto statement_identifier ;)) }) (else_clause "else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" else (compound_statement "{\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" { (expression_statement "bVar18 = iVar7 == -1;" (assignment_expression "bVar18 = iVar7 == -1" identifier = (binary_expression "iVar7 == -1" identifier == number_literal)) ;) (if_statement "if (bVar18) goto LAB_000bb950;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000bb950;" goto statement_identifier ;)) }))) (expression_statement "bVar16 = iVar7 != -1;" (assignment_expression "bVar16 = iVar7 != -1" identifier = (binary_expression "iVar7 != -1" identifier != number_literal)) ;) (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) (expression_statement "pbVar2 = *(byte **)(param_2 + 0x1c);" (assignment_expression "pbVar2 = *(byte **)(param_2 + 0x1c)" identifier = (pointer_expression "*(byte **)(param_2 + 0x1c)" * (cast_expression "(byte **)(param_2 + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "pbVar14 = (byte *)".ctors.";" (assignment_expression "pbVar14 = (byte *)".ctors."" identifier = (cast_expression "(byte *)".ctors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);" do (compound_statement "{\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }" { (labeled_statement "LAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);" statement_identifier : (expression_statement "uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);" (assignment_expression "uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10)" identifier = (call_expression "strtoul((char *)(pbVar2 + 7),local_20,10)" identifier (argument_list "((char *)(pbVar2 + 7),local_20,10)" ( (cast_expression "(char *)(pbVar2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 7)" ( (binary_expression "pbVar2 + 7" identifier + number_literal) ))) , identifier , number_literal )))) ;)) (if_statement "if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" if (parenthesized_expression "(*local_20[0] == '\0')" ( (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }" { (expression_statement "bVar18 = 0xffff < uVar8;" (assignment_expression "bVar18 = 0xffff < uVar8" identifier = (binary_expression "0xffff < uVar8" number_literal < identifier)) ;) (expression_statement "uVar8 = 0xffff - uVar8;" (assignment_expression "uVar8 = 0xffff - uVar8" identifier = (binary_expression "0xffff - uVar8" number_literal - identifier)) ;) (expression_statement "bVar16 = uVar8 == 0;" (assignment_expression "bVar16 = uVar8 == 0" identifier = (binary_expression "uVar8 == 0" identifier == number_literal)) ;) }) (else_clause "else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" else (compound_statement "{\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" { (labeled_statement "LAB_000bb7a8:\n      bVar18 = false;" statement_identifier : (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "bVar16 = true;" (assignment_expression "bVar16 = true" identifier = true) ;) }))) }) (else_clause "else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" else (compound_statement "{\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" { (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".dtors.";" (assignment_expression "pbVar14 = (byte *)".dtors."" identifier = (cast_expression "(byte *)".dtors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar17 && !bVar18) == bVar17;" (assignment_expression "bVar18 = (!bVar17 && !bVar18) == bVar17" identifier = (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" ( (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) goto LAB_000bb990;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000bb990;" goto statement_identifier ;)) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".init_array.";" (assignment_expression "pbVar14 = (byte *)".init_array."" identifier = (cast_expression "(byte *)".init_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (compound_statement "{\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }" { (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".fini_array.";" (assignment_expression "pbVar14 = (byte *)".fini_array."" identifier = (cast_expression "(byte *)".fini_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);" do (compound_statement "{\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (if_statement "if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;" if (parenthesized_expression "((!bVar17 && !bVar18) == bVar17)" ( (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" ( (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000bb782;" goto statement_identifier ;)) (goto_statement "goto LAB_000bb7a8;" goto statement_identifier ;) })) (labeled_statement "LAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" statement_identifier : (expression_statement "uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" (assignment_expression "uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10)" identifier = (call_expression "strtoul((char *)(pbVar2 + 0xc),local_20,10)" identifier (argument_list "((char *)(pbVar2 + 0xc),local_20,10)" ( (cast_expression "(char *)(pbVar2 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 0xc)" ( (binary_expression "pbVar2 + 0xc" identifier + number_literal) ))) , identifier , number_literal )))) ;)) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar16 = *local_20[0] == '\0';" (assignment_expression "bVar16 = *local_20[0] == '\0'" identifier = (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence '))) ;) (if_statement "if (!bVar16) goto LAB_000bb7a8;" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (goto_statement "goto LAB_000bb7a8;" goto statement_identifier ;)) }))) (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) (expression_statement "pbVar2 = *(byte **)(param_3 + 0x1c);" (assignment_expression "pbVar2 = *(byte **)(param_3 + 0x1c)" identifier = (pointer_expression "*(byte **)(param_3 + 0x1c)" * (cast_expression "(byte **)(param_3 + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "pbVar14 = (byte *)".ctors.";" (assignment_expression "pbVar14 = (byte *)".ctors."" identifier = (cast_expression "(byte *)".ctors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".ctors."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);" do (compound_statement "{\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar14 < *pbVar15;" (assignment_expression "bVar18 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar16 = *pbVar14 == *pbVar15;" (assignment_expression "bVar16 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar18 && !bVar16) == bVar18;" (assignment_expression "bVar18 = (!bVar18 && !bVar16) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar16) == bVar18" (parenthesized_expression "(!bVar18 && !bVar16)" ( (binary_expression "!bVar18 && !bVar16" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }" { (labeled_statement "LAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);" statement_identifier : (expression_statement "uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);" (assignment_expression "uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10)" identifier = (call_expression "strtoul((char *)(pbVar2 + 7),local_20,10)" identifier (argument_list "((char *)(pbVar2 + 7),local_20,10)" ( (cast_expression "(char *)(pbVar2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 7)" ( (binary_expression "pbVar2 + 7" identifier + number_literal) ))) , identifier , number_literal )))) ;)) (if_statement "if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" if (parenthesized_expression "(*local_20[0] == '\0')" ( (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }" { (expression_statement "uVar9 = 0xffff - uVar12;" (assignment_expression "uVar9 = 0xffff - uVar12" identifier = (binary_expression "0xffff - uVar12" number_literal - identifier)) ;) (labeled_statement "LAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }" statement_identifier : (if_statement "if (uVar8 < uVar9) {\n        return 1;\n      }" if (parenthesized_expression "(uVar8 < uVar9)" ( (binary_expression "uVar8 < uVar9" identifier < identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) }))) }) (else_clause "else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" else (compound_statement "{\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" { (labeled_statement "LAB_000bb9e7:\n      uVar9 = 0;" statement_identifier : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;)) }))) }) (else_clause "else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" else (compound_statement "{\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" { (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".dtors.";" (assignment_expression "pbVar14 = (byte *)".dtors."" identifier = (cast_expression "(byte *)".dtors."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".dtors."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar17 && !bVar18) == bVar17;" (assignment_expression "bVar18 = (!bVar17 && !bVar18) == bVar17" identifier = (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" ( (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) goto LAB_000bb9c0;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000bb9c0;" goto statement_identifier ;)) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".init_array.";" (assignment_expression "pbVar14 = (byte *)".init_array."" identifier = (cast_expression "(byte *)".init_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".init_array."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" identifier = (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" ( (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }" { (labeled_statement "LAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" statement_identifier : (expression_statement "uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" (assignment_expression "uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10)" identifier = (call_expression "strtoul((char *)(pbVar2 + 0xc),local_20,10)" identifier (argument_list "((char *)(pbVar2 + 0xc),local_20,10)" ( (cast_expression "(char *)(pbVar2 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar2 + 0xc)" ( (binary_expression "pbVar2 + 0xc" identifier + number_literal) ))) , identifier , number_literal )))) ;)) (if_statement "if (*local_20[0] != '\0') goto LAB_000bb9e7;" if (parenthesized_expression "(*local_20[0] != '\0')" ( (binary_expression "*local_20[0] != '\0'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000bb9e7;" goto statement_identifier ;)) (goto_statement "goto LAB_000bb82f;" goto statement_identifier ;) })) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar14 = (byte *)".fini_array.";" (assignment_expression "pbVar14 = (byte *)".fini_array."" identifier = (cast_expression "(byte *)".fini_array."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".fini_array."" " string_content "))) ;) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" identifier = identifier) ;) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" do (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar13 == 0) break;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" identifier = (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" identifier = (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar15" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (if_statement "if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;" if (parenthesized_expression "((!bVar17 && !bVar18) == bVar17)" ( (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" ( (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_000bb804;" goto statement_identifier ;)) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }))) (if_statement "if (uVar9 < uVar8) {\n    return local_38;\n  }" if (parenthesized_expression "(uVar9 < uVar8)" ( (binary_expression "uVar9 < uVar8" identifier < identifier) )) (compound_statement "{\n    return local_38;\n  }" { (return_statement "return local_38;" return identifier ;) })) (labeled_statement "LAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);" statement_identifier : (expression_statement "uVar9 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar9 = *(uint *)(param_2 + 0x14)" identifier = (pointer_expression "*(uint *)(param_2 + 0x14)" * (cast_expression "(uint *)(param_2 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;)) (expression_statement "uVar3 = *(uint *)(param_3 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_3 + 0x18)" identifier = (pointer_expression "*(uint *)(param_3 + 0x18)" * (cast_expression "(uint *)(param_3 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x18)" ( (binary_expression "param_3 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 == 0xffffffff) {\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }" if (parenthesized_expression "(uVar3 == 0xffffffff)" ( (binary_expression "uVar3 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }" { (expression_statement "FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);" (call_expression "FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3)" identifier (argument_list "("../../gold/output.cc",0xcf5,"input_section",param_3)" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""input_section"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar4 = *(uint *)(param_3 + 0x14);" (assignment_expression "uVar4 = *(uint *)(param_3 + 0x14)" identifier = (pointer_expression "*(uint *)(param_3 + 0x14)" * (cast_expression "(uint *)(param_3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x14)" ( (binary_expression "param_3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_38 = (uint)(uVar9 != 0 && uVar4 != 0);" (assignment_expression "local_38 = (uint)(uVar9 != 0 && uVar4 != 0)" identifier = (call_expression "(uint)(uVar9 != 0 && uVar4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 != 0 && uVar4 != 0)" ( (binary_expression "uVar9 != 0 && uVar4 != 0" (binary_expression "uVar9 != 0" identifier != number_literal) && (binary_expression "uVar4 != 0" identifier != number_literal)) )))) ;) (if_statement "if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(uVar9 != 0 && uVar4 != 0)" ( (binary_expression "uVar9 != 0 && uVar4 != 0" (binary_expression "uVar9 != 0" identifier != number_literal) && (binary_expression "uVar4 != 0" identifier != number_literal)) )) (compound_statement "{\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }" { (if_statement "if (uVar9 < uVar4) {\n      return local_38;\n    }" if (parenthesized_expression "(uVar9 < uVar4)" ( (binary_expression "uVar9 < uVar4" identifier < identifier) )) (compound_statement "{\n      return local_38;\n    }" { (return_statement "return local_38;" return identifier ;) })) (if_statement "if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }" if (parenthesized_expression "(uVar9 >= uVar4 && uVar9 != uVar4)" ( (binary_expression "uVar9 >= uVar4 && uVar9 != uVar4" (binary_expression "uVar9 >= uVar4" identifier >= identifier) && (binary_expression "uVar9 != uVar4" identifier != identifier)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "uVar9 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar9 = *(uint *)(param_2 + 0x20)" identifier = (pointer_expression "*(uint *)(param_2 + 0x20)" * (cast_expression "(uint *)(param_2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_3 + 0x20);" (assignment_expression "uVar4 = *(uint *)(param_3 + 0x20)" identifier = (pointer_expression "*(uint *)(param_3 + 0x20)" * (cast_expression "(uint *)(param_3 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" identifier = identifier) ;) (if_statement "if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }" if (parenthesized_expression "(uVar9 <= uVar4)" ( (binary_expression "uVar9 <= uVar4" identifier <= identifier) )) (compound_statement "{\n    uVar10 = uVar9;\n  }" { (expression_statement "uVar10 = uVar9;" (assignment_expression "uVar10 = uVar9" identifier = identifier) ;) })) (if_statement "if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }" if (parenthesized_expression "(((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0))" ( (binary_expression "((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)" (parenthesized_expression "((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))" ( (binary_expression "(uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0)" (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "(uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0)" ( (comma_expression "uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0" (assignment_expression "uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" identifier = (call_expression "memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" identifier (argument_list "(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" ( (pointer_expression "*(void **)(param_2 + 0x1c)" * (cast_expression "(void **)(param_2 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) , (pointer_expression "*(void **)(param_3 + 0x1c)" * (cast_expression "(void **)(param_3 + 0x1c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 0x1c)" ( (binary_expression "param_3 + 0x1c" identifier + number_literal) )))) , identifier )))) , (binary_expression "uVar10 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(uVar10 = uVar9 - uVar4, uVar10 == 0)" ( (comma_expression "uVar10 = uVar9 - uVar4, uVar10 == 0" (assignment_expression "uVar10 = uVar9 - uVar4" identifier = (binary_expression "uVar9 - uVar4" identifier - identifier)) , (binary_expression "uVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }" { (if_statement "if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }" if (parenthesized_expression "(*(uint *)(param_2 + 0x18) != 0xffffffff)" ( (binary_expression "*(uint *)(param_2 + 0x18) != 0xffffffff" (pointer_expression "*(uint *)(param_2 + 0x18)" * (cast_expression "(uint *)(param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }" { (return_statement "return (uint)(*(uint *)(param_2 + 0x18) < uVar3);" return (call_expression "(uint)(*(uint *)(param_2 + 0x18) < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_2 + 0x18) < uVar3)" ( (binary_expression "*(uint *)(param_2 + 0x18) < uVar3" (pointer_expression "*(uint *)(param_2 + 0x18)" * (cast_expression "(uint *)(param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) < identifier) ))) ;) })) (expression_statement "FUN_000b9930();" (call_expression "FUN_000b9930()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return uVar10 >> 0x1f;" return (binary_expression "uVar10 >> 0x1f" identifier >> number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT != LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (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 IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (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 ( IDENT , (string_literal " string_content ") )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return 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 IDENT ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;)) (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 ( IDENT , (string_literal " string_content ") )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return LIT ;) })) (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 LIT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT , LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT , LIT )))) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT , LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT , LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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 != LIT) && (binary_expression IDENT != LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (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 (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)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - IDENT)) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return (binary_expression IDENT >> LIT) ;) })))
(function_definition "uint FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  int iVar6;\n  int iVar7;\n  ulong uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  ulong uVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  uint local_38;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar19 = 0;\n  uStack_14 = 0xbb6a9;\n  iVar13 = param_2 + 0x1c;\n  iVar6 = FUN_0018a600(iVar13,0x2e,1);\n  iVar1 = param_3 + 0x1c;\n  iVar7 = FUN_0018a600(iVar1,0x2e,1);\n  bVar18 = iVar7 == -1 && iVar6 != -1;\n  local_38 = (uint)bVar18;\n  if (bVar18) {\n    return 1;\n  }\n  if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }\n  if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }\n  bVar16 = iVar7 != -1;\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_2 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);\n  bVar17 = false;\n  bVar18 = (!bVar16 && !bVar18) == bVar16;\n  if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_3 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);\n  bVar17 = false;\n  bVar18 = (!bVar18 && !bVar16) == bVar18;\n  if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }\n  if (uVar9 < uVar8) {\n    return local_38;\n  }\nLAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);\n  uVar3 = *(uint *)(param_3 + 0x18);\n  if (uVar3 == 0xffffffff) {\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }\n  uVar4 = *(uint *)(param_3 + 0x14);\n  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);\n  if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }\n  uVar9 = *(uint *)(param_2 + 0x20);\n  uVar4 = *(uint *)(param_3 + 0x20);\n  uVar10 = uVar4;\n  if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }\n  if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }\n  return uVar10 >> 0x1f;\n}" (type_identifier "uint") (function_declarator "FUN_000bb6a0(undefined4 param_1,int param_2,int param_3)" (identifier "FUN_000bb6a0") (parameter_list "(undefined4 param_1,int param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  byte *pbVar2;\n  uint uVar3;\n  uint uVar4;\n  size_t sVar5;\n  int iVar6;\n  int iVar7;\n  ulong uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  ulong uVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  uint local_38;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  bVar19 = 0;\n  uStack_14 = 0xbb6a9;\n  iVar13 = param_2 + 0x1c;\n  iVar6 = FUN_0018a600(iVar13,0x2e,1);\n  iVar1 = param_3 + 0x1c;\n  iVar7 = FUN_0018a600(iVar1,0x2e,1);\n  bVar18 = iVar7 == -1 && iVar6 != -1;\n  local_38 = (uint)bVar18;\n  if (bVar18) {\n    return 1;\n  }\n  if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }\n  if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }\n  bVar16 = iVar7 != -1;\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_2 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);\n  bVar17 = false;\n  bVar18 = (!bVar16 && !bVar18) == bVar16;\n  if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }\n  iVar13 = 7;\n  pbVar2 = *(byte **)(param_3 + 0x1c);\n  pbVar14 = (byte *)".ctors.";\n  pbVar15 = pbVar2;\n  do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);\n  bVar17 = false;\n  bVar18 = (!bVar18 && !bVar16) == bVar18;\n  if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }\n  if (uVar9 < uVar8) {\n    return local_38;\n  }\nLAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);\n  uVar3 = *(uint *)(param_3 + 0x18);\n  if (uVar3 == 0xffffffff) {\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }\n  uVar4 = *(uint *)(param_3 + 0x14);\n  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);\n  if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }\n  uVar9 = *(uint *)(param_2 + 0x20);\n  uVar4 = *(uint *)(param_3 + 0x20);\n  uVar10 = uVar4;\n  if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }\n  if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }\n  return uVar10 >> 0x1f;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "byte *pbVar15;" (type_identifier "byte") (pointer_declarator "*pbVar15" (* "*") (identifier "pbVar15")) (; ";")) (declaration "bool bVar16;" (primitive_type "bool") (identifier "bVar16") (; ";")) (declaration "bool bVar17;" (primitive_type "bool") (identifier "bVar17") (; ";")) (declaration "bool bVar18;" (primitive_type "bool") (identifier "bVar18") (; ";")) (declaration "byte bVar19;" (type_identifier "byte") (identifier "bVar19") (; ";")) (declaration "uint local_38;" (type_identifier "uint") (identifier "local_38") (; ";")) (declaration "char *local_20 [3];" (primitive_type "char") (pointer_declarator "*local_20 [3]" (* "*") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]"))) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" (identifier "bVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0xbb6a9;" (assignment_expression "uStack_14 = 0xbb6a9" (identifier "uStack_14") (= "=") (number_literal "0xbb6a9")) (; ";")) (expression_statement "iVar13 = param_2 + 0x1c;" (assignment_expression "iVar13 = param_2 + 0x1c" (identifier "iVar13") (= "=") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c"))) (; ";")) (expression_statement "iVar6 = FUN_0018a600(iVar13,0x2e,1);" (assignment_expression "iVar6 = FUN_0018a600(iVar13,0x2e,1)" (identifier "iVar6") (= "=") (call_expression "FUN_0018a600(iVar13,0x2e,1)" (identifier "FUN_0018a600") (argument_list "(iVar13,0x2e,1)" (( "(") (identifier "iVar13") (, ",") (number_literal "0x2e") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar1 = param_3 + 0x1c;" (assignment_expression "iVar1 = param_3 + 0x1c" (identifier "iVar1") (= "=") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c"))) (; ";")) (expression_statement "iVar7 = FUN_0018a600(iVar1,0x2e,1);" (assignment_expression "iVar7 = FUN_0018a600(iVar1,0x2e,1)" (identifier "iVar7") (= "=") (call_expression "FUN_0018a600(iVar1,0x2e,1)" (identifier "FUN_0018a600") (argument_list "(iVar1,0x2e,1)" (( "(") (identifier "iVar1") (, ",") (number_literal "0x2e") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "bVar18 = iVar7 == -1 && iVar6 != -1;" (assignment_expression "bVar18 = iVar7 == -1 && iVar6 != -1" (identifier "bVar18") (= "=") (binary_expression "iVar7 == -1 && iVar6 != -1" (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) (&& "&&") (binary_expression "iVar6 != -1" (identifier "iVar6") (!= "!=") (number_literal "-1")))) (; ";")) (expression_statement "local_38 = (uint)bVar18;" (assignment_expression "local_38 = (uint)bVar18" (identifier "local_38") (= "=") (cast_expression "(uint)bVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar18"))) (; ";")) (if_statement "if (bVar18) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (iVar6 == -1 && iVar7 != -1) {\n    return local_38;\n  }" (if "if") (parenthesized_expression "(iVar6 == -1 && iVar7 != -1)" (( "(") (binary_expression "iVar6 == -1 && iVar7 != -1" (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) (&& "&&") (binary_expression "iVar7 != -1" (identifier "iVar7") (!= "!=") (number_literal "-1"))) () ")")) (compound_statement "{\n    return local_38;\n  }" ({ "{") (return_statement "return local_38;" (return "return") (identifier "local_38") (; ";")) (} "}"))) (if_statement "if (iVar6 == -1) {\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }\n  else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    iVar11 = FUN_0018ad60(iVar13,".ctors");\n    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }\n    if (iVar7 != -1) goto LAB_000bb83f;\nLAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");\n    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }\n    bVar18 = iVar6 == -1;\n    iVar7 = iVar6;\n    if (bVar18) goto LAB_000bb83f;\n  }" ({ "{") (expression_statement "iVar11 = FUN_0018ad60(iVar13,".ctors");" (assignment_expression "iVar11 = FUN_0018ad60(iVar13,".ctors")" (identifier "iVar11") (= "=") (call_expression "FUN_0018ad60(iVar13,".ctors")" (identifier "FUN_0018ad60") (argument_list "(iVar13,".ctors")" (( "(") (identifier "iVar13") (, ",") (string_literal "".ctors"" (" """) (string_content ".ctors") (" """)) () ")")))) (; ";")) (if_statement "if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }" (if "if") (parenthesized_expression "((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0))" (( "(") (binary_expression "(iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)" (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)" (( "(") (comma_expression "iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0" (assignment_expression "iVar13 = FUN_0018ad60(iVar13,".dtors")" (identifier "iVar13") (= "=") (call_expression "FUN_0018ad60(iVar13,".dtors")" (identifier "FUN_0018ad60") (argument_list "(iVar13,".dtors")" (( "(") (identifier "iVar13") (, ",") (string_literal "".dtors"" (" """) (string_content ".dtors") (" """)) () ")")))) (, ",") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      sVar5 = *(size_t *)(param_2 + 0x20);\n      if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }\n    }" ({ "{") (expression_statement "sVar5 = *(size_t *)(param_2 + 0x20);" (assignment_expression "sVar5 = *(size_t *)(param_2 + 0x20)" (identifier "sVar5") (= "=") (pointer_expression "*(size_t *)(param_2 + 0x20)" (* "*") (cast_expression "(size_t *)(param_2 + 0x20)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (sVar5 != *(size_t *)(param_3 + 0x20)) {\n        return local_38;\n      }" (if "if") (parenthesized_expression "(sVar5 != *(size_t *)(param_3 + 0x20))" (( "(") (binary_expression "sVar5 != *(size_t *)(param_3 + 0x20)" (identifier "sVar5") (!= "!=") (pointer_expression "*(size_t *)(param_3 + 0x20)" (* "*") (cast_expression "(size_t *)(param_3 + 0x20)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (compound_statement "{\n        return local_38;\n      }" ({ "{") (return_statement "return local_38;" (return "return") (identifier "local_38") (; ";")) (} "}"))) (if_statement "if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return local_38;\n      }" (if "if") (parenthesized_expression "((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)\n         )" (( "(") (binary_expression "(sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)" (parenthesized_expression "(sVar5 != 0)" (( "(") (binary_expression "sVar5 != 0" (identifier "sVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)" (( "(") (comma_expression "iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0" (assignment_expression "iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" (identifier "iVar13") (= "=") (call_expression "memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" (identifier "memcmp") (argument_list "(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5)" (( "(") (pointer_expression "*(void **)(param_2 + 0x1c)" (* "*") (cast_expression "(void **)(param_2 + 0x1c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "*(void **)(param_3 + 0x1c)" (* "*") (cast_expression "(void **)(param_3 + 0x1c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (identifier "sVar5") () ")")))) (, ",") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        return local_38;\n      }" ({ "{") (return_statement "return local_38;" (return "return") (identifier "local_38") (; ";")) (} "}"))) (} "}"))) (if_statement "if (iVar7 != -1) goto LAB_000bb83f;" (if "if") (parenthesized_expression "(iVar7 != -1)" (( "(") (binary_expression "iVar7 != -1" (identifier "iVar7") (!= "!=") (number_literal "-1")) () ")")) (goto_statement "goto LAB_000bb83f;" (goto "goto") (statement_identifier "LAB_000bb83f") (; ";"))) (labeled_statement "LAB_000bb950:\n    iVar13 = FUN_0018ad60(iVar1,".ctors");" (statement_identifier "LAB_000bb950") (: ":") (expression_statement "iVar13 = FUN_0018ad60(iVar1,".ctors");" (assignment_expression "iVar13 = FUN_0018ad60(iVar1,".ctors")" (identifier "iVar13") (= "=") (call_expression "FUN_0018ad60(iVar1,".ctors")" (identifier "FUN_0018ad60") (argument_list "(iVar1,".ctors")" (( "(") (identifier "iVar1") (, ",") (string_literal "".ctors"" (" """) (string_content ".ctors") (" """)) () ")")))) (; ";"))) (if_statement "if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }" (if "if") (parenthesized_expression "((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0))" (( "(") (binary_expression "(iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)" (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)" (( "(") (comma_expression "iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0" (assignment_expression "iVar13 = FUN_0018ad60(iVar1,".dtors")" (identifier "iVar13") (= "=") (call_expression "FUN_0018ad60(iVar1,".dtors")" (identifier "FUN_0018ad60") (argument_list "(iVar1,".dtors")" (( "(") (identifier "iVar1") (, ",") (string_literal "".dtors"" (" """) (string_content ".dtors") (" """)) () ")")))) (, ",") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      sVar5 = *(size_t *)(param_3 + 0x20);\n      if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }\n      if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }\n    }" ({ "{") (expression_statement "sVar5 = *(size_t *)(param_3 + 0x20);" (assignment_expression "sVar5 = *(size_t *)(param_3 + 0x20)" (identifier "sVar5") (= "=") (pointer_expression "*(size_t *)(param_3 + 0x20)" (* "*") (cast_expression "(size_t *)(param_3 + 0x20)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (sVar5 != *(size_t *)(param_2 + 0x20)) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(sVar5 != *(size_t *)(param_2 + 0x20))" (( "(") (binary_expression "sVar5 != *(size_t *)(param_2 + 0x20)" (identifier "sVar5") (!= "!=") (pointer_expression "*(size_t *)(param_2 + 0x20)" (* "*") (cast_expression "(size_t *)(param_2 + 0x20)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if ((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         ) {\n        return 1;\n      }" (if "if") (parenthesized_expression "((sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)\n         )" (( "(") (binary_expression "(sVar5 != 0) &&\n         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)" (parenthesized_expression "(sVar5 != 0)" (( "(") (binary_expression "sVar5 != 0" (identifier "sVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)" (( "(") (comma_expression "iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0" (assignment_expression "iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" (identifier "iVar13") (= "=") (call_expression "memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" (identifier "memcmp") (argument_list "(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5)" (( "(") (pointer_expression "*(void **)(param_3 + 0x1c)" (* "*") (cast_expression "(void **)(param_3 + 0x1c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "*(void **)(param_2 + 0x1c)" (* "*") (cast_expression "(void **)(param_2 + 0x1c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (identifier "sVar5") () ")")))) (, ",") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar18 = iVar6 == -1;" (assignment_expression "bVar18 = iVar6 == -1" (identifier "bVar18") (= "=") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "iVar7 = iVar6;" (assignment_expression "iVar7 = iVar6" (identifier "iVar7") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (bVar18) goto LAB_000bb83f;" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (goto_statement "goto LAB_000bb83f;" (goto "goto") (statement_identifier "LAB_000bb83f") (; ";"))) (} "}")) (else_clause "else {\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" (else "else") (compound_statement "{\n    bVar18 = iVar7 == -1;\n    if (bVar18) goto LAB_000bb950;\n  }" ({ "{") (expression_statement "bVar18 = iVar7 == -1;" (assignment_expression "bVar18 = iVar7 == -1" (identifier "bVar18") (= "=") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if (bVar18) goto LAB_000bb950;" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (goto_statement "goto LAB_000bb950;" (goto "goto") (statement_identifier "LAB_000bb950") (; ";"))) (} "}")))) (expression_statement "bVar16 = iVar7 != -1;" (assignment_expression "bVar16 = iVar7 != -1" (identifier "bVar16") (= "=") (binary_expression "iVar7 != -1" (identifier "iVar7") (!= "!=") (number_literal "-1"))) (; ";")) (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" (identifier "iVar13") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar2 = *(byte **)(param_2 + 0x1c);" (assignment_expression "pbVar2 = *(byte **)(param_2 + 0x1c)" (identifier "pbVar2") (= "=") (pointer_expression "*(byte **)(param_2 + 0x1c)" (* "*") (cast_expression "(byte **)(param_2 + 0x1c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "pbVar14 = (byte *)".ctors.";" (assignment_expression "pbVar14 = (byte *)".ctors."" (identifier "pbVar14") (= "=") (cast_expression "(byte *)".ctors."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".ctors."" (" """) (string_content ".ctors.") (" """)))) (; ";")) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" (identifier "pbVar15") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar18);" (do "do") (compound_statement "{\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar16 = *pbVar14 < *pbVar15;\n    bVar18 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  }" ({ "{") (if_statement "if (iVar13 == 0) break;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" (identifier "bVar16") (= "=") (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (< "<") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" (identifier "bVar18") (= "=") (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (== "==") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" (identifier "pbVar15") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" (identifier "bVar17") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" (identifier "bVar18") (= "=") (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" (( "(") (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar16"))) (; ";")) (if_statement "if (bVar18) {\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\nLAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }\n  }" ({ "{") (labeled_statement "LAB_000bb990:\n    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);" (statement_identifier "LAB_000bb990") (: ":") (expression_statement "uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);" (assignment_expression "uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10)" (identifier "uVar8") (= "=") (call_expression "strtoul((char *)(pbVar2 + 7),local_20,10)" (identifier "strtoul") (argument_list "((char *)(pbVar2 + 7),local_20,10)" (( "(") (cast_expression "(char *)(pbVar2 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar2 + 7)" (( "(") (binary_expression "pbVar2 + 7" (identifier "pbVar2") (+ "+") (number_literal "7")) () ")"))) (, ",") (identifier "local_20") (, ",") (number_literal "10") () ")")))) (; ";"))) (if_statement "if (*local_20[0] == '\0') {\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }\n    else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" (if "if") (parenthesized_expression "(*local_20[0] == '\0')" (( "(") (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" (* "*") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      bVar18 = 0xffff < uVar8;\n      uVar8 = 0xffff - uVar8;\n      bVar16 = uVar8 == 0;\n    }" ({ "{") (expression_statement "bVar18 = 0xffff < uVar8;" (assignment_expression "bVar18 = 0xffff < uVar8" (identifier "bVar18") (= "=") (binary_expression "0xffff < uVar8" (number_literal "0xffff") (< "<") (identifier "uVar8"))) (; ";")) (expression_statement "uVar8 = 0xffff - uVar8;" (assignment_expression "uVar8 = 0xffff - uVar8" (identifier "uVar8") (= "=") (binary_expression "0xffff - uVar8" (number_literal "0xffff") (- "-") (identifier "uVar8"))) (; ";")) (expression_statement "bVar16 = uVar8 == 0;" (assignment_expression "bVar16 = uVar8 == 0" (identifier "bVar16") (= "=") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0"))) (; ";")) (} "}")) (else_clause "else {\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" (else "else") (compound_statement "{\nLAB_000bb7a8:\n      bVar18 = false;\n      uVar8 = 0;\n      bVar16 = true;\n    }" ({ "{") (labeled_statement "LAB_000bb7a8:\n      bVar18 = false;" (statement_identifier "LAB_000bb7a8") (: ":") (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";"))) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar16 = true;" (assignment_expression "bVar16 = true" (identifier "bVar16") (= "=") (true "true")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" (else "else") (compound_statement "{\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb990;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }\nLAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n    bVar18 = false;\n    bVar16 = *local_20[0] == '\0';\n    if (!bVar16) goto LAB_000bb7a8;\n  }" ({ "{") (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" (identifier "iVar13") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar14 = (byte *)".dtors.";" (assignment_expression "pbVar14 = (byte *)".dtors."" (identifier "pbVar14") (= "=") (cast_expression "(byte *)".dtors."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".dtors."" (" """) (string_content ".dtors.") (" """)))) (; ";")) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" (identifier "pbVar15") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" (do "do") (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar13 == 0) break;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" (identifier "bVar17") (= "=") (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (< "<") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" (identifier "bVar18") (= "=") (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (== "==") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" (identifier "pbVar15") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (!bVar17 && !bVar18) == bVar17;" (assignment_expression "bVar18 = (!bVar17 && !bVar18) == bVar17" (identifier "bVar18") (= "=") (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" (( "(") (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" (! "!") (identifier "bVar17")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar17"))) (; ";")) (if_statement "if (bVar18) goto LAB_000bb990;" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (goto_statement "goto LAB_000bb990;" (goto "goto") (statement_identifier "LAB_000bb990") (; ";"))) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" (identifier "iVar13") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar14 = (byte *)".init_array.";" (assignment_expression "pbVar14 = (byte *)".init_array."" (identifier "pbVar14") (= "=") (cast_expression "(byte *)".init_array."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".init_array."" (" """) (string_content ".init_array.") (" """)))) (; ";")) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" (identifier "pbVar15") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" (do "do") (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar13 == 0) break;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" (identifier "bVar16") (= "=") (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (< "<") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" (identifier "bVar18") (= "=") (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (== "==") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" (identifier "pbVar15") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" (identifier "bVar17") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" (identifier "bVar18") (= "=") (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" (( "(") (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar16"))) (; ";")) (if_statement "if (!bVar18) {\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }" (if "if") (parenthesized_expression "(!bVar18)" (( "(") (unary_expression "!bVar18" (! "!") (identifier "bVar18")) () ")")) (compound_statement "{\n      iVar13 = 0xc;\n      pbVar14 = (byte *)".fini_array.";\n      pbVar15 = pbVar2;\n      do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);\n      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;\n      goto LAB_000bb7a8;\n    }" ({ "{") (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" (identifier "iVar13") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar14 = (byte *)".fini_array.";" (assignment_expression "pbVar14 = (byte *)".fini_array."" (identifier "pbVar14") (= "=") (cast_expression "(byte *)".fini_array."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".fini_array."" (" """) (string_content ".fini_array.") (" """)))) (; ";")) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" (identifier "pbVar15") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      } while (bVar18);" (do "do") (compound_statement "{\n        if (iVar13 == 0) break;\n        iVar13 = iVar13 + -1;\n        bVar17 = *pbVar14 < *pbVar15;\n        bVar18 = *pbVar14 == *pbVar15;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar13 == 0) break;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" (identifier "bVar17") (= "=") (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (< "<") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" (identifier "bVar18") (= "=") (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (== "==") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" (identifier "pbVar15") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (if_statement "if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;" (if "if") (parenthesized_expression "((!bVar17 && !bVar18) == bVar17)" (( "(") (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" (( "(") (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" (! "!") (identifier "bVar17")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar17")) () ")")) (goto_statement "goto LAB_000bb782;" (goto "goto") (statement_identifier "LAB_000bb782") (; ";"))) (goto_statement "goto LAB_000bb7a8;" (goto "goto") (statement_identifier "LAB_000bb7a8") (; ";")) (} "}"))) (labeled_statement "LAB_000bb782:\n    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" (statement_identifier "LAB_000bb782") (: ":") (expression_statement "uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" (assignment_expression "uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10)" (identifier "uVar8") (= "=") (call_expression "strtoul((char *)(pbVar2 + 0xc),local_20,10)" (identifier "strtoul") (argument_list "((char *)(pbVar2 + 0xc),local_20,10)" (( "(") (cast_expression "(char *)(pbVar2 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar2 + 0xc)" (( "(") (binary_expression "pbVar2 + 0xc" (identifier "pbVar2") (+ "+") (number_literal "0xc")) () ")"))) (, ",") (identifier "local_20") (, ",") (number_literal "10") () ")")))) (; ";"))) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "bVar16 = *local_20[0] == '\0';" (assignment_expression "bVar16 = *local_20[0] == '\0'" (identifier "bVar16") (= "=") (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" (* "*") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (if_statement "if (!bVar16) goto LAB_000bb7a8;" (if "if") (parenthesized_expression "(!bVar16)" (( "(") (unary_expression "!bVar16" (! "!") (identifier "bVar16")) () ")")) (goto_statement "goto LAB_000bb7a8;" (goto "goto") (statement_identifier "LAB_000bb7a8") (; ";"))) (} "}")))) (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" (identifier "iVar13") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar2 = *(byte **)(param_3 + 0x1c);" (assignment_expression "pbVar2 = *(byte **)(param_3 + 0x1c)" (identifier "pbVar2") (= "=") (pointer_expression "*(byte **)(param_3 + 0x1c)" (* "*") (cast_expression "(byte **)(param_3 + 0x1c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "pbVar14 = (byte *)".ctors.";" (assignment_expression "pbVar14 = (byte *)".ctors."" (identifier "pbVar14") (= "=") (cast_expression "(byte *)".ctors."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".ctors."" (" """) (string_content ".ctors.") (" """)))) (; ";")) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" (identifier "pbVar15") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  } while (bVar16);" (do "do") (compound_statement "{\n    if (iVar13 == 0) break;\n    iVar13 = iVar13 + -1;\n    bVar18 = *pbVar14 < *pbVar15;\n    bVar16 = *pbVar14 == *pbVar15;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n  }" ({ "{") (if_statement "if (iVar13 == 0) break;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *pbVar14 < *pbVar15;" (assignment_expression "bVar18 = *pbVar14 < *pbVar15" (identifier "bVar18") (= "=") (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (< "<") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "bVar16 = *pbVar14 == *pbVar15;" (assignment_expression "bVar16 = *pbVar14 == *pbVar15" (identifier "bVar16") (= "=") (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (== "==") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" (identifier "pbVar15") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")")) (; ";")) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" (identifier "bVar17") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (!bVar18 && !bVar16) == bVar18;" (assignment_expression "bVar18 = (!bVar18 && !bVar16) == bVar18" (identifier "bVar18") (= "=") (binary_expression "(!bVar18 && !bVar16) == bVar18" (parenthesized_expression "(!bVar18 && !bVar16)" (( "(") (binary_expression "!bVar18 && !bVar16" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar16" (! "!") (identifier "bVar16"))) () ")")) (== "==") (identifier "bVar18"))) (; ";")) (if_statement "if (bVar18) {\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }\n  else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\nLAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);\n    if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }\n  }" ({ "{") (labeled_statement "LAB_000bb9c0:\n    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);" (statement_identifier "LAB_000bb9c0") (: ":") (expression_statement "uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);" (assignment_expression "uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10)" (identifier "uVar12") (= "=") (call_expression "strtoul((char *)(pbVar2 + 7),local_20,10)" (identifier "strtoul") (argument_list "((char *)(pbVar2 + 7),local_20,10)" (( "(") (cast_expression "(char *)(pbVar2 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar2 + 7)" (( "(") (binary_expression "pbVar2 + 7" (identifier "pbVar2") (+ "+") (number_literal "7")) () ")"))) (, ",") (identifier "local_20") (, ",") (number_literal "10") () ")")))) (; ";"))) (if_statement "if (*local_20[0] == '\0') {\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }\n    else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" (if "if") (parenthesized_expression "(*local_20[0] == '\0')" (( "(") (binary_expression "*local_20[0] == '\0'" (pointer_expression "*local_20[0]" (* "*") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar9 = 0xffff - uVar12;\nLAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }\n    }" ({ "{") (expression_statement "uVar9 = 0xffff - uVar12;" (assignment_expression "uVar9 = 0xffff - uVar12" (identifier "uVar9") (= "=") (binary_expression "0xffff - uVar12" (number_literal "0xffff") (- "-") (identifier "uVar12"))) (; ";")) (labeled_statement "LAB_000bb82f:\n      if (uVar8 < uVar9) {\n        return 1;\n      }" (statement_identifier "LAB_000bb82f") (: ":") (if_statement "if (uVar8 < uVar9) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(uVar8 < uVar9)" (( "(") (binary_expression "uVar8 < uVar9" (identifier "uVar8") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))) (} "}")) (else_clause "else {\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" (else "else") (compound_statement "{\nLAB_000bb9e7:\n      uVar9 = 0;\n    }" ({ "{") (labeled_statement "LAB_000bb9e7:\n      uVar9 = 0;" (statement_identifier "LAB_000bb9e7") (: ":") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" (else "else") (compound_statement "{\n    iVar13 = 7;\n    pbVar14 = (byte *)".dtors.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar16 = false;\n    bVar18 = (!bVar17 && !bVar18) == bVar17;\n    if (bVar18) goto LAB_000bb9c0;\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".init_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    bVar17 = false;\n    bVar18 = (!bVar16 && !bVar18) == bVar16;\n    if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }\n    iVar13 = 0xc;\n    pbVar14 = (byte *)".fini_array.";\n    pbVar15 = pbVar2;\n    do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);\n    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;\n    uVar9 = 0;\n  }" ({ "{") (expression_statement "iVar13 = 7;" (assignment_expression "iVar13 = 7" (identifier "iVar13") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar14 = (byte *)".dtors.";" (assignment_expression "pbVar14 = (byte *)".dtors."" (identifier "pbVar14") (= "=") (cast_expression "(byte *)".dtors."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".dtors."" (" """) (string_content ".dtors.") (" """)))) (; ";")) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" (identifier "pbVar15") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" (do "do") (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar13 == 0) break;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" (identifier "bVar17") (= "=") (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (< "<") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" (identifier "bVar18") (= "=") (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (== "==") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" (identifier "pbVar15") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (!bVar17 && !bVar18) == bVar17;" (assignment_expression "bVar18 = (!bVar17 && !bVar18) == bVar17" (identifier "bVar18") (= "=") (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" (( "(") (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" (! "!") (identifier "bVar17")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar17"))) (; ";")) (if_statement "if (bVar18) goto LAB_000bb9c0;" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (goto_statement "goto LAB_000bb9c0;" (goto "goto") (statement_identifier "LAB_000bb9c0") (; ";"))) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" (identifier "iVar13") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar14 = (byte *)".init_array.";" (assignment_expression "pbVar14 = (byte *)".init_array."" (identifier "pbVar14") (= "=") (cast_expression "(byte *)".init_array."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".init_array."" (" """) (string_content ".init_array.") (" """)))) (; ";")) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" (identifier "pbVar15") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" (do "do") (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar16 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar13 == 0) break;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar14 < *pbVar15;" (assignment_expression "bVar16 = *pbVar14 < *pbVar15" (identifier "bVar16") (= "=") (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (< "<") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" (identifier "bVar18") (= "=") (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (== "==") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" (identifier "pbVar15") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" (identifier "bVar17") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (!bVar16 && !bVar18) == bVar16;" (assignment_expression "bVar18 = (!bVar16 && !bVar18) == bVar16" (identifier "bVar18") (= "=") (binary_expression "(!bVar16 && !bVar18) == bVar16" (parenthesized_expression "(!bVar16 && !bVar18)" (( "(") (binary_expression "!bVar16 && !bVar18" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar16"))) (; ";")) (if_statement "if (bVar18) {\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }" (if "if") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (compound_statement "{\nLAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);\n      if (*local_20[0] != '\0') goto LAB_000bb9e7;\n      goto LAB_000bb82f;\n    }" ({ "{") (labeled_statement "LAB_000bb804:\n      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" (statement_identifier "LAB_000bb804") (: ":") (expression_statement "uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);" (assignment_expression "uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10)" (identifier "uVar9") (= "=") (call_expression "strtoul((char *)(pbVar2 + 0xc),local_20,10)" (identifier "strtoul") (argument_list "((char *)(pbVar2 + 0xc),local_20,10)" (( "(") (cast_expression "(char *)(pbVar2 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar2 + 0xc)" (( "(") (binary_expression "pbVar2 + 0xc" (identifier "pbVar2") (+ "+") (number_literal "0xc")) () ")"))) (, ",") (identifier "local_20") (, ",") (number_literal "10") () ")")))) (; ";"))) (if_statement "if (*local_20[0] != '\0') goto LAB_000bb9e7;" (if "if") (parenthesized_expression "(*local_20[0] != '\0')" (( "(") (binary_expression "*local_20[0] != '\0'" (pointer_expression "*local_20[0]" (* "*") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000bb9e7;" (goto "goto") (statement_identifier "LAB_000bb9e7") (; ";"))) (goto_statement "goto LAB_000bb82f;" (goto "goto") (statement_identifier "LAB_000bb82f") (; ";")) (} "}"))) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" (identifier "iVar13") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar14 = (byte *)".fini_array.";" (assignment_expression "pbVar14 = (byte *)".fini_array."" (identifier "pbVar14") (= "=") (cast_expression "(byte *)".fini_array."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".fini_array."" (" """) (string_content ".fini_array.") (" """)))) (; ";")) (expression_statement "pbVar15 = pbVar2;" (assignment_expression "pbVar15 = pbVar2" (identifier "pbVar15") (= "=") (identifier "pbVar2")) (; ";")) (do_statement "do {\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    } while (bVar18);" (do "do") (compound_statement "{\n      if (iVar13 == 0) break;\n      iVar13 = iVar13 + -1;\n      bVar17 = *pbVar14 < *pbVar15;\n      bVar18 = *pbVar14 == *pbVar15;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar13 == 0) break;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar17 = *pbVar14 < *pbVar15;" (assignment_expression "bVar17 = *pbVar14 < *pbVar15" (identifier "bVar17") (= "=") (binary_expression "*pbVar14 < *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (< "<") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "bVar18 = *pbVar14 == *pbVar15;" (assignment_expression "bVar18 = *pbVar14 == *pbVar15" (identifier "bVar18") (= "=") (binary_expression "*pbVar14 == *pbVar15" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (== "==") (pointer_expression "*pbVar15" (* "*") (identifier "pbVar15")))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar15 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar15 + (uint)bVar19 * -2" (identifier "pbVar15") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (if_statement "if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;" (if "if") (parenthesized_expression "((!bVar17 && !bVar18) == bVar17)" (( "(") (binary_expression "(!bVar17 && !bVar18) == bVar17" (parenthesized_expression "(!bVar17 && !bVar18)" (( "(") (binary_expression "!bVar17 && !bVar18" (unary_expression "!bVar17" (! "!") (identifier "bVar17")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (== "==") (identifier "bVar17")) () ")")) (goto_statement "goto LAB_000bb804;" (goto "goto") (statement_identifier "LAB_000bb804") (; ";"))) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (uVar9 < uVar8) {\n    return local_38;\n  }" (if "if") (parenthesized_expression "(uVar9 < uVar8)" (( "(") (binary_expression "uVar9 < uVar8" (identifier "uVar9") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n    return local_38;\n  }" ({ "{") (return_statement "return local_38;" (return "return") (identifier "local_38") (; ";")) (} "}"))) (labeled_statement "LAB_000bb83f:\n  uVar9 = *(uint *)(param_2 + 0x14);" (statement_identifier "LAB_000bb83f") (: ":") (expression_statement "uVar9 = *(uint *)(param_2 + 0x14);" (assignment_expression "uVar9 = *(uint *)(param_2 + 0x14)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(param_2 + 0x14)" (* "*") (cast_expression "(uint *)(param_2 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";"))) (expression_statement "uVar3 = *(uint *)(param_3 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_3 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_3 + 0x18)" (* "*") (cast_expression "(uint *)(param_3 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x18)" (( "(") (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (uVar3 == 0xffffffff) {\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }" (if "if") (parenthesized_expression "(uVar3 == 0xffffffff)" (( "(") (binary_expression "uVar3 == 0xffffffff" (identifier "uVar3") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                    \n    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);\n  }" ({ "{") (expression_statement "FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);" (call_expression "FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3)" (identifier "FUN_0005f0b0") (argument_list "("../../gold/output.cc",0xcf5,"input_section",param_3)" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0xcf5") (, ",") (string_literal ""input_section"" (" """) (string_content "input_section") (" """)) (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar4 = *(uint *)(param_3 + 0x14);" (assignment_expression "uVar4 = *(uint *)(param_3 + 0x14)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_3 + 0x14)" (* "*") (cast_expression "(uint *)(param_3 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x14)" (( "(") (binary_expression "param_3 + 0x14" (identifier "param_3") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_38 = (uint)(uVar9 != 0 && uVar4 != 0);" (assignment_expression "local_38 = (uint)(uVar9 != 0 && uVar4 != 0)" (identifier "local_38") (= "=") (call_expression "(uint)(uVar9 != 0 && uVar4 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 != 0 && uVar4 != 0)" (( "(") (binary_expression "uVar9 != 0 && uVar4 != 0" (binary_expression "uVar9 != 0" (identifier "uVar9") (!= "!=") (number_literal "0")) (&& "&&") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0"))) () ")")))) (; ";")) (if_statement "if (uVar9 != 0 && uVar4 != 0) {\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(uVar9 != 0 && uVar4 != 0)" (( "(") (binary_expression "uVar9 != 0 && uVar4 != 0" (binary_expression "uVar9 != 0" (identifier "uVar9") (!= "!=") (number_literal "0")) (&& "&&") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n    if (uVar9 < uVar4) {\n      return local_38;\n    }\n    if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (uVar9 < uVar4) {\n      return local_38;\n    }" (if "if") (parenthesized_expression "(uVar9 < uVar4)" (( "(") (binary_expression "uVar9 < uVar4" (identifier "uVar9") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n      return local_38;\n    }" ({ "{") (return_statement "return local_38;" (return "return") (identifier "local_38") (; ";")) (} "}"))) (if_statement "if (uVar9 >= uVar4 && uVar9 != uVar4) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar9 >= uVar4 && uVar9 != uVar4)" (( "(") (binary_expression "uVar9 >= uVar4 && uVar9 != uVar4" (binary_expression "uVar9 >= uVar4" (identifier "uVar9") (>= ">=") (identifier "uVar4")) (&& "&&") (binary_expression "uVar9 != uVar4" (identifier "uVar9") (!= "!=") (identifier "uVar4"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar9 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar9 = *(uint *)(param_2 + 0x20)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(param_2 + 0x20)" (* "*") (cast_expression "(uint *)(param_2 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_3 + 0x20);" (assignment_expression "uVar4 = *(uint *)(param_3 + 0x20)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_3 + 0x20)" (* "*") (cast_expression "(uint *)(param_3 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" (identifier "uVar10") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (uVar9 <= uVar4) {\n    uVar10 = uVar9;\n  }" (if "if") (parenthesized_expression "(uVar9 <= uVar4)" (( "(") (binary_expression "uVar9 <= uVar4" (identifier "uVar9") (<= "<=") (identifier "uVar4")) () ")")) (compound_statement "{\n    uVar10 = uVar9;\n  }" ({ "{") (expression_statement "uVar10 = uVar9;" (assignment_expression "uVar10 = uVar9" (identifier "uVar10") (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (if_statement "if (((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }" (if "if") (parenthesized_expression "(((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0))" (( "(") (binary_expression "((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))\n     && (uVar10 = uVar9 - uVar4, uVar10 == 0)" (parenthesized_expression "((uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))" (( "(") (binary_expression "(uVar10 == 0) ||\n      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0)" (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0)" (( "(") (comma_expression "uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0" (assignment_expression "uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" (identifier "uVar10") (= "=") (call_expression "memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" (identifier "memcmp") (argument_list "(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10)" (( "(") (pointer_expression "*(void **)(param_2 + 0x1c)" (* "*") (cast_expression "(void **)(param_2 + 0x1c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (pointer_expression "*(void **)(param_3 + 0x1c)" (* "*") (cast_expression "(void **)(param_3 + 0x1c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 0x1c)" (( "(") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (identifier "uVar10") () ")")))) (, ",") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar10 = uVar9 - uVar4, uVar10 == 0)" (( "(") (comma_expression "uVar10 = uVar9 - uVar4, uVar10 == 0" (assignment_expression "uVar10 = uVar9 - uVar4" (identifier "uVar10") (= "=") (binary_expression "uVar9 - uVar4" (identifier "uVar9") (- "-") (identifier "uVar4"))) (, ",") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }\n                    \n    FUN_000b9930();\n  }" ({ "{") (if_statement "if (*(uint *)(param_2 + 0x18) != 0xffffffff) {\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 0x18) != 0xffffffff)" (( "(") (binary_expression "*(uint *)(param_2 + 0x18) != 0xffffffff" (pointer_expression "*(uint *)(param_2 + 0x18)" (* "*") (cast_expression "(uint *)(param_2 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);\n    }" ({ "{") (return_statement "return (uint)(*(uint *)(param_2 + 0x18) < uVar3);" (return "return") (call_expression "(uint)(*(uint *)(param_2 + 0x18) < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_2 + 0x18) < uVar3)" (( "(") (binary_expression "*(uint *)(param_2 + 0x18) < uVar3" (pointer_expression "*(uint *)(param_2 + 0x18)" (* "*") (cast_expression "(uint *)(param_2 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (< "<") (identifier "uVar3")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000b9930();" (call_expression "FUN_000b9930()" (identifier "FUN_000b9930") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return uVar10 >> 0x1f;" (return "return") (binary_expression "uVar10 >> 0x1f" (identifier "uVar10") (>> ">>") (number_literal "0x1f")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: bool operator()(Input_section_sort_init_fini_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 *this_00;
  type_3 *this_01;
  type_4 *var_13;
  type_5 var_19;
  type_5 var_17;
  type_5 var_20;
  size_t var_7;
  char *var_3;
  char *var_2;
  type_5 var_21;
  char *__s;
  type_6 var_14;
  int var_6;
  char *pcVar11;
  type_4 *var_9;
  type_4 *var_10;
  bool var_11;
  bool var_15;
  bool var_16;
  type_4 bVar17;
  type_2 *in_stack_ffffffc4;
  type_7 in_stack_ffffffc8;
  char *in_stack_ffffffcc;
  char *end;
  type_7 uStack_14;
  
  bVar17 = 0;
  uStack_14 = 0xbb6a9;
  this_00 = &s1->section_name_;
  var_3 = (char *)std::string::var_1((type_3 *)this_00,'.',1);
  this_01 = &s2->section_name_;
  var_2 = (char *)std::string::var_1((type_3 *)this_01,'.',1);
  var_16 = var_2 == (char *)0xffffffff && var_3 != (char *)0xffffffff;
  __s = (char *)var_4((int3)((type_5)in_stack_ffffffc8 >> 8),var_16);
  if (var_16) {
    return true;
  }
  if (var_3 == (char *)0xffffffff && var_2 != (char *)0xffffffff) goto LAB_000bb8c3;
  if (var_3 == (char *)0xffffffff) {
    pcVar11 = ".ctors";
    var_6 = std::string::var_5((type_3 *)this_00,".ctors");
    in_stack_ffffffcc = pcVar11;
    if (((var_6 == 0) ||
        (var_6 = std::type_3::var_5((type_3 *)this_00,".dtors"), in_stack_ffffffcc = var_2,
        var_6 == 0)) &&
       ((var_7 = (s1->section_name_)._M_string_length, var_7 != (s2->section_name_)._M_string_length
        || ((var_7 != 0 &&
            (var_6 = var_8((s1->section_name_)._M_dataplus._M_p,
                             (s2->section_name_)._M_dataplus._M_p,var_7), in_stack_ffffffcc = var_2
            , var_6 != 0)))))) goto LAB_000bb8c3;
    if (var_2 == (char *)0xffffffff) goto LAB_000bb950;
  }
  else {
    pcVar11 = ".ctors";
    var_16 = var_2 == (char *)0xffffffff;
    if (var_16) {
LAB_000bb950:
      var_6 = std::string::var_5((type_3 *)this_01,pcVar11);
      if ((var_6 == 0) || (var_6 = std::type_3::var_5((type_3 *)this_01,".dtors"), var_6 == 0))
      {
        var_7 = (s2->section_name_)._M_string_length;
        if (var_7 != (s1->section_name_)._M_string_length) {
          return true;
        }
        if ((var_7 != 0) &&
           (var_6 = var_8((s2->section_name_)._M_dataplus._M_p,
                            (s1->section_name_)._M_dataplus._M_p,var_7), var_6 != 0)) {
          return true;
        }
      }
      var_16 = var_3 == (char *)0xffffffff;
      var_2 = var_3;
      if (var_16) goto LAB_000bb83f;
    }
    var_11 = var_2 != (char *)0xffffffff;
    var_6 = 7;
    var_13 = (type_4 *)(s1->section_name_)._M_dataplus._M_p;
    var_9 = (type_4 *)".ctors.";
    var_10 = var_13;
    do {
      if (var_6 == 0) break;
      var_6 = var_6 + -1;
      var_11 = *var_9 < *var_10;
      var_16 = *var_9 == *var_10;
      var_9 = var_9 + (type_5)bVar17 * -2 + 1;
      var_10 = var_10 + (type_5)bVar17 * -2 + 1;
    } while (var_16);
    var_15 = false;
    var_16 = (!var_11 && !var_16) == var_11;
    if (var_16) {
LAB_000bb990:
      var_14 = var_12((char *)(var_13 + 7),&end,10);
      if (*end == '\0') {
        var_16 = 0xffff < var_14;
        var_2 = (char *)(0xffff - var_14);
        var_11 = var_2 == (char *)0x0;
      }
      else {
LAB_000bb7a8:
        var_16 = false;
        var_2 = (char *)0x0;
        var_11 = true;
      }
    }
    else {
      var_6 = 7;
      var_9 = (type_4 *)".dtors.";
      var_10 = var_13;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_15 = *var_9 < *var_10;
        var_16 = *var_9 == *var_10;
        var_9 = var_9 + (type_5)bVar17 * -2 + 1;
        var_10 = var_10 + (type_5)bVar17 * -2 + 1;
      } while (var_16);
      var_11 = false;
      var_16 = (!var_15 && !var_16) == var_15;
      if (var_16) goto LAB_000bb990;
      var_6 = 0xc;
      var_9 = (type_4 *)".init_array.";
      var_10 = var_13;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_11 = *var_9 < *var_10;
        var_16 = *var_9 == *var_10;
        var_9 = var_9 + (type_5)bVar17 * -2 + 1;
        var_10 = var_10 + (type_5)bVar17 * -2 + 1;
      } while (var_16);
      var_15 = false;
      var_16 = (!var_11 && !var_16) == var_11;
      if (!var_16) {
        var_6 = 0xc;
        var_9 = (type_4 *)".fini_array.";
        var_10 = var_13;
        do {
          if (var_6 == 0) break;
          var_6 = var_6 + -1;
          var_15 = *var_9 < *var_10;
          var_16 = *var_9 == *var_10;
          var_9 = var_9 + (type_5)bVar17 * -2 + 1;
          var_10 = var_10 + (type_5)bVar17 * -2 + 1;
        } while (var_16);
        if ((!var_15 && !var_16) == var_15) goto LAB_000bb782;
        goto LAB_000bb7a8;
      }
LAB_000bb782:
      var_2 = (char *)var_12((char *)(var_13 + 0xc),&end,10);
      var_16 = false;
      var_11 = *end == '\0';
      if (!var_11) goto LAB_000bb7a8;
    }
    var_6 = 7;
    var_13 = (type_4 *)(s2->section_name_)._M_dataplus._M_p;
    var_9 = (type_4 *)".ctors.";
    var_10 = var_13;
    do {
      if (var_6 == 0) break;
      var_6 = var_6 + -1;
      var_16 = *var_9 < *var_10;
      var_11 = *var_9 == *var_10;
      var_9 = var_9 + (type_5)bVar17 * -2 + 1;
      var_10 = var_10 + (type_5)bVar17 * -2 + 1;
    } while (var_11);
    var_15 = false;
    var_16 = (!var_16 && !var_11) == var_16;
    if (var_16) {
LAB_000bb9c0:
      var_14 = var_12((char *)(var_13 + 7),&end,10);
      if (*end == '\0') {
        var_3 = (char *)(0xffff - var_14);
LAB_000bb82f:
        in_stack_ffffffcc = var_2;
        if (var_2 < var_3) {
          return true;
        }
      }
      else {
LAB_000bb9e7:
        var_3 = (char *)0x0;
        in_stack_ffffffcc = var_2;
      }
    }
    else {
      var_6 = 7;
      var_9 = (type_4 *)".dtors.";
      var_10 = var_13;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_15 = *var_9 < *var_10;
        var_16 = *var_9 == *var_10;
        var_9 = var_9 + (type_5)bVar17 * -2 + 1;
        var_10 = var_10 + (type_5)bVar17 * -2 + 1;
      } while (var_16);
      var_11 = false;
      var_16 = (!var_15 && !var_16) == var_15;
      if (var_16) goto LAB_000bb9c0;
      var_6 = 0xc;
      var_9 = (type_4 *)".init_array.";
      var_10 = var_13;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_11 = *var_9 < *var_10;
        var_16 = *var_9 == *var_10;
        var_9 = var_9 + (type_5)bVar17 * -2 + 1;
        var_10 = var_10 + (type_5)bVar17 * -2 + 1;
      } while (var_16);
      var_15 = false;
      var_16 = (!var_11 && !var_16) == var_11;
      if (var_16) {
LAB_000bb804:
        var_3 = (char *)var_12((char *)(var_13 + 0xc),&end,10);
        if (*end != '\0') goto LAB_000bb9e7;
        goto LAB_000bb82f;
      }
      var_6 = 0xc;
      var_9 = (type_4 *)".fini_array.";
      var_10 = var_13;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_15 = *var_9 < *var_10;
        var_16 = *var_9 == *var_10;
        var_9 = var_9 + (type_5)bVar17 * -2 + 1;
        var_10 = var_10 + (type_5)bVar17 * -2 + 1;
      } while (var_16);
      if ((!var_15 && !var_16) == var_15) goto LAB_000bb804;
      var_3 = (char *)0x0;
    }
    if (var_3 < var_2) goto LAB_000bb8c3;
  }
LAB_000bb83f:
  var_19 = (s1->input_section_).section_order_index_;
  var_17 = s2->index_;
  if (var_17 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
    var_18("../../gold/output.cc",0xcf5,"input_section");
  }
  var_20 = (s2->input_section_).section_order_index_;
  __s = (char *)var_4((int3)((type_5)__s >> 8),var_19 != 0 && var_20 != 0);
  if (var_19 != 0 && var_20 != 0) {
    if (var_19 < var_20) goto LAB_000bb8c3;
    if (var_19 >= var_20 && var_19 != var_20) {
      __s = (char *)0x0;
      goto LAB_000bb8c3;
    }
  }
  var_19 = (s1->section_name_)._M_string_length;
  var_20 = (s2->section_name_)._M_string_length;
  var_21 = var_20;
  if (var_19 <= var_20) {
    var_21 = var_19;
  }
  if (((var_21 == 0) ||
      (var_21 = var_8((s1->section_name_)._M_dataplus._M_p,(s2->section_name_)._M_dataplus._M_p,
                      var_21), var_21 == 0)) && (var_21 = var_19 - var_20, var_21 == 0)) {
    if (s1->index_ != 0xffffffff) {
      return s1->index_ < var_17;
    }
                    /* WARNING: Subroutine does not return */
    Input_section_sort_entry::var_22(in_stack_ffffffc4,__s,(int)in_stack_ffffffcc);
  }
  __s = (char *)(var_21 >> 0x1f);
LAB_000bb8c3:
  return (bool)(char)__s;
}


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

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

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

{
  int iVar1;
  byte *pbVar2;
  uint uVar3;
  uint uVar4;
  size_t sVar5;
  int iVar6;
  int iVar7;
  ulong uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  ulong uVar12;
  int iVar13;
  byte *pbVar14;
  byte *pbVar15;
  bool bVar16;
  bool bVar17;
  bool bVar18;
  byte bVar19;
  uint local_38;
  char *local_20 [3];
  undefined4 uStack_14;
  
  bVar19 = 0;
  uStack_14 = 0xbb6a9;
  iVar13 = param_2 + 0x1c;
  iVar6 = FUN_0018a600(iVar13,0x2e,1);
  iVar1 = param_3 + 0x1c;
  iVar7 = FUN_0018a600(iVar1,0x2e,1);
  bVar18 = iVar7 == -1 && iVar6 != -1;
  local_38 = (uint)bVar18;
  if (bVar18) {
    return 1;
  }
  if (iVar6 == -1 && iVar7 != -1) {
    return local_38;
  }
  if (iVar6 == -1) {
    iVar11 = FUN_0018ad60(iVar13,".ctors");
    if ((iVar11 == 0) || (iVar13 = FUN_0018ad60(iVar13,".dtors"), iVar13 == 0)) {
      sVar5 = *(size_t *)(param_2 + 0x20);
      if (sVar5 != *(size_t *)(param_3 + 0x20)) {
        return local_38;
      }
      if ((sVar5 != 0) &&
         (iVar13 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),sVar5), iVar13 != 0)
         ) {
        return local_38;
      }
    }
    if (iVar7 != -1) goto LAB_000bb83f;
LAB_000bb950:
    iVar13 = FUN_0018ad60(iVar1,".ctors");
    if ((iVar13 == 0) || (iVar13 = FUN_0018ad60(iVar1,".dtors"), iVar13 == 0)) {
      sVar5 = *(size_t *)(param_3 + 0x20);
      if (sVar5 != *(size_t *)(param_2 + 0x20)) {
        return 1;
      }
      if ((sVar5 != 0) &&
         (iVar13 = memcmp(*(void **)(param_3 + 0x1c),*(void **)(param_2 + 0x1c),sVar5), iVar13 != 0)
         ) {
        return 1;
      }
    }
    bVar18 = iVar6 == -1;
    iVar7 = iVar6;
    if (bVar18) goto LAB_000bb83f;
  }
  else {
    bVar18 = iVar7 == -1;
    if (bVar18) goto LAB_000bb950;
  }
  bVar16 = iVar7 != -1;
  iVar13 = 7;
  pbVar2 = *(byte **)(param_2 + 0x1c);
  pbVar14 = (byte *)".ctors.";
  pbVar15 = pbVar2;
  do {
    if (iVar13 == 0) break;
    iVar13 = iVar13 + -1;
    bVar16 = *pbVar14 < *pbVar15;
    bVar18 = *pbVar14 == *pbVar15;
    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
  } while (bVar18);
  bVar17 = false;
  bVar18 = (!bVar16 && !bVar18) == bVar16;
  if (bVar18) {
LAB_000bb990:
    uVar8 = strtoul((char *)(pbVar2 + 7),local_20,10);
    if (*local_20[0] == '\0') {
      bVar18 = 0xffff < uVar8;
      uVar8 = 0xffff - uVar8;
      bVar16 = uVar8 == 0;
    }
    else {
LAB_000bb7a8:
      bVar18 = false;
      uVar8 = 0;
      bVar16 = true;
    }
  }
  else {
    iVar13 = 7;
    pbVar14 = (byte *)".dtors.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar17 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    bVar16 = false;
    bVar18 = (!bVar17 && !bVar18) == bVar17;
    if (bVar18) goto LAB_000bb990;
    iVar13 = 0xc;
    pbVar14 = (byte *)".init_array.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar16 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    bVar17 = false;
    bVar18 = (!bVar16 && !bVar18) == bVar16;
    if (!bVar18) {
      iVar13 = 0xc;
      pbVar14 = (byte *)".fini_array.";
      pbVar15 = pbVar2;
      do {
        if (iVar13 == 0) break;
        iVar13 = iVar13 + -1;
        bVar17 = *pbVar14 < *pbVar15;
        bVar18 = *pbVar14 == *pbVar15;
        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
        pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
      } while (bVar18);
      if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb782;
      goto LAB_000bb7a8;
    }
LAB_000bb782:
    uVar8 = strtoul((char *)(pbVar2 + 0xc),local_20,10);
    bVar18 = false;
    bVar16 = *local_20[0] == '\0';
    if (!bVar16) goto LAB_000bb7a8;
  }
  iVar13 = 7;
  pbVar2 = *(byte **)(param_3 + 0x1c);
  pbVar14 = (byte *)".ctors.";
  pbVar15 = pbVar2;
  do {
    if (iVar13 == 0) break;
    iVar13 = iVar13 + -1;
    bVar18 = *pbVar14 < *pbVar15;
    bVar16 = *pbVar14 == *pbVar15;
    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
    pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
  } while (bVar16);
  bVar17 = false;
  bVar18 = (!bVar18 && !bVar16) == bVar18;
  if (bVar18) {
LAB_000bb9c0:
    uVar12 = strtoul((char *)(pbVar2 + 7),local_20,10);
    if (*local_20[0] == '\0') {
      uVar9 = 0xffff - uVar12;
LAB_000bb82f:
      if (uVar8 < uVar9) {
        return 1;
      }
    }
    else {
LAB_000bb9e7:
      uVar9 = 0;
    }
  }
  else {
    iVar13 = 7;
    pbVar14 = (byte *)".dtors.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar17 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    bVar16 = false;
    bVar18 = (!bVar17 && !bVar18) == bVar17;
    if (bVar18) goto LAB_000bb9c0;
    iVar13 = 0xc;
    pbVar14 = (byte *)".init_array.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar16 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    bVar17 = false;
    bVar18 = (!bVar16 && !bVar18) == bVar16;
    if (bVar18) {
LAB_000bb804:
      uVar9 = strtoul((char *)(pbVar2 + 0xc),local_20,10);
      if (*local_20[0] != '\0') goto LAB_000bb9e7;
      goto LAB_000bb82f;
    }
    iVar13 = 0xc;
    pbVar14 = (byte *)".fini_array.";
    pbVar15 = pbVar2;
    do {
      if (iVar13 == 0) break;
      iVar13 = iVar13 + -1;
      bVar17 = *pbVar14 < *pbVar15;
      bVar18 = *pbVar14 == *pbVar15;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      pbVar15 = pbVar15 + (uint)bVar19 * -2 + 1;
    } while (bVar18);
    if ((!bVar17 && !bVar18) == bVar17) goto LAB_000bb804;
    uVar9 = 0;
  }
  if (uVar9 < uVar8) {
    return local_38;
  }
LAB_000bb83f:
  uVar9 = *(uint *)(param_2 + 0x14);
  uVar3 = *(uint *)(param_3 + 0x18);
  if (uVar3 == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0("../../gold/output.cc",0xcf5,"input_section",param_3);
  }
  uVar4 = *(uint *)(param_3 + 0x14);
  local_38 = (uint)(uVar9 != 0 && uVar4 != 0);
  if (uVar9 != 0 && uVar4 != 0) {
    if (uVar9 < uVar4) {
      return local_38;
    }
    if (uVar9 >= uVar4 && uVar9 != uVar4) {
      return 0;
    }
  }
  uVar9 = *(uint *)(param_2 + 0x20);
  uVar4 = *(uint *)(param_3 + 0x20);
  uVar10 = uVar4;
  if (uVar9 <= uVar4) {
    uVar10 = uVar9;
  }
  if (((uVar10 == 0) ||
      (uVar10 = memcmp(*(void **)(param_2 + 0x1c),*(void **)(param_3 + 0x1c),uVar10), uVar10 == 0))
     && (uVar10 = uVar9 - uVar4, uVar10 == 0)) {
    if (*(uint *)(param_2 + 0x18) != 0xffffffff) {
      return (uint)(*(uint *)(param_2 + 0x18) < uVar3);
    }
                    /* WARNING: Subroutine does not return */
    FUN_000b9930();
  }
  return uVar10 >> 0x1f;
}

