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

int size_forward1(void *P_x,void *P_y)

{
  char cVar1;
  bfd_section *pbVar2;
  bfd_section *pbVar3;
  uint uVar4;
  uint uVar5;
  char *__haystack;
  bool bVar6;
  size_t ynl;
  asymbol *paVar7;
  asymbol *paVar8;
  uint uVar9;
  char *pcVar10;
  char *pcVar11;
  size_t sVar12;
  uint uVar13;
  int iVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  char *pcVar19;
  byte bVar20;
  
  bVar20 = 0;
  paVar7 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);
  paVar8 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);
  if ((paVar7 == (asymbol *)0x0) || (paVar8 == (asymbol *)0x0)) {
                    /* WARNING: Subroutine does not return */
    bfd_fatal(sort_bfd->filename);
  }
  pbVar2 = paVar7->section;
  pbVar3 = paVar8->section;
  if ((pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)) ||
     (pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0))) {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  uVar13 = (uint)pbVar2->vma;
  uVar16 = *(uint *)((int)&pbVar2->vma + 4);
  uVar17 = uVar13 + (int)paVar7->value;
  uVar15 = uVar16 + *(int *)((int)&paVar7->value + 4) + (uint)CARRY4(uVar13,(uint)paVar7->value);
  uVar4 = *(uint *)((int)&pbVar3->vma + 4);
  uVar5 = (uint)pbVar3->vma;
  uVar9 = uVar5 + (int)paVar8->value;
  uVar18 = uVar4 + *(int *)((int)&paVar8->value + 4) + (uint)CARRY4(uVar5,(uint)paVar8->value);
  if (uVar15 != uVar18 || uVar17 != uVar9) {
    return (uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2 + -1;
  }
  if (uVar16 != uVar4 || uVar13 != uVar5) {
    return (uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2 + -1;
  }
  pcVar19 = paVar7->name;
  __haystack = paVar8->name;
  pcVar10 = strstr(pcVar19,"gnu_compiled");
  pcVar11 = strstr(__haystack,"gnu_compiled");
  if (pcVar10 == (char *)0x0) {
    pcVar10 = strstr(pcVar19,"gcc2_compiled");
    if ((pcVar11 == (char *)0x0) &&
       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))
    goto joined_r0x00013322;
    if (pcVar10 == (char *)0x0) {
      return 1;
    }
  }
  else if (pcVar11 == (char *)0x0) {
    pcVar10 = strstr(__haystack,"gcc2_compiled");
joined_r0x00013322:
    if (pcVar10 != (char *)0x0) {
      return -1;
    }
  }
  if (((paVar7->flags & 0x4000) == 0) &&
     (((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||
      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))))) {
    if ((paVar8->flags & 0x4000) != 0) {
      return 1;
    }
    uVar16 = 0xffffffff;
    pcVar19 = __haystack;
    do {
      if (uVar16 == 0) break;
      uVar16 = uVar16 - 1;
      cVar1 = *pcVar19;
      pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;
    } while (cVar1 != '\0');
    uVar13 = ~uVar16 - 1;
    if ((uVar13 < 3) || (__haystack[~uVar16 - 3] != '.')) goto LAB_000132b7;
    bVar6 = false;
  }
  else {
    if ((paVar8->flags & 0x4000) != 0) goto LAB_000132b7;
    uVar13 = strlen(__haystack);
    if (uVar13 < 3) {
      return -1;
    }
    if (__haystack[uVar13 - 2] != '.') {
      return -1;
    }
    bVar6 = true;
  }
  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {
    if (!bVar6) {
      return 1;
    }
  }
  else if (bVar6) {
    return -1;
  }
LAB_000132b7:
  iVar14 = non_numeric_forward(P_x,P_y);
  return iVar14;
}



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

int FUN_00013020(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined *puVar2;
  undefined *puVar3;
  uint uVar4;
  uint uVar5;
  char *__haystack;
  bool bVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  char *pcVar10;
  char *pcVar11;
  size_t sVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  char *pcVar18;
  byte bVar19;
  
  bVar19 = 0;
  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);
  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);
  if ((iVar7 == 0) || (iVar8 == 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_00015650(*DAT_0001d3cc);
  }
  puVar2 = *(undefined **)(iVar7 + 0x14);
  puVar3 = *(undefined **)(iVar8 + 0x14);
  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||
     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  uVar13 = *(uint *)(puVar2 + 0x1c);
  uVar15 = *(uint *)(puVar2 + 0x20);
  uVar16 = uVar13 + *(uint *)(iVar7 + 8);
  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));
  uVar4 = *(uint *)(puVar3 + 0x20);
  uVar5 = *(uint *)(puVar3 + 0x1c);
  uVar9 = uVar5 + *(uint *)(iVar8 + 8);
  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));
  if (uVar14 != uVar17 || uVar16 != uVar9) {
    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;
  }
  if (uVar15 != uVar4 || uVar13 != uVar5) {
    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;
  }
  pcVar18 = *(char **)(iVar7 + 4);
  __haystack = *(char **)(iVar8 + 4);
  pcVar10 = strstr(pcVar18,"gnu_compiled");
  pcVar11 = strstr(__haystack,"gnu_compiled");
  if (pcVar10 == (char *)0x0) {
    pcVar10 = strstr(pcVar18,"gcc2_compiled");
    if ((pcVar11 == (char *)0x0) &&
       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))
    goto joined_r0x00013322;
    if (pcVar10 == (char *)0x0) {
      return 1;
    }
  }
  else if (pcVar11 == (char *)0x0) {
    pcVar10 = strstr(__haystack,"gcc2_compiled");
joined_r0x00013322:
    if (pcVar10 != (char *)0x0) {
      return -1;
    }
  }
  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&
     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||
      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {
    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {
      return 1;
    }
    uVar15 = 0xffffffff;
    pcVar18 = __haystack;
    do {
      if (uVar15 == 0) break;
      uVar15 = uVar15 - 1;
      cVar1 = *pcVar18;
      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;
    } while (cVar1 != '\0');
    uVar13 = ~uVar15 - 1;
    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;
    bVar6 = false;
  }
  else {
    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;
    uVar13 = strlen(__haystack);
    if (uVar13 < 3) {
      return -1;
    }
    if (__haystack[uVar13 - 2] != '.') {
      return -1;
    }
    bVar6 = true;
  }
  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {
    if (!bVar6) {
      return 1;
    }
  }
  else if (bVar6) {
    return -1;
  }
LAB_000132b7:
  iVar7 = FUN_00012df0();
  return iVar7;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00012a60
ADD EBX,0x9fd7
SUB ESP,0x3c
MOV EDI,dword ptr [ESP + 0x50]
MOV ESI,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x28],EDI
MOV EAX,dword ptr [EBX + 0x3cc]
MOV dword ptr [ESP + 0x2c],ESI
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [EBX + 0x3c4]
PUSH EDI
PUSH dword ptr [EBX + 0x3c8]
PUSH EAX
CALL dword ptr [EDX + 0x13c]
MOV EBP,EAX
MOV EAX,dword ptr [EBX + 0x3cc]
MOV EDX,dword ptr [EAX + 0x4]
PUSH dword ptr [EBX + 0x3c0]
PUSH ESI
PUSH dword ptr [EBX + 0x3c8]
PUSH EAX
CALL dword ptr [EDX + 0x13c]
MOV dword ptr [ESP + 0x2c],EAX
ADD ESP,0x20
TEST EBP,EBP
JZ 0x0001332d
TEST EAX,EAX
JZ 0x0001332d
MOV EDX,dword ptr [EBX + 0xffffffec]
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [EBP + 0x14]
ADD EDX,0xc0
MOV EAX,dword ptr [EAX + 0x14]
CMP ECX,EDX
JZ 0x00012590
CMP EAX,EDX
JZ 0x00012590
MOV EDX,dword ptr [ECX + 0x1c]
MOV ECX,dword ptr [ECX + 0x20]
MOV dword ptr [ESP + 0x10],EDX
ADD EDX,dword ptr [EBP + 0x8]
MOV dword ptr [ESP + 0x14],ECX
ADC ECX,dword ptr [EBP + 0xc]
MOV ESI,EDX
MOV EDI,ECX
MOV EDX,dword ptr [EAX + 0x20]
MOV ECX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x20],ESI
MOV EAX,dword ptr [EAX + 0x1c]
MOV dword ptr [ESP + 0x24],EDI
MOV dword ptr [ESP + 0x1c],EDX
MOV dword ptr [ESP + 0x18],EAX
ADD EAX,dword ptr [ECX + 0x8]
ADC EDX,dword ptr [ECX + 0xc]
MOV ECX,ESI
MOV ESI,EDI
XOR ECX,EAX
XOR ESI,EDX
OR ESI,ECX
JNZ 0x00013140
MOV EDX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x10]
MOV EDI,dword ptr [ESP + 0x14]
XOR EAX,EDX
XOR EDI,ECX
OR EDI,EAX
JZ 0x00013160
MOV EAX,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [ESP + 0x1c]
CMP EBX,EAX
MOV EDI,ESI
SBB EDI,EDX
SETNC AL
MOVZX EAX,AL
LEA EAX,[EAX + EAX*0x1 + -0x1]
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP + 0x20]
MOV EBP,dword ptr [ESP + 0x24]
CMP EDI,EAX
MOV EDI,EBP
SBB EDI,EDX
SETNC AL
ADD ESP,0x3c
MOVZX EAX,AL
POP EBX
POP ESI
LEA EAX,[EAX + EAX*0x1 + -0x1]
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [EBP + 0x4]
SUB ESP,0x8
LEA ESI,[EBX + 0xffffb02b]
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x18],EAX
PUSH ESI
PUSH EDI
CALL 0x00012050
POP EDX
POP ECX
MOV dword ptr [ESP + 0x20],EAX
PUSH ESI
PUSH dword ptr [ESP + 0x1c]
CALL 0x00012050
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x18]
MOV ESI,EAX
TEST EDX,EDX
JZ 0x00013220
TEST EAX,EAX
JZ 0x000132d8
TEST byte ptr [EBP + 0x11],0x40
JNZ 0x00013260
SUB ESP,0xc
PUSH EDI
CALL 0x000122f0
ADD ESP,0x10
CMP EAX,0x2
JBE 0x000131e0
CMP byte ptr [EDI + EAX*0x1 + -0x2],0x2e
JNZ 0x000131e0
MOVZX EAX,byte ptr [EDI + EAX*0x1 + -0x1]
CMP AL,0x6f
JZ 0x00013260
CMP AL,0x61
JZ 0x00013260
NOP
MOV EAX,dword ptr [ESP + 0xc]
TEST byte ptr [EAX + 0x11],0x40
JNZ 0x0001324d
MOV EDI,dword ptr [ESP + 0x10]
XOR EAX,EAX
OR ECX,0xffffffff
SCASB.REPNE ES:EDI
MOV EAX,ECX
NOT EAX
SUB EAX,0x1
CMP EAX,0x2
JBE 0x000132b7
MOV EDI,dword ptr [ESP + 0x10]
CMP byte ptr [EDI + EAX*0x1 + -0x2],0x2e
JNZ 0x000132b7
XOR EDX,EDX
JMP 0x0001328e
SUB ESP,0x8
LEA ECX,[EBX + 0xffffb038]
PUSH ECX
MOV dword ptr [ESP + 0x24],ECX
PUSH EDI
CALL 0x00012050
ADD ESP,0x10
TEST ESI,ESI
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,EAX
JZ 0x00013300
TEST EDX,EDX
JNZ 0x000131a7
ADD ESP,0x3c
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
TEST byte ptr [EAX + 0x11],0x40
JNZ 0x000132b7
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x000122f0
ADD ESP,0x10
CMP EAX,0x2
JBE 0x000132a8
MOV EDI,dword ptr [ESP + 0x10]
CMP byte ptr [EDI + EAX*0x1 + -0x2],0x2e
JNZ 0x000132a8
MOV EDX,0x1
MOV EDI,dword ptr [ESP + 0x10]
MOVZX EAX,byte ptr [EDI + EAX*0x1 + -0x1]
CMP AL,0x6f
JZ 0x000132b2
CMP AL,0x61
JZ 0x000132b2
TEST EDX,EDX
JZ 0x000132b7
LEA ESI,[ESI]
NOP
MOV EAX,0xffffffff
JMP 0x00013137
CMP EDX,0x1
JNZ 0x0001324d
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x50],EAX
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x00012df0
SUB ESP,0x8
LEA EAX,[EBX + 0xffffb038]
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00012050
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000132a8
JMP 0x000131a7
MOV dword ptr [ESP + 0x18],EAX
SUB ESP,0x8
PUSH ECX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00012050
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JNZ 0x00013245
TEST EDX,EDX
JZ 0x000131a7
JMP 0x000132a8
MOV EAX,dword ptr [EBX + 0x3cc]
SUB ESP,0xc
PUSH dword ptr [EAX]
CALL 0x00015650
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_00013020(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  char *pcVar18;\n  byte bVar19;\n  \n  bVar19 = 0;\n  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);\n  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);\n  if ((iVar7 == 0) || (iVar8 == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00015650(*DAT_0001d3cc);\n  }\n  puVar2 = *(undefined **)(iVar7 + 0x14);\n  puVar3 = *(undefined **)(iVar8 + 0x14);\n  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  uVar13 = *(uint *)(puVar2 + 0x1c);\n  uVar15 = *(uint *)(puVar2 + 0x20);\n  uVar16 = uVar13 + *(uint *)(iVar7 + 8);\n  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));\n  uVar4 = *(uint *)(puVar3 + 0x20);\n  uVar5 = *(uint *)(puVar3 + 0x1c);\n  uVar9 = uVar5 + *(uint *)(iVar8 + 8);\n  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));\n  if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }\n  if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }\n  pcVar18 = *(char **)(iVar7 + 4);\n  __haystack = *(char **)(iVar8 + 4);\n  pcVar10 = strstr(pcVar18,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar7 = FUN_00012df0();\n  return iVar7;\n}\n\n" comment (function_definition "int FUN_00013020(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  char *pcVar18;\n  byte bVar19;\n  \n  bVar19 = 0;\n  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);\n  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);\n  if ((iVar7 == 0) || (iVar8 == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00015650(*DAT_0001d3cc);\n  }\n  puVar2 = *(undefined **)(iVar7 + 0x14);\n  puVar3 = *(undefined **)(iVar8 + 0x14);\n  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  uVar13 = *(uint *)(puVar2 + 0x1c);\n  uVar15 = *(uint *)(puVar2 + 0x20);\n  uVar16 = uVar13 + *(uint *)(iVar7 + 8);\n  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));\n  uVar4 = *(uint *)(puVar3 + 0x20);\n  uVar5 = *(uint *)(puVar3 + 0x1c);\n  uVar9 = uVar5 + *(uint *)(iVar8 + 8);\n  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));\n  if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }\n  if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }\n  pcVar18 = *(char **)(iVar7 + 4);\n  __haystack = *(char **)(iVar8 + 4);\n  pcVar10 = strstr(pcVar18,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar7 = FUN_00012df0();\n  return iVar7;\n}" primitive_type (function_declarator "FUN_00013020(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  char *pcVar18;\n  byte bVar19;\n  \n  bVar19 = 0;\n  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);\n  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);\n  if ((iVar7 == 0) || (iVar8 == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00015650(*DAT_0001d3cc);\n  }\n  puVar2 = *(undefined **)(iVar7 + 0x14);\n  puVar3 = *(undefined **)(iVar8 + 0x14);\n  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  uVar13 = *(uint *)(puVar2 + 0x1c);\n  uVar15 = *(uint *)(puVar2 + 0x20);\n  uVar16 = uVar13 + *(uint *)(iVar7 + 8);\n  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));\n  uVar4 = *(uint *)(puVar3 + 0x20);\n  uVar5 = *(uint *)(puVar3 + 0x1c);\n  uVar9 = uVar5 + *(uint *)(iVar8 + 8);\n  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));\n  if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }\n  if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }\n  pcVar18 = *(char **)(iVar7 + 4);\n  __haystack = *(char **)(iVar8 + 4);\n  pcVar10 = strstr(pcVar18,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar7 = FUN_00012df0();\n  return iVar7;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "byte bVar19;" type_identifier identifier ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);" (assignment_expression "iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" identifier = (call_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" (parenthesized_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))" ( (pointer_expression "**(code **)(DAT_0001d3cc[1] + 0x13c)" * (pointer_expression "*(code **)(DAT_0001d3cc[1] + 0x13c)" * (cast_expression "(code **)(DAT_0001d3cc[1] + 0x13c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0001d3cc[1] + 0x13c)" ( (binary_expression "DAT_0001d3cc[1] + 0x13c" (subscript_expression "DAT_0001d3cc[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);" (assignment_expression "iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" identifier = (call_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" (parenthesized_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))" ( (pointer_expression "**(code **)(DAT_0001d3cc[1] + 0x13c)" * (pointer_expression "*(code **)(DAT_0001d3cc[1] + 0x13c)" * (cast_expression "(code **)(DAT_0001d3cc[1] + 0x13c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0001d3cc[1] + 0x13c)" ( (binary_expression "DAT_0001d3cc[1] + 0x13c" (subscript_expression "DAT_0001d3cc[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((iVar7 == 0) || (iVar8 == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00015650(*DAT_0001d3cc);\n  }" if (parenthesized_expression "((iVar7 == 0) || (iVar8 == 0))" ( (binary_expression "(iVar7 == 0) || (iVar8 == 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00015650(*DAT_0001d3cc);\n  }" { comment (expression_statement "FUN_00015650(*DAT_0001d3cc);" (call_expression "FUN_00015650(*DAT_0001d3cc)" identifier (argument_list "(*DAT_0001d3cc)" ( (pointer_expression "*DAT_0001d3cc" * identifier) ))) ;) })) (expression_statement "puVar2 = *(undefined **)(iVar7 + 0x14);" (assignment_expression "puVar2 = *(undefined **)(iVar7 + 0x14)" identifier = (pointer_expression "*(undefined **)(iVar7 + 0x14)" * (cast_expression "(undefined **)(iVar7 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = *(undefined **)(iVar8 + 0x14);" (assignment_expression "puVar3 = *(undefined **)(iVar8 + 0x14)" identifier = (pointer_expression "*(undefined **)(iVar8 + 0x14)" * (cast_expression "(undefined **)(iVar8 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" if (parenthesized_expression "((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0))" ( (binary_expression "(puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)" (parenthesized_expression "(puVar2 == PTR__bfd_std_section_0001cfec + 0xc0)" ( (binary_expression "puVar2 == PTR__bfd_std_section_0001cfec + 0xc0" identifier == (binary_expression "PTR__bfd_std_section_0001cfec + 0xc0" identifier + number_literal)) )) || (parenthesized_expression "(puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)" ( (binary_expression "puVar3 == PTR__bfd_std_section_0001cfec + 0xc0" identifier == (binary_expression "PTR__bfd_std_section_0001cfec + 0xc0" identifier + number_literal)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar13 = *(uint *)(puVar2 + 0x1c);" (assignment_expression "uVar13 = *(uint *)(puVar2 + 0x1c)" identifier = (pointer_expression "*(uint *)(puVar2 + 0x1c)" * (cast_expression "(uint *)(puVar2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1c)" ( (binary_expression "puVar2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(uint *)(puVar2 + 0x20);" (assignment_expression "uVar15 = *(uint *)(puVar2 + 0x20)" identifier = (pointer_expression "*(uint *)(puVar2 + 0x20)" * (cast_expression "(uint *)(puVar2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x20)" ( (binary_expression "puVar2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = uVar13 + *(uint *)(iVar7 + 8);" (assignment_expression "uVar16 = uVar13 + *(uint *)(iVar7 + 8)" identifier = (binary_expression "uVar13 + *(uint *)(iVar7 + 8)" identifier + (pointer_expression "*(uint *)(iVar7 + 8)" * (cast_expression "(uint *)(iVar7 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))))) ;) (expression_statement "uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));" (assignment_expression "uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" identifier = (binary_expression "uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" (binary_expression "uVar15 + *(int *)(iVar7 + 0xc)" identifier + (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar13,*(uint *)(iVar7 + 8))" identifier (argument_list "(uVar13,*(uint *)(iVar7 + 8))" ( identifier , (pointer_expression "*(uint *)(iVar7 + 8)" * (cast_expression "(uint *)(iVar7 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) )))))) ;) (expression_statement "uVar4 = *(uint *)(puVar3 + 0x20);" (assignment_expression "uVar4 = *(uint *)(puVar3 + 0x20)" identifier = (pointer_expression "*(uint *)(puVar3 + 0x20)" * (cast_expression "(uint *)(puVar3 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(puVar3 + 0x1c);" (assignment_expression "uVar5 = *(uint *)(puVar3 + 0x1c)" identifier = (pointer_expression "*(uint *)(puVar3 + 0x1c)" * (cast_expression "(uint *)(puVar3 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x1c)" ( (binary_expression "puVar3 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = uVar5 + *(uint *)(iVar8 + 8);" (assignment_expression "uVar9 = uVar5 + *(uint *)(iVar8 + 8)" identifier = (binary_expression "uVar5 + *(uint *)(iVar8 + 8)" identifier + (pointer_expression "*(uint *)(iVar8 + 8)" * (cast_expression "(uint *)(iVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))))) ;) (expression_statement "uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));" (assignment_expression "uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" identifier = (binary_expression "uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" (binary_expression "uVar4 + *(int *)(iVar8 + 0xc)" identifier + (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,*(uint *)(iVar8 + 8))" identifier (argument_list "(uVar5,*(uint *)(iVar8 + 8))" ( identifier , (pointer_expression "*(uint *)(iVar8 + 8)" * (cast_expression "(uint *)(iVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) )))))) ;) (if_statement "if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }" if (parenthesized_expression "(uVar14 != uVar17 || uVar16 != uVar9)" ( (binary_expression "uVar14 != uVar17 || uVar16 != uVar9" (binary_expression "uVar14 != uVar17" identifier != identifier) || (binary_expression "uVar16 != uVar9" identifier != identifier)) )) (compound_statement "{\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }" { (return_statement "return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;" return (binary_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1" (binary_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2" (call_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17)" ( (binary_expression "uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17" (binary_expression "uVar17 <= uVar14" identifier <= identifier) && (binary_expression "(uint)(uVar16 < uVar9) <= uVar14 - uVar17" (call_expression "(uint)(uVar16 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar9)" ( (binary_expression "uVar16 < uVar9" identifier < identifier) ))) <= (binary_expression "uVar14 - uVar17" identifier - identifier))) ))) * number_literal) + number_literal) ;) })) (if_statement "if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }" if (parenthesized_expression "(uVar15 != uVar4 || uVar13 != uVar5)" ( (binary_expression "uVar15 != uVar4 || uVar13 != uVar5" (binary_expression "uVar15 != uVar4" identifier != identifier) || (binary_expression "uVar13 != uVar5" identifier != identifier)) )) (compound_statement "{\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }" { (return_statement "return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;" return (binary_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1" (binary_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2" (call_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4)" ( (binary_expression "uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4" (binary_expression "uVar4 <= uVar15" identifier <= identifier) && (binary_expression "(uint)(uVar13 < uVar5) <= uVar15 - uVar4" (call_expression "(uint)(uVar13 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar5)" ( (binary_expression "uVar13 < uVar5" identifier < identifier) ))) <= (binary_expression "uVar15 - uVar4" identifier - identifier))) ))) * number_literal) + number_literal) ;) })) (expression_statement "pcVar18 = *(char **)(iVar7 + 4);" (assignment_expression "pcVar18 = *(char **)(iVar7 + 4)" identifier = (pointer_expression "*(char **)(iVar7 + 4)" * (cast_expression "(char **)(iVar7 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "__haystack = *(char **)(iVar8 + 4);" (assignment_expression "__haystack = *(char **)(iVar8 + 4)" identifier = (pointer_expression "*(char **)(iVar8 + 4)" * (cast_expression "(char **)(iVar8 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar10 = strstr(pcVar18,"gnu_compiled");" (assignment_expression "pcVar10 = strstr(pcVar18,"gnu_compiled")" identifier = (call_expression "strstr(pcVar18,"gnu_compiled")" identifier (argument_list "(pcVar18,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (expression_statement "pcVar11 = strstr(__haystack,"gnu_compiled");" (assignment_expression "pcVar11 = strstr(__haystack,"gnu_compiled")" identifier = (call_expression "strstr(__haystack,"gnu_compiled")" identifier (argument_list "(__haystack,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (if_statement "if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }" { (expression_statement "pcVar10 = strstr(pcVar18,"gcc2_compiled");" (assignment_expression "pcVar10 = strstr(pcVar18,"gcc2_compiled")" identifier = (call_expression "strstr(pcVar18,"gcc2_compiled")" identifier (argument_list "(pcVar18,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (if_statement "if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;" if (parenthesized_expression "((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))" ( (binary_expression "(pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0)" (parenthesized_expression "(pcVar11 == (char *)0x0)" ( (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0)" ( (comma_expression "pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0" (assignment_expression "pcVar11 = strstr(__haystack,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack,"gcc2_compiled")" identifier (argument_list "(__haystack,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) , (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto joined_r0x00013322;" goto statement_identifier ;)) (if_statement "if (pcVar10 == (char *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" else (if_statement "if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" if (parenthesized_expression "(pcVar11 == (char *)0x0)" ( (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" { (expression_statement "pcVar10 = strstr(__haystack,"gcc2_compiled");" (assignment_expression "pcVar10 = strstr(__haystack,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack,"gcc2_compiled")" identifier (argument_list "(__haystack,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (labeled_statement "joined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }" statement_identifier : (if_statement "if (pcVar10 != (char *)0x0) {\n      return -1;\n    }" if (parenthesized_expression "(pcVar10 != (char *)0x0)" ( (binary_expression "pcVar10 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) }))) })))) (if_statement "if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" if (parenthesized_expression "(((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))))))" ( (binary_expression "((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))" (parenthesized_expression "((*(byte *)(iVar7 + 0x11) & 0x40) == 0)" ( (binary_expression "(*(byte *)(iVar7 + 0x11) & 0x40) == 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x11) & 0x40)" ( (binary_expression "*(byte *)(iVar7 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar7 + 0x11)" * (cast_expression "(byte *)(iVar7 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x11)" ( (binary_expression "iVar7 + 0x11" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))" ( (parenthesized_expression "((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))))" ( (binary_expression "(sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))" (parenthesized_expression "(sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.'))" ( (comma_expression "sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')" (assignment_expression "sVar12 = strlen(pcVar18)" identifier = (call_expression "strlen(pcVar18)" identifier (argument_list "(pcVar18)" ( identifier )))) , (binary_expression "sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')" (binary_expression "sVar12 < 3" identifier < number_literal) || (parenthesized_expression "(pcVar18[sVar12 - 2] != '.')" ( (binary_expression "pcVar18[sVar12 - 2] != '.'" (subscript_expression "pcVar18[sVar12 - 2]" identifier [ (binary_expression "sVar12 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) )))) )) || (parenthesized_expression "((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))" ( (parenthesized_expression "(pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))" ( (binary_expression "pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')" (binary_expression "pcVar18[sVar12 - 1] != 'o'" (subscript_expression "pcVar18[sVar12 - 1]" identifier [ (binary_expression "sVar12 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) && (parenthesized_expression "(pcVar18[sVar12 - 1] != 'a')" ( (binary_expression "pcVar18[sVar12 - 1] != 'a'" (subscript_expression "pcVar18[sVar12 - 1]" identifier [ (binary_expression "sVar12 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) ))) )) ))) )) ))) )) (compound_statement "{\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }" { (if_statement "if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x11) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x11) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x11) & 0x40)" ( (binary_expression "*(byte *)(iVar8 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar8 + 0x11)" * (cast_expression "(byte *)(iVar8 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x11)" ( (binary_expression "iVar8 + 0x11" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar15 = 0xffffffff;" (assignment_expression "uVar15 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar18 = __haystack;" (assignment_expression "pcVar18 = __haystack" identifier = identifier) ;) (do_statement "do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (uVar15 == 0) break;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar15 = uVar15 - 1;" (assignment_expression "uVar15 = uVar15 - 1" identifier = (binary_expression "uVar15 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar18;" (assignment_expression "cVar1 = *pcVar18" identifier = (pointer_expression "*pcVar18" * identifier)) ;) (expression_statement "pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;" (assignment_expression "pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pcVar18 + (uint)bVar19 * -2 + 1" (binary_expression "pcVar18 + (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 "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar13 = ~uVar15 - 1;" (assignment_expression "uVar13 = ~uVar15 - 1" identifier = (binary_expression "~uVar15 - 1" (unary_expression "~uVar15" ~ identifier) - number_literal)) ;) (if_statement "if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;" if (parenthesized_expression "((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.'))" ( (binary_expression "(uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')" (parenthesized_expression "(uVar13 < 3)" ( (binary_expression "uVar13 < 3" identifier < number_literal) )) || (parenthesized_expression "(__haystack[~uVar15 - 3] != '.')" ( (binary_expression "__haystack[~uVar15 - 3] != '.'" (subscript_expression "__haystack[~uVar15 - 3]" identifier [ (binary_expression "~uVar15 - 3" (unary_expression "~uVar15" ~ identifier) - number_literal) ]) != (char_literal "'.'" ' character ')) ))) )) (goto_statement "goto LAB_000132b7;" goto statement_identifier ;)) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) }) (else_clause "else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" else (compound_statement "{\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" { (if_statement "if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x11) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x11) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x11) & 0x40)" ( (binary_expression "*(byte *)(iVar8 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar8 + 0x11)" * (cast_expression "(byte *)(iVar8 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x11)" ( (binary_expression "iVar8 + 0x11" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000132b7;" goto statement_identifier ;)) (expression_statement "uVar13 = strlen(__haystack);" (assignment_expression "uVar13 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) ;) (if_statement "if (uVar13 < 3) {\n      return -1;\n    }" if (parenthesized_expression "(uVar13 < 3)" ( (binary_expression "uVar13 < 3" identifier < number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }" if (parenthesized_expression "(__haystack[uVar13 - 2] != '.')" ( (binary_expression "__haystack[uVar13 - 2] != '.'" (subscript_expression "__haystack[uVar13 - 2]" identifier [ (binary_expression "uVar13 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) }))) (if_statement "if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }" if (parenthesized_expression "((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a'))" ( (binary_expression "(__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')" (parenthesized_expression "(__haystack[uVar13 - 1] == 'o')" ( (binary_expression "__haystack[uVar13 - 1] == 'o'" (subscript_expression "__haystack[uVar13 - 1]" identifier [ (binary_expression "uVar13 - 1" identifier - number_literal) ]) == (char_literal "'o'" ' character ')) )) || (parenthesized_expression "(__haystack[uVar13 - 1] == 'a')" ( (binary_expression "__haystack[uVar13 - 1] == 'a'" (subscript_expression "__haystack[uVar13 - 1]" identifier [ (binary_expression "uVar13 - 1" identifier - number_literal) ]) == (char_literal "'a'" ' character ')) ))) )) (compound_statement "{\n    if (!bVar6) {\n      return 1;\n    }\n  }" { (if_statement "if (!bVar6) {\n      return 1;\n    }" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (bVar6) {\n    return -1;\n  }" else (if_statement "if (bVar6) {\n    return -1;\n  }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })))) (labeled_statement "LAB_000132b7:\n  iVar7 = FUN_00012df0();" statement_identifier : (expression_statement "iVar7 = FUN_00012df0();" (assignment_expression "iVar7 = FUN_00012df0()" identifier = (call_expression "FUN_00012df0()" identifier (argument_list "()" ( )))) ;)) (return_statement "return iVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint size_forward1(void *P_x,void *P_y)\n\n{\n  char cVar1;\n  bfd_section *pbVar2;\n  bfd_section *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  size_t ynl;\n  asymbol *paVar7;\n  asymbol *paVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  int iVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  char *pcVar19;\n  byte bVar20;\n  \n  bVar20 = 0;\n  paVar7 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);\n  paVar8 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);\n  if ((paVar7 == (asymbol *)0x0) || (paVar8 == (asymbol *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }\n  pbVar2 = paVar7->section;\n  pbVar3 = paVar8->section;\n  if ((pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)) ||\n     (pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0))) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  uVar13 = (uint)pbVar2->vma;\n  uVar16 = *(uint *)((int)&pbVar2->vma + 4);\n  uVar17 = uVar13 + (int)paVar7->value;\n  uVar15 = uVar16 + *(int *)((int)&paVar7->value + 4) + (uint)CARRY4(uVar13,(uint)paVar7->value);\n  uVar4 = *(uint *)((int)&pbVar3->vma + 4);\n  uVar5 = (uint)pbVar3->vma;\n  uVar9 = uVar5 + (int)paVar8->value;\n  uVar18 = uVar4 + *(int *)((int)&paVar8->value + 4) + (uint)CARRY4(uVar5,(uint)paVar8->value);\n  if (uVar15 != uVar18 || uVar17 != uVar9) {\n    return (uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2 + -1;\n  }\n  if (uVar16 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2 + -1;\n  }\n  pcVar19 = paVar7->name;\n  __haystack = paVar8->name;\n  pcVar10 = strstr(pcVar19,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar19,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((paVar7->flags & 0x4000) == 0) &&\n     (((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))))) {\n    if ((paVar8->flags & 0x4000) != 0) {\n      return 1;\n    }\n    uVar16 = 0xffffffff;\n    pcVar19 = __haystack;\n    do {\n      if (uVar16 == 0) break;\n      uVar16 = uVar16 - 1;\n      cVar1 = *pcVar19;\n      pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar16 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar16 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((paVar8->flags & 0x4000) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar14 = non_numeric_forward(P_x,P_y);\n  return iVar14;\n}\n\n" comment (function_definition "int size_forward1(void *P_x,void *P_y)\n\n{\n  char cVar1;\n  bfd_section *pbVar2;\n  bfd_section *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  size_t ynl;\n  asymbol *paVar7;\n  asymbol *paVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  int iVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  char *pcVar19;\n  byte bVar20;\n  \n  bVar20 = 0;\n  paVar7 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);\n  paVar8 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);\n  if ((paVar7 == (asymbol *)0x0) || (paVar8 == (asymbol *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }\n  pbVar2 = paVar7->section;\n  pbVar3 = paVar8->section;\n  if ((pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)) ||\n     (pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0))) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  uVar13 = (uint)pbVar2->vma;\n  uVar16 = *(uint *)((int)&pbVar2->vma + 4);\n  uVar17 = uVar13 + (int)paVar7->value;\n  uVar15 = uVar16 + *(int *)((int)&paVar7->value + 4) + (uint)CARRY4(uVar13,(uint)paVar7->value);\n  uVar4 = *(uint *)((int)&pbVar3->vma + 4);\n  uVar5 = (uint)pbVar3->vma;\n  uVar9 = uVar5 + (int)paVar8->value;\n  uVar18 = uVar4 + *(int *)((int)&paVar8->value + 4) + (uint)CARRY4(uVar5,(uint)paVar8->value);\n  if (uVar15 != uVar18 || uVar17 != uVar9) {\n    return (uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2 + -1;\n  }\n  if (uVar16 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2 + -1;\n  }\n  pcVar19 = paVar7->name;\n  __haystack = paVar8->name;\n  pcVar10 = strstr(pcVar19,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar19,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((paVar7->flags & 0x4000) == 0) &&\n     (((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))))) {\n    if ((paVar8->flags & 0x4000) != 0) {\n      return 1;\n    }\n    uVar16 = 0xffffffff;\n    pcVar19 = __haystack;\n    do {\n      if (uVar16 == 0) break;\n      uVar16 = uVar16 - 1;\n      cVar1 = *pcVar19;\n      pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar16 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar16 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((paVar8->flags & 0x4000) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar14 = non_numeric_forward(P_x,P_y);\n  return iVar14;\n}" primitive_type (function_declarator "size_forward1(void *P_x,void *P_y)" identifier (parameter_list "(void *P_x,void *P_y)" ( (parameter_declaration "void *P_x" primitive_type (pointer_declarator "*P_x" * identifier)) , (parameter_declaration "void *P_y" primitive_type (pointer_declarator "*P_y" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  bfd_section *pbVar2;\n  bfd_section *pbVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  size_t ynl;\n  asymbol *paVar7;\n  asymbol *paVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  int iVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  char *pcVar19;\n  byte bVar20;\n  \n  bVar20 = 0;\n  paVar7 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);\n  paVar8 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);\n  if ((paVar7 == (asymbol *)0x0) || (paVar8 == (asymbol *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }\n  pbVar2 = paVar7->section;\n  pbVar3 = paVar8->section;\n  if ((pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)) ||\n     (pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0))) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  uVar13 = (uint)pbVar2->vma;\n  uVar16 = *(uint *)((int)&pbVar2->vma + 4);\n  uVar17 = uVar13 + (int)paVar7->value;\n  uVar15 = uVar16 + *(int *)((int)&paVar7->value + 4) + (uint)CARRY4(uVar13,(uint)paVar7->value);\n  uVar4 = *(uint *)((int)&pbVar3->vma + 4);\n  uVar5 = (uint)pbVar3->vma;\n  uVar9 = uVar5 + (int)paVar8->value;\n  uVar18 = uVar4 + *(int *)((int)&paVar8->value + 4) + (uint)CARRY4(uVar5,(uint)paVar8->value);\n  if (uVar15 != uVar18 || uVar17 != uVar9) {\n    return (uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2 + -1;\n  }\n  if (uVar16 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2 + -1;\n  }\n  pcVar19 = paVar7->name;\n  __haystack = paVar8->name;\n  pcVar10 = strstr(pcVar19,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar19,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((paVar7->flags & 0x4000) == 0) &&\n     (((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))))) {\n    if ((paVar8->flags & 0x4000) != 0) {\n      return 1;\n    }\n    uVar16 = 0xffffffff;\n    pcVar19 = __haystack;\n    do {\n      if (uVar16 == 0) break;\n      uVar16 = uVar16 - 1;\n      cVar1 = *pcVar19;\n      pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar16 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar16 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((paVar8->flags & 0x4000) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar14 = non_numeric_forward(P_x,P_y);\n  return iVar14;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "bfd_section *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "bfd_section *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "size_t ynl;" primitive_type identifier ;) (declaration "asymbol *paVar7;" type_identifier (pointer_declarator "*paVar7" * identifier) ;) (declaration "asymbol *paVar8;" type_identifier (pointer_declarator "*paVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "char *pcVar19;" primitive_type (pointer_declarator "*pcVar19" * identifier) ;) (declaration "byte bVar20;" type_identifier identifier ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "paVar7 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);" (assignment_expression "paVar7 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x)" identifier = (call_expression "(*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x)" (parenthesized_expression "(*sort_bfd->xvec->_minisymbol_to_symbol)" ( (pointer_expression "*sort_bfd->xvec->_minisymbol_to_symbol" * (field_expression "sort_bfd->xvec->_minisymbol_to_symbol" (field_expression "sort_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(sort_bfd,sort_dynamic,P_x,sort_x)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "paVar8 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);" (assignment_expression "paVar8 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y)" identifier = (call_expression "(*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y)" (parenthesized_expression "(*sort_bfd->xvec->_minisymbol_to_symbol)" ( (pointer_expression "*sort_bfd->xvec->_minisymbol_to_symbol" * (field_expression "sort_bfd->xvec->_minisymbol_to_symbol" (field_expression "sort_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(sort_bfd,sort_dynamic,P_y,sort_y)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((paVar7 == (asymbol *)0x0) || (paVar8 == (asymbol *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }" if (parenthesized_expression "((paVar7 == (asymbol *)0x0) || (paVar8 == (asymbol *)0x0))" ( (binary_expression "(paVar7 == (asymbol *)0x0) || (paVar8 == (asymbol *)0x0)" (parenthesized_expression "(paVar7 == (asymbol *)0x0)" ( (binary_expression "paVar7 == (asymbol *)0x0" identifier == (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(paVar8 == (asymbol *)0x0)" ( (binary_expression "paVar8 == (asymbol *)0x0" identifier == (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }" { comment (expression_statement "bfd_fatal(sort_bfd->filename);" (call_expression "bfd_fatal(sort_bfd->filename)" identifier (argument_list "(sort_bfd->filename)" ( (field_expression "sort_bfd->filename" identifier -> field_identifier) ))) ;) })) (expression_statement "pbVar2 = paVar7->section;" (assignment_expression "pbVar2 = paVar7->section" identifier = (field_expression "paVar7->section" identifier -> field_identifier)) ;) (expression_statement "pbVar3 = paVar8->section;" (assignment_expression "pbVar3 = paVar8->section" identifier = (field_expression "paVar8->section" identifier -> field_identifier)) ;) (if_statement "if ((pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)) ||\n     (pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0))) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" if (parenthesized_expression "((pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)) ||\n     (pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)))" ( (binary_expression "(pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)) ||\n     (pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0))" (parenthesized_expression "(pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0))" ( (binary_expression "pbVar2 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)" identifier == (cast_expression "(bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR__bfd_std_section_0001cfec + 0xc0)" ( (binary_expression "PTR__bfd_std_section_0001cfec + 0xc0" identifier + number_literal) )))) )) || (parenthesized_expression "(pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0))" ( (binary_expression "pbVar3 == (bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)" identifier == (cast_expression "(bfd_section *)(PTR__bfd_std_section_0001cfec + 0xc0)" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR__bfd_std_section_0001cfec + 0xc0)" ( (binary_expression "PTR__bfd_std_section_0001cfec + 0xc0" identifier + number_literal) )))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar13 = (uint)pbVar2->vma;" (assignment_expression "uVar13 = (uint)pbVar2->vma" identifier = (cast_expression "(uint)pbVar2->vma" ( (type_descriptor "uint" type_identifier) ) (field_expression "pbVar2->vma" identifier -> field_identifier))) ;) (expression_statement "uVar16 = *(uint *)((int)&pbVar2->vma + 4);" (assignment_expression "uVar16 = *(uint *)((int)&pbVar2->vma + 4)" identifier = (pointer_expression "*(uint *)((int)&pbVar2->vma + 4)" * (cast_expression "(uint *)((int)&pbVar2->vma + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pbVar2->vma + 4)" ( (binary_expression "(int)&pbVar2->vma + 4" (cast_expression "(int)&pbVar2->vma" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pbVar2->vma" & (field_expression "pbVar2->vma" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar17 = uVar13 + (int)paVar7->value;" (assignment_expression "uVar17 = uVar13 + (int)paVar7->value" identifier = (binary_expression "uVar13 + (int)paVar7->value" identifier + (cast_expression "(int)paVar7->value" ( (type_descriptor "int" primitive_type) ) (field_expression "paVar7->value" identifier -> field_identifier)))) ;) (expression_statement "uVar15 = uVar16 + *(int *)((int)&paVar7->value + 4) + (uint)CARRY4(uVar13,(uint)paVar7->value);" (assignment_expression "uVar15 = uVar16 + *(int *)((int)&paVar7->value + 4) + (uint)CARRY4(uVar13,(uint)paVar7->value)" identifier = (binary_expression "uVar16 + *(int *)((int)&paVar7->value + 4) + (uint)CARRY4(uVar13,(uint)paVar7->value)" (binary_expression "uVar16 + *(int *)((int)&paVar7->value + 4)" identifier + (pointer_expression "*(int *)((int)&paVar7->value + 4)" * (cast_expression "(int *)((int)&paVar7->value + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar7->value + 4)" ( (binary_expression "(int)&paVar7->value + 4" (cast_expression "(int)&paVar7->value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar7->value" & (field_expression "paVar7->value" identifier -> field_identifier))) + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar13,(uint)paVar7->value)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar13,(uint)paVar7->value)" identifier (argument_list "(uVar13,(uint)paVar7->value)" ( identifier , (cast_expression "(uint)paVar7->value" ( (type_descriptor "uint" type_identifier) ) (field_expression "paVar7->value" identifier -> field_identifier)) )))))) ;) (expression_statement "uVar4 = *(uint *)((int)&pbVar3->vma + 4);" (assignment_expression "uVar4 = *(uint *)((int)&pbVar3->vma + 4)" identifier = (pointer_expression "*(uint *)((int)&pbVar3->vma + 4)" * (cast_expression "(uint *)((int)&pbVar3->vma + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pbVar3->vma + 4)" ( (binary_expression "(int)&pbVar3->vma + 4" (cast_expression "(int)&pbVar3->vma" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pbVar3->vma" & (field_expression "pbVar3->vma" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar5 = (uint)pbVar3->vma;" (assignment_expression "uVar5 = (uint)pbVar3->vma" identifier = (cast_expression "(uint)pbVar3->vma" ( (type_descriptor "uint" type_identifier) ) (field_expression "pbVar3->vma" identifier -> field_identifier))) ;) (expression_statement "uVar9 = uVar5 + (int)paVar8->value;" (assignment_expression "uVar9 = uVar5 + (int)paVar8->value" identifier = (binary_expression "uVar5 + (int)paVar8->value" identifier + (cast_expression "(int)paVar8->value" ( (type_descriptor "int" primitive_type) ) (field_expression "paVar8->value" identifier -> field_identifier)))) ;) (expression_statement "uVar18 = uVar4 + *(int *)((int)&paVar8->value + 4) + (uint)CARRY4(uVar5,(uint)paVar8->value);" (assignment_expression "uVar18 = uVar4 + *(int *)((int)&paVar8->value + 4) + (uint)CARRY4(uVar5,(uint)paVar8->value)" identifier = (binary_expression "uVar4 + *(int *)((int)&paVar8->value + 4) + (uint)CARRY4(uVar5,(uint)paVar8->value)" (binary_expression "uVar4 + *(int *)((int)&paVar8->value + 4)" identifier + (pointer_expression "*(int *)((int)&paVar8->value + 4)" * (cast_expression "(int *)((int)&paVar8->value + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar8->value + 4)" ( (binary_expression "(int)&paVar8->value + 4" (cast_expression "(int)&paVar8->value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar8->value" & (field_expression "paVar8->value" identifier -> field_identifier))) + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar5,(uint)paVar8->value)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,(uint)paVar8->value)" identifier (argument_list "(uVar5,(uint)paVar8->value)" ( identifier , (cast_expression "(uint)paVar8->value" ( (type_descriptor "uint" type_identifier) ) (field_expression "paVar8->value" identifier -> field_identifier)) )))))) ;) (if_statement "if (uVar15 != uVar18 || uVar17 != uVar9) {\n    return (uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2 + -1;\n  }" if (parenthesized_expression "(uVar15 != uVar18 || uVar17 != uVar9)" ( (binary_expression "uVar15 != uVar18 || uVar17 != uVar9" (binary_expression "uVar15 != uVar18" identifier != identifier) || (binary_expression "uVar17 != uVar9" identifier != identifier)) )) (compound_statement "{\n    return (uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2 + -1;\n  }" { (return_statement "return (uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2 + -1;" return (binary_expression "(uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2 + -1" (binary_expression "(uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18) * 2" (call_expression "(uint)(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18)" ( (binary_expression "uVar18 <= uVar15 && (uint)(uVar17 < uVar9) <= uVar15 - uVar18" (binary_expression "uVar18 <= uVar15" identifier <= identifier) && (binary_expression "(uint)(uVar17 < uVar9) <= uVar15 - uVar18" (call_expression "(uint)(uVar17 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar9)" ( (binary_expression "uVar17 < uVar9" identifier < identifier) ))) <= (binary_expression "uVar15 - uVar18" identifier - identifier))) ))) * number_literal) + number_literal) ;) })) (if_statement "if (uVar16 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2 + -1;\n  }" if (parenthesized_expression "(uVar16 != uVar4 || uVar13 != uVar5)" ( (binary_expression "uVar16 != uVar4 || uVar13 != uVar5" (binary_expression "uVar16 != uVar4" identifier != identifier) || (binary_expression "uVar13 != uVar5" identifier != identifier)) )) (compound_statement "{\n    return (uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2 + -1;\n  }" { (return_statement "return (uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2 + -1;" return (binary_expression "(uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2 + -1" (binary_expression "(uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4) * 2" (call_expression "(uint)(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4)" ( (binary_expression "uVar4 <= uVar16 && (uint)(uVar13 < uVar5) <= uVar16 - uVar4" (binary_expression "uVar4 <= uVar16" identifier <= identifier) && (binary_expression "(uint)(uVar13 < uVar5) <= uVar16 - uVar4" (call_expression "(uint)(uVar13 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar5)" ( (binary_expression "uVar13 < uVar5" identifier < identifier) ))) <= (binary_expression "uVar16 - uVar4" identifier - identifier))) ))) * number_literal) + number_literal) ;) })) (expression_statement "pcVar19 = paVar7->name;" (assignment_expression "pcVar19 = paVar7->name" identifier = (field_expression "paVar7->name" identifier -> field_identifier)) ;) (expression_statement "__haystack = paVar8->name;" (assignment_expression "__haystack = paVar8->name" identifier = (field_expression "paVar8->name" identifier -> field_identifier)) ;) (expression_statement "pcVar10 = strstr(pcVar19,"gnu_compiled");" (assignment_expression "pcVar10 = strstr(pcVar19,"gnu_compiled")" identifier = (call_expression "strstr(pcVar19,"gnu_compiled")" identifier (argument_list "(pcVar19,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (expression_statement "pcVar11 = strstr(__haystack,"gnu_compiled");" (assignment_expression "pcVar11 = strstr(__haystack,"gnu_compiled")" identifier = (call_expression "strstr(__haystack,"gnu_compiled")" identifier (argument_list "(__haystack,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (if_statement "if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar19,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar10 = strstr(pcVar19,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }" { (expression_statement "pcVar10 = strstr(pcVar19,"gcc2_compiled");" (assignment_expression "pcVar10 = strstr(pcVar19,"gcc2_compiled")" identifier = (call_expression "strstr(pcVar19,"gcc2_compiled")" identifier (argument_list "(pcVar19,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (if_statement "if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;" if (parenthesized_expression "((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))" ( (binary_expression "(pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0)" (parenthesized_expression "(pcVar11 == (char *)0x0)" ( (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0)" ( (comma_expression "pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0" (assignment_expression "pcVar11 = strstr(__haystack,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack,"gcc2_compiled")" identifier (argument_list "(__haystack,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) , (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto joined_r0x00013322;" goto statement_identifier ;)) (if_statement "if (pcVar10 == (char *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" else (if_statement "if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" if (parenthesized_expression "(pcVar11 == (char *)0x0)" ( (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" { (expression_statement "pcVar10 = strstr(__haystack,"gcc2_compiled");" (assignment_expression "pcVar10 = strstr(__haystack,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack,"gcc2_compiled")" identifier (argument_list "(__haystack,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (labeled_statement "joined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }" statement_identifier : (if_statement "if (pcVar10 != (char *)0x0) {\n      return -1;\n    }" if (parenthesized_expression "(pcVar10 != (char *)0x0)" ( (binary_expression "pcVar10 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) }))) })))) (if_statement "if (((paVar7->flags & 0x4000) == 0) &&\n     (((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))))) {\n    if ((paVar8->flags & 0x4000) != 0) {\n      return 1;\n    }\n    uVar16 = 0xffffffff;\n    pcVar19 = __haystack;\n    do {\n      if (uVar16 == 0) break;\n      uVar16 = uVar16 - 1;\n      cVar1 = *pcVar19;\n      pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar16 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar16 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((paVar8->flags & 0x4000) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" if (parenthesized_expression "(((paVar7->flags & 0x4000) == 0) &&\n     (((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a'))))))" ( (binary_expression "((paVar7->flags & 0x4000) == 0) &&\n     (((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))))" (parenthesized_expression "((paVar7->flags & 0x4000) == 0)" ( (binary_expression "(paVar7->flags & 0x4000) == 0" (parenthesized_expression "(paVar7->flags & 0x4000)" ( (binary_expression "paVar7->flags & 0x4000" (field_expression "paVar7->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))))" ( (parenthesized_expression "((sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a'))))" ( (binary_expression "(sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')) ||\n      ((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))" (parenthesized_expression "(sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.'))" ( (comma_expression "sVar12 = strlen(pcVar19), sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')" (assignment_expression "sVar12 = strlen(pcVar19)" identifier = (call_expression "strlen(pcVar19)" identifier (argument_list "(pcVar19)" ( identifier )))) , (binary_expression "sVar12 < 3 || (pcVar19[sVar12 - 2] != '.')" (binary_expression "sVar12 < 3" identifier < number_literal) || (parenthesized_expression "(pcVar19[sVar12 - 2] != '.')" ( (binary_expression "pcVar19[sVar12 - 2] != '.'" (subscript_expression "pcVar19[sVar12 - 2]" identifier [ (binary_expression "sVar12 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) )))) )) || (parenthesized_expression "((pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')))" ( (parenthesized_expression "(pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a'))" ( (binary_expression "pcVar19[sVar12 - 1] != 'o' && (pcVar19[sVar12 - 1] != 'a')" (binary_expression "pcVar19[sVar12 - 1] != 'o'" (subscript_expression "pcVar19[sVar12 - 1]" identifier [ (binary_expression "sVar12 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) && (parenthesized_expression "(pcVar19[sVar12 - 1] != 'a')" ( (binary_expression "pcVar19[sVar12 - 1] != 'a'" (subscript_expression "pcVar19[sVar12 - 1]" identifier [ (binary_expression "sVar12 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) ))) )) ))) )) ))) )) (compound_statement "{\n    if ((paVar8->flags & 0x4000) != 0) {\n      return 1;\n    }\n    uVar16 = 0xffffffff;\n    pcVar19 = __haystack;\n    do {\n      if (uVar16 == 0) break;\n      uVar16 = uVar16 - 1;\n      cVar1 = *pcVar19;\n      pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar16 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar16 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }" { (if_statement "if ((paVar8->flags & 0x4000) != 0) {\n      return 1;\n    }" if (parenthesized_expression "((paVar8->flags & 0x4000) != 0)" ( (binary_expression "(paVar8->flags & 0x4000) != 0" (parenthesized_expression "(paVar8->flags & 0x4000)" ( (binary_expression "paVar8->flags & 0x4000" (field_expression "paVar8->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar19 = __haystack;" (assignment_expression "pcVar19 = __haystack" identifier = identifier) ;) (do_statement "do {\n      if (uVar16 == 0) break;\n      uVar16 = uVar16 - 1;\n      cVar1 = *pcVar19;\n      pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar16 == 0) break;\n      uVar16 = uVar16 - 1;\n      cVar1 = *pcVar19;\n      pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;\n    }" { (if_statement "if (uVar16 == 0) break;" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar16 = uVar16 - 1;" (assignment_expression "uVar16 = uVar16 - 1" identifier = (binary_expression "uVar16 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar19;" (assignment_expression "cVar1 = *pcVar19" identifier = (pointer_expression "*pcVar19" * identifier)) ;) (expression_statement "pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1;" (assignment_expression "pcVar19 = pcVar19 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "pcVar19 + (uint)bVar20 * -2 + 1" (binary_expression "pcVar19 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar13 = ~uVar16 - 1;" (assignment_expression "uVar13 = ~uVar16 - 1" identifier = (binary_expression "~uVar16 - 1" (unary_expression "~uVar16" ~ identifier) - number_literal)) ;) (if_statement "if ((uVar13 < 3) || (__haystack[~uVar16 - 3] != '.')) goto LAB_000132b7;" if (parenthesized_expression "((uVar13 < 3) || (__haystack[~uVar16 - 3] != '.'))" ( (binary_expression "(uVar13 < 3) || (__haystack[~uVar16 - 3] != '.')" (parenthesized_expression "(uVar13 < 3)" ( (binary_expression "uVar13 < 3" identifier < number_literal) )) || (parenthesized_expression "(__haystack[~uVar16 - 3] != '.')" ( (binary_expression "__haystack[~uVar16 - 3] != '.'" (subscript_expression "__haystack[~uVar16 - 3]" identifier [ (binary_expression "~uVar16 - 3" (unary_expression "~uVar16" ~ identifier) - number_literal) ]) != (char_literal "'.'" ' character ')) ))) )) (goto_statement "goto LAB_000132b7;" goto statement_identifier ;)) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) }) (else_clause "else {\n    if ((paVar8->flags & 0x4000) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" else (compound_statement "{\n    if ((paVar8->flags & 0x4000) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" { (if_statement "if ((paVar8->flags & 0x4000) != 0) goto LAB_000132b7;" if (parenthesized_expression "((paVar8->flags & 0x4000) != 0)" ( (binary_expression "(paVar8->flags & 0x4000) != 0" (parenthesized_expression "(paVar8->flags & 0x4000)" ( (binary_expression "paVar8->flags & 0x4000" (field_expression "paVar8->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000132b7;" goto statement_identifier ;)) (expression_statement "uVar13 = strlen(__haystack);" (assignment_expression "uVar13 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) ;) (if_statement "if (uVar13 < 3) {\n      return -1;\n    }" if (parenthesized_expression "(uVar13 < 3)" ( (binary_expression "uVar13 < 3" identifier < number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }" if (parenthesized_expression "(__haystack[uVar13 - 2] != '.')" ( (binary_expression "__haystack[uVar13 - 2] != '.'" (subscript_expression "__haystack[uVar13 - 2]" identifier [ (binary_expression "uVar13 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) }))) (if_statement "if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }" if (parenthesized_expression "((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a'))" ( (binary_expression "(__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')" (parenthesized_expression "(__haystack[uVar13 - 1] == 'o')" ( (binary_expression "__haystack[uVar13 - 1] == 'o'" (subscript_expression "__haystack[uVar13 - 1]" identifier [ (binary_expression "uVar13 - 1" identifier - number_literal) ]) == (char_literal "'o'" ' character ')) )) || (parenthesized_expression "(__haystack[uVar13 - 1] == 'a')" ( (binary_expression "__haystack[uVar13 - 1] == 'a'" (subscript_expression "__haystack[uVar13 - 1]" identifier [ (binary_expression "uVar13 - 1" identifier - number_literal) ]) == (char_literal "'a'" ' character ')) ))) )) (compound_statement "{\n    if (!bVar6) {\n      return 1;\n    }\n  }" { (if_statement "if (!bVar6) {\n      return 1;\n    }" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (bVar6) {\n    return -1;\n  }" else (if_statement "if (bVar6) {\n    return -1;\n  }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })))) (labeled_statement "LAB_000132b7:\n  iVar14 = non_numeric_forward(P_x,P_y);" statement_identifier : (expression_statement "iVar14 = non_numeric_forward(P_x,P_y);" (assignment_expression "iVar14 = non_numeric_forward(P_x,P_y)" identifier = (call_expression "non_numeric_forward(P_x,P_y)" identifier (argument_list "(P_x,P_y)" ( identifier , identifier )))) ;)) (return_statement "return iVar14;" return identifier ;) })))
(translation_unit "int FUN_00013020(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  char *pcVar18;\n  byte bVar19;\n  \n  bVar19 = 0;\n  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);\n  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);\n  if ((iVar7 == 0) || (iVar8 == 0)) {\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }\n  puVar2 = *(undefined **)(iVar7 + 0x14);\n  puVar3 = *(undefined **)(iVar8 + 0x14);\n  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    \n    abort();\n  }\n  uVar13 = *(uint *)(puVar2 + 0x1c);\n  uVar15 = *(uint *)(puVar2 + 0x20);\n  uVar16 = uVar13 + *(uint *)(iVar7 + 8);\n  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));\n  uVar4 = *(uint *)(puVar3 + 0x20);\n  uVar5 = *(uint *)(puVar3 + 0x1c);\n  uVar9 = uVar5 + *(uint *)(iVar8 + 8);\n  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));\n  if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }\n  if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }\n  pcVar18 = *(char **)(iVar7 + 4);\n  __haystack = *(char **)(iVar8 + 4);\n  pcVar10 = strstr(pcVar18,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar7 = FUN_00012df0();\n  return iVar7;\n}\n\n" (function_definition "int FUN_00013020(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  char *pcVar18;\n  byte bVar19;\n  \n  bVar19 = 0;\n  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);\n  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);\n  if ((iVar7 == 0) || (iVar8 == 0)) {\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }\n  puVar2 = *(undefined **)(iVar7 + 0x14);\n  puVar3 = *(undefined **)(iVar8 + 0x14);\n  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    \n    abort();\n  }\n  uVar13 = *(uint *)(puVar2 + 0x1c);\n  uVar15 = *(uint *)(puVar2 + 0x20);\n  uVar16 = uVar13 + *(uint *)(iVar7 + 8);\n  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));\n  uVar4 = *(uint *)(puVar3 + 0x20);\n  uVar5 = *(uint *)(puVar3 + 0x1c);\n  uVar9 = uVar5 + *(uint *)(iVar8 + 8);\n  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));\n  if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }\n  if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }\n  pcVar18 = *(char **)(iVar7 + 4);\n  __haystack = *(char **)(iVar8 + 4);\n  pcVar10 = strstr(pcVar18,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar7 = FUN_00012df0();\n  return iVar7;\n}" primitive_type (function_declarator "FUN_00013020(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  char *pcVar18;\n  byte bVar19;\n  \n  bVar19 = 0;\n  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);\n  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);\n  if ((iVar7 == 0) || (iVar8 == 0)) {\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }\n  puVar2 = *(undefined **)(iVar7 + 0x14);\n  puVar3 = *(undefined **)(iVar8 + 0x14);\n  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    \n    abort();\n  }\n  uVar13 = *(uint *)(puVar2 + 0x1c);\n  uVar15 = *(uint *)(puVar2 + 0x20);\n  uVar16 = uVar13 + *(uint *)(iVar7 + 8);\n  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));\n  uVar4 = *(uint *)(puVar3 + 0x20);\n  uVar5 = *(uint *)(puVar3 + 0x1c);\n  uVar9 = uVar5 + *(uint *)(iVar8 + 8);\n  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));\n  if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }\n  if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }\n  pcVar18 = *(char **)(iVar7 + 4);\n  __haystack = *(char **)(iVar8 + 4);\n  pcVar10 = strstr(pcVar18,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar7 = FUN_00012df0();\n  return iVar7;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "byte bVar19;" type_identifier identifier ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);" (assignment_expression "iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" identifier = (call_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" (parenthesized_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))" ( (pointer_expression "**(code **)(DAT_0001d3cc[1] + 0x13c)" * (pointer_expression "*(code **)(DAT_0001d3cc[1] + 0x13c)" * (cast_expression "(code **)(DAT_0001d3cc[1] + 0x13c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0001d3cc[1] + 0x13c)" ( (binary_expression "DAT_0001d3cc[1] + 0x13c" (subscript_expression "DAT_0001d3cc[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);" (assignment_expression "iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" identifier = (call_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" (parenthesized_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))" ( (pointer_expression "**(code **)(DAT_0001d3cc[1] + 0x13c)" * (pointer_expression "*(code **)(DAT_0001d3cc[1] + 0x13c)" * (cast_expression "(code **)(DAT_0001d3cc[1] + 0x13c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0001d3cc[1] + 0x13c)" ( (binary_expression "DAT_0001d3cc[1] + 0x13c" (subscript_expression "DAT_0001d3cc[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((iVar7 == 0) || (iVar8 == 0)) {\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }" if (parenthesized_expression "((iVar7 == 0) || (iVar8 == 0))" ( (binary_expression "(iVar7 == 0) || (iVar8 == 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }" { (expression_statement "FUN_00015650(*DAT_0001d3cc);" (call_expression "FUN_00015650(*DAT_0001d3cc)" identifier (argument_list "(*DAT_0001d3cc)" ( (pointer_expression "*DAT_0001d3cc" * identifier) ))) ;) })) (expression_statement "puVar2 = *(undefined **)(iVar7 + 0x14);" (assignment_expression "puVar2 = *(undefined **)(iVar7 + 0x14)" identifier = (pointer_expression "*(undefined **)(iVar7 + 0x14)" * (cast_expression "(undefined **)(iVar7 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = *(undefined **)(iVar8 + 0x14);" (assignment_expression "puVar3 = *(undefined **)(iVar8 + 0x14)" identifier = (pointer_expression "*(undefined **)(iVar8 + 0x14)" * (cast_expression "(undefined **)(iVar8 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    \n    abort();\n  }" if (parenthesized_expression "((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0))" ( (binary_expression "(puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)" (parenthesized_expression "(puVar2 == PTR__bfd_std_section_0001cfec + 0xc0)" ( (binary_expression "puVar2 == PTR__bfd_std_section_0001cfec + 0xc0" identifier == (binary_expression "PTR__bfd_std_section_0001cfec + 0xc0" identifier + number_literal)) )) || (parenthesized_expression "(puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)" ( (binary_expression "puVar3 == PTR__bfd_std_section_0001cfec + 0xc0" identifier == (binary_expression "PTR__bfd_std_section_0001cfec + 0xc0" identifier + number_literal)) ))) )) (compound_statement "{\n                    \n    abort();\n  }" { (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar13 = *(uint *)(puVar2 + 0x1c);" (assignment_expression "uVar13 = *(uint *)(puVar2 + 0x1c)" identifier = (pointer_expression "*(uint *)(puVar2 + 0x1c)" * (cast_expression "(uint *)(puVar2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1c)" ( (binary_expression "puVar2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = *(uint *)(puVar2 + 0x20);" (assignment_expression "uVar15 = *(uint *)(puVar2 + 0x20)" identifier = (pointer_expression "*(uint *)(puVar2 + 0x20)" * (cast_expression "(uint *)(puVar2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x20)" ( (binary_expression "puVar2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = uVar13 + *(uint *)(iVar7 + 8);" (assignment_expression "uVar16 = uVar13 + *(uint *)(iVar7 + 8)" identifier = (binary_expression "uVar13 + *(uint *)(iVar7 + 8)" identifier + (pointer_expression "*(uint *)(iVar7 + 8)" * (cast_expression "(uint *)(iVar7 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))))) ;) (expression_statement "uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));" (assignment_expression "uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" identifier = (binary_expression "uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" (binary_expression "uVar15 + *(int *)(iVar7 + 0xc)" identifier + (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar13,*(uint *)(iVar7 + 8))" identifier (argument_list "(uVar13,*(uint *)(iVar7 + 8))" ( identifier , (pointer_expression "*(uint *)(iVar7 + 8)" * (cast_expression "(uint *)(iVar7 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) )))))) ;) (expression_statement "uVar4 = *(uint *)(puVar3 + 0x20);" (assignment_expression "uVar4 = *(uint *)(puVar3 + 0x20)" identifier = (pointer_expression "*(uint *)(puVar3 + 0x20)" * (cast_expression "(uint *)(puVar3 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(uint *)(puVar3 + 0x1c);" (assignment_expression "uVar5 = *(uint *)(puVar3 + 0x1c)" identifier = (pointer_expression "*(uint *)(puVar3 + 0x1c)" * (cast_expression "(uint *)(puVar3 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x1c)" ( (binary_expression "puVar3 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = uVar5 + *(uint *)(iVar8 + 8);" (assignment_expression "uVar9 = uVar5 + *(uint *)(iVar8 + 8)" identifier = (binary_expression "uVar5 + *(uint *)(iVar8 + 8)" identifier + (pointer_expression "*(uint *)(iVar8 + 8)" * (cast_expression "(uint *)(iVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))))) ;) (expression_statement "uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));" (assignment_expression "uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" identifier = (binary_expression "uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" (binary_expression "uVar4 + *(int *)(iVar8 + 0xc)" identifier + (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,*(uint *)(iVar8 + 8))" identifier (argument_list "(uVar5,*(uint *)(iVar8 + 8))" ( identifier , (pointer_expression "*(uint *)(iVar8 + 8)" * (cast_expression "(uint *)(iVar8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) )))))) ;) (if_statement "if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }" if (parenthesized_expression "(uVar14 != uVar17 || uVar16 != uVar9)" ( (binary_expression "uVar14 != uVar17 || uVar16 != uVar9" (binary_expression "uVar14 != uVar17" identifier != identifier) || (binary_expression "uVar16 != uVar9" identifier != identifier)) )) (compound_statement "{\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }" { (return_statement "return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;" return (binary_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1" (binary_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2" (call_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17)" ( (binary_expression "uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17" (binary_expression "uVar17 <= uVar14" identifier <= identifier) && (binary_expression "(uint)(uVar16 < uVar9) <= uVar14 - uVar17" (call_expression "(uint)(uVar16 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar16 < uVar9)" ( (binary_expression "uVar16 < uVar9" identifier < identifier) ))) <= (binary_expression "uVar14 - uVar17" identifier - identifier))) ))) * number_literal) + number_literal) ;) })) (if_statement "if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }" if (parenthesized_expression "(uVar15 != uVar4 || uVar13 != uVar5)" ( (binary_expression "uVar15 != uVar4 || uVar13 != uVar5" (binary_expression "uVar15 != uVar4" identifier != identifier) || (binary_expression "uVar13 != uVar5" identifier != identifier)) )) (compound_statement "{\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }" { (return_statement "return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;" return (binary_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1" (binary_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2" (call_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4)" ( (binary_expression "uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4" (binary_expression "uVar4 <= uVar15" identifier <= identifier) && (binary_expression "(uint)(uVar13 < uVar5) <= uVar15 - uVar4" (call_expression "(uint)(uVar13 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar5)" ( (binary_expression "uVar13 < uVar5" identifier < identifier) ))) <= (binary_expression "uVar15 - uVar4" identifier - identifier))) ))) * number_literal) + number_literal) ;) })) (expression_statement "pcVar18 = *(char **)(iVar7 + 4);" (assignment_expression "pcVar18 = *(char **)(iVar7 + 4)" identifier = (pointer_expression "*(char **)(iVar7 + 4)" * (cast_expression "(char **)(iVar7 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "__haystack = *(char **)(iVar8 + 4);" (assignment_expression "__haystack = *(char **)(iVar8 + 4)" identifier = (pointer_expression "*(char **)(iVar8 + 4)" * (cast_expression "(char **)(iVar8 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar10 = strstr(pcVar18,"gnu_compiled");" (assignment_expression "pcVar10 = strstr(pcVar18,"gnu_compiled")" identifier = (call_expression "strstr(pcVar18,"gnu_compiled")" identifier (argument_list "(pcVar18,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (expression_statement "pcVar11 = strstr(__haystack,"gnu_compiled");" (assignment_expression "pcVar11 = strstr(__haystack,"gnu_compiled")" identifier = (call_expression "strstr(__haystack,"gnu_compiled")" identifier (argument_list "(__haystack,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (if_statement "if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }" { (expression_statement "pcVar10 = strstr(pcVar18,"gcc2_compiled");" (assignment_expression "pcVar10 = strstr(pcVar18,"gcc2_compiled")" identifier = (call_expression "strstr(pcVar18,"gcc2_compiled")" identifier (argument_list "(pcVar18,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (if_statement "if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;" if (parenthesized_expression "((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))" ( (binary_expression "(pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0)" (parenthesized_expression "(pcVar11 == (char *)0x0)" ( (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0)" ( (comma_expression "pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0" (assignment_expression "pcVar11 = strstr(__haystack,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack,"gcc2_compiled")" identifier (argument_list "(__haystack,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) , (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto joined_r0x00013322;" goto statement_identifier ;)) (if_statement "if (pcVar10 == (char *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" else (if_statement "if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" if (parenthesized_expression "(pcVar11 == (char *)0x0)" ( (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" { (expression_statement "pcVar10 = strstr(__haystack,"gcc2_compiled");" (assignment_expression "pcVar10 = strstr(__haystack,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack,"gcc2_compiled")" identifier (argument_list "(__haystack,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (labeled_statement "joined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }" statement_identifier : (if_statement "if (pcVar10 != (char *)0x0) {\n      return -1;\n    }" if (parenthesized_expression "(pcVar10 != (char *)0x0)" ( (binary_expression "pcVar10 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) }))) })))) (if_statement "if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" if (parenthesized_expression "(((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))))))" ( (binary_expression "((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))" (parenthesized_expression "((*(byte *)(iVar7 + 0x11) & 0x40) == 0)" ( (binary_expression "(*(byte *)(iVar7 + 0x11) & 0x40) == 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x11) & 0x40)" ( (binary_expression "*(byte *)(iVar7 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar7 + 0x11)" * (cast_expression "(byte *)(iVar7 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x11)" ( (binary_expression "iVar7 + 0x11" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))" ( (parenthesized_expression "((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))))" ( (binary_expression "(sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))" (parenthesized_expression "(sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.'))" ( (comma_expression "sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')" (assignment_expression "sVar12 = strlen(pcVar18)" identifier = (call_expression "strlen(pcVar18)" identifier (argument_list "(pcVar18)" ( identifier )))) , (binary_expression "sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')" (binary_expression "sVar12 < 3" identifier < number_literal) || (parenthesized_expression "(pcVar18[sVar12 - 2] != '.')" ( (binary_expression "pcVar18[sVar12 - 2] != '.'" (subscript_expression "pcVar18[sVar12 - 2]" identifier [ (binary_expression "sVar12 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) )))) )) || (parenthesized_expression "((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))" ( (parenthesized_expression "(pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))" ( (binary_expression "pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')" (binary_expression "pcVar18[sVar12 - 1] != 'o'" (subscript_expression "pcVar18[sVar12 - 1]" identifier [ (binary_expression "sVar12 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) && (parenthesized_expression "(pcVar18[sVar12 - 1] != 'a')" ( (binary_expression "pcVar18[sVar12 - 1] != 'a'" (subscript_expression "pcVar18[sVar12 - 1]" identifier [ (binary_expression "sVar12 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) ))) )) ))) )) ))) )) (compound_statement "{\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }" { (if_statement "if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x11) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x11) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x11) & 0x40)" ( (binary_expression "*(byte *)(iVar8 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar8 + 0x11)" * (cast_expression "(byte *)(iVar8 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x11)" ( (binary_expression "iVar8 + 0x11" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar15 = 0xffffffff;" (assignment_expression "uVar15 = 0xffffffff" identifier = number_literal) ;) (expression_statement "pcVar18 = __haystack;" (assignment_expression "pcVar18 = __haystack" identifier = identifier) ;) (do_statement "do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (uVar15 == 0) break;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar15 = uVar15 - 1;" (assignment_expression "uVar15 = uVar15 - 1" identifier = (binary_expression "uVar15 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar18;" (assignment_expression "cVar1 = *pcVar18" identifier = (pointer_expression "*pcVar18" * identifier)) ;) (expression_statement "pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;" (assignment_expression "pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pcVar18 + (uint)bVar19 * -2 + 1" (binary_expression "pcVar18 + (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 "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "uVar13 = ~uVar15 - 1;" (assignment_expression "uVar13 = ~uVar15 - 1" identifier = (binary_expression "~uVar15 - 1" (unary_expression "~uVar15" ~ identifier) - number_literal)) ;) (if_statement "if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;" if (parenthesized_expression "((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.'))" ( (binary_expression "(uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')" (parenthesized_expression "(uVar13 < 3)" ( (binary_expression "uVar13 < 3" identifier < number_literal) )) || (parenthesized_expression "(__haystack[~uVar15 - 3] != '.')" ( (binary_expression "__haystack[~uVar15 - 3] != '.'" (subscript_expression "__haystack[~uVar15 - 3]" identifier [ (binary_expression "~uVar15 - 3" (unary_expression "~uVar15" ~ identifier) - number_literal) ]) != (char_literal "'.'" ' character ')) ))) )) (goto_statement "goto LAB_000132b7;" goto statement_identifier ;)) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) }) (else_clause "else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" else (compound_statement "{\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" { (if_statement "if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x11) & 0x40) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x11) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x11) & 0x40)" ( (binary_expression "*(byte *)(iVar8 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar8 + 0x11)" * (cast_expression "(byte *)(iVar8 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x11)" ( (binary_expression "iVar8 + 0x11" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000132b7;" goto statement_identifier ;)) (expression_statement "uVar13 = strlen(__haystack);" (assignment_expression "uVar13 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) ;) (if_statement "if (uVar13 < 3) {\n      return -1;\n    }" if (parenthesized_expression "(uVar13 < 3)" ( (binary_expression "uVar13 < 3" identifier < number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }" if (parenthesized_expression "(__haystack[uVar13 - 2] != '.')" ( (binary_expression "__haystack[uVar13 - 2] != '.'" (subscript_expression "__haystack[uVar13 - 2]" identifier [ (binary_expression "uVar13 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" identifier = true) ;) }))) (if_statement "if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }" if (parenthesized_expression "((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a'))" ( (binary_expression "(__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')" (parenthesized_expression "(__haystack[uVar13 - 1] == 'o')" ( (binary_expression "__haystack[uVar13 - 1] == 'o'" (subscript_expression "__haystack[uVar13 - 1]" identifier [ (binary_expression "uVar13 - 1" identifier - number_literal) ]) == (char_literal "'o'" ' character ')) )) || (parenthesized_expression "(__haystack[uVar13 - 1] == 'a')" ( (binary_expression "__haystack[uVar13 - 1] == 'a'" (subscript_expression "__haystack[uVar13 - 1]" identifier [ (binary_expression "uVar13 - 1" identifier - number_literal) ]) == (char_literal "'a'" ' character ')) ))) )) (compound_statement "{\n    if (!bVar6) {\n      return 1;\n    }\n  }" { (if_statement "if (!bVar6) {\n      return 1;\n    }" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (bVar6) {\n    return -1;\n  }" else (if_statement "if (bVar6) {\n    return -1;\n  }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })))) (labeled_statement "LAB_000132b7:\n  iVar7 = FUN_00012df0();" statement_identifier : (expression_statement "iVar7 = FUN_00012df0();" (assignment_expression "iVar7 = FUN_00012df0()" identifier = (call_expression "FUN_00012df0()" identifier (argument_list "()" ( )))) ;)) (return_statement "return iVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != IDENT)) )) (compound_statement { (return_statement return (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) <= (binary_expression IDENT - IDENT))) ))) * LIT) + LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != IDENT)) )) (compound_statement { (return_statement return (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) <= (binary_expression IDENT - IDENT))) ))) * LIT) + LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression 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 = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) }))) })))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression (binary_expression IDENT < LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) != (char_literal ' character ')) )))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) != (char_literal ' character ')) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) != (char_literal ' character ')) ))) )) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (unary_expression ~ IDENT) - LIT) ]) != (char_literal ' character ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) == (char_literal ' character ')) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) == (char_literal ' character ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (return_statement return LIT ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (return_statement return IDENT ;) })))
(function_definition "int FUN_00013020(undefined4 param_1,undefined4 param_2)\n\n{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  char *pcVar18;\n  byte bVar19;\n  \n  bVar19 = 0;\n  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);\n  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);\n  if ((iVar7 == 0) || (iVar8 == 0)) {\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }\n  puVar2 = *(undefined **)(iVar7 + 0x14);\n  puVar3 = *(undefined **)(iVar8 + 0x14);\n  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    \n    abort();\n  }\n  uVar13 = *(uint *)(puVar2 + 0x1c);\n  uVar15 = *(uint *)(puVar2 + 0x20);\n  uVar16 = uVar13 + *(uint *)(iVar7 + 8);\n  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));\n  uVar4 = *(uint *)(puVar3 + 0x20);\n  uVar5 = *(uint *)(puVar3 + 0x1c);\n  uVar9 = uVar5 + *(uint *)(iVar8 + 8);\n  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));\n  if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }\n  if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }\n  pcVar18 = *(char **)(iVar7 + 4);\n  __haystack = *(char **)(iVar8 + 4);\n  pcVar10 = strstr(pcVar18,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar7 = FUN_00012df0();\n  return iVar7;\n}" (primitive_type "int") (function_declarator "FUN_00013020(undefined4 param_1,undefined4 param_2)" (identifier "FUN_00013020") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  char *__haystack;\n  bool bVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  uint uVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  char *pcVar18;\n  byte bVar19;\n  \n  bVar19 = 0;\n  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);\n  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);\n  if ((iVar7 == 0) || (iVar8 == 0)) {\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }\n  puVar2 = *(undefined **)(iVar7 + 0x14);\n  puVar3 = *(undefined **)(iVar8 + 0x14);\n  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    \n    abort();\n  }\n  uVar13 = *(uint *)(puVar2 + 0x1c);\n  uVar15 = *(uint *)(puVar2 + 0x20);\n  uVar16 = uVar13 + *(uint *)(iVar7 + 8);\n  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));\n  uVar4 = *(uint *)(puVar3 + 0x20);\n  uVar5 = *(uint *)(puVar3 + 0x1c);\n  uVar9 = uVar5 + *(uint *)(iVar8 + 8);\n  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));\n  if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }\n  if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }\n  pcVar18 = *(char **)(iVar7 + 4);\n  __haystack = *(char **)(iVar8 + 4);\n  pcVar10 = strstr(pcVar18,"gnu_compiled");\n  pcVar11 = strstr(__haystack,"gnu_compiled");\n  if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }\n  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }\n  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }\nLAB_000132b7:\n  iVar7 = FUN_00012df0();\n  return iVar7;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "char *__haystack;" (primitive_type "char") (pointer_declarator "*__haystack" (* "*") (identifier "__haystack")) (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "char *pcVar11;" (primitive_type "char") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "size_t sVar12;" (primitive_type "size_t") (identifier "sVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "char *pcVar18;" (primitive_type "char") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "byte bVar19;" (type_identifier "byte") (identifier "bVar19") (; ";")) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" (identifier "bVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);" (assignment_expression "iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" (parenthesized_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))" (( "(") (pointer_expression "**(code **)(DAT_0001d3cc[1] + 0x13c)" (* "*") (pointer_expression "*(code **)(DAT_0001d3cc[1] + 0x13c)" (* "*") (cast_expression "(code **)(DAT_0001d3cc[1] + 0x13c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_0001d3cc[1] + 0x13c)" (( "(") (binary_expression "DAT_0001d3cc[1] + 0x13c" (subscript_expression "DAT_0001d3cc[1]" (identifier "DAT_0001d3cc") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x13c")) () ")"))))) () ")")) (argument_list "(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4)" (( "(") (identifier "DAT_0001d3cc") (, ",") (identifier "DAT_0001d3c8") (, ",") (identifier "param_1") (, ",") (identifier "DAT_0001d3c4") () ")")))) (; ";")) (expression_statement "iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);" (assignment_expression "iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" (parenthesized_expression "(**(code **)(DAT_0001d3cc[1] + 0x13c))" (( "(") (pointer_expression "**(code **)(DAT_0001d3cc[1] + 0x13c)" (* "*") (pointer_expression "*(code **)(DAT_0001d3cc[1] + 0x13c)" (* "*") (cast_expression "(code **)(DAT_0001d3cc[1] + 0x13c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_0001d3cc[1] + 0x13c)" (( "(") (binary_expression "DAT_0001d3cc[1] + 0x13c" (subscript_expression "DAT_0001d3cc[1]" (identifier "DAT_0001d3cc") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x13c")) () ")"))))) () ")")) (argument_list "(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0)" (( "(") (identifier "DAT_0001d3cc") (, ",") (identifier "DAT_0001d3c8") (, ",") (identifier "param_2") (, ",") (identifier "DAT_0001d3c0") () ")")))) (; ";")) (if_statement "if ((iVar7 == 0) || (iVar8 == 0)) {\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }" (if "if") (parenthesized_expression "((iVar7 == 0) || (iVar8 == 0))" (( "(") (binary_expression "(iVar7 == 0) || (iVar8 == 0)" (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_00015650(*DAT_0001d3cc);\n  }" ({ "{") (expression_statement "FUN_00015650(*DAT_0001d3cc);" (call_expression "FUN_00015650(*DAT_0001d3cc)" (identifier "FUN_00015650") (argument_list "(*DAT_0001d3cc)" (( "(") (pointer_expression "*DAT_0001d3cc" (* "*") (identifier "DAT_0001d3cc")) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar2 = *(undefined **)(iVar7 + 0x14);" (assignment_expression "puVar2 = *(undefined **)(iVar7 + 0x14)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined **)(iVar7 + 0x14)" (* "*") (cast_expression "(undefined **)(iVar7 + 0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x14)" (( "(") (binary_expression "iVar7 + 0x14" (identifier "iVar7") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "puVar3 = *(undefined **)(iVar8 + 0x14);" (assignment_expression "puVar3 = *(undefined **)(iVar8 + 0x14)" (identifier "puVar3") (= "=") (pointer_expression "*(undefined **)(iVar8 + 0x14)" (* "*") (cast_expression "(undefined **)(iVar8 + 0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {\n                    \n    abort();\n  }" (if "if") (parenthesized_expression "((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0))" (( "(") (binary_expression "(puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||\n     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)" (parenthesized_expression "(puVar2 == PTR__bfd_std_section_0001cfec + 0xc0)" (( "(") (binary_expression "puVar2 == PTR__bfd_std_section_0001cfec + 0xc0" (identifier "puVar2") (== "==") (binary_expression "PTR__bfd_std_section_0001cfec + 0xc0" (identifier "PTR__bfd_std_section_0001cfec") (+ "+") (number_literal "0xc0"))) () ")")) (|| "||") (parenthesized_expression "(puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)" (( "(") (binary_expression "puVar3 == PTR__bfd_std_section_0001cfec + 0xc0" (identifier "puVar3") (== "==") (binary_expression "PTR__bfd_std_section_0001cfec + 0xc0" (identifier "PTR__bfd_std_section_0001cfec") (+ "+") (number_literal "0xc0"))) () ")"))) () ")")) (compound_statement "{\n                    \n    abort();\n  }" ({ "{") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar13 = *(uint *)(puVar2 + 0x1c);" (assignment_expression "uVar13 = *(uint *)(puVar2 + 0x1c)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(puVar2 + 0x1c)" (* "*") (cast_expression "(uint *)(puVar2 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1c)" (( "(") (binary_expression "puVar2 + 0x1c" (identifier "puVar2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "uVar15 = *(uint *)(puVar2 + 0x20);" (assignment_expression "uVar15 = *(uint *)(puVar2 + 0x20)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(puVar2 + 0x20)" (* "*") (cast_expression "(uint *)(puVar2 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x20)" (( "(") (binary_expression "puVar2 + 0x20" (identifier "puVar2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar16 = uVar13 + *(uint *)(iVar7 + 8);" (assignment_expression "uVar16 = uVar13 + *(uint *)(iVar7 + 8)" (identifier "uVar16") (= "=") (binary_expression "uVar13 + *(uint *)(iVar7 + 8)" (identifier "uVar13") (+ "+") (pointer_expression "*(uint *)(iVar7 + 8)" (* "*") (cast_expression "(uint *)(iVar7 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (expression_statement "uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));" (assignment_expression "uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" (identifier "uVar14") (= "=") (binary_expression "uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" (binary_expression "uVar15 + *(int *)(iVar7 + 0xc)" (identifier "uVar15") (+ "+") (pointer_expression "*(int *)(iVar7 + 0xc)" (* "*") (cast_expression "(int *)(iVar7 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(uVar13,*(uint *)(iVar7 + 8))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar13,*(uint *)(iVar7 + 8))" (identifier "CARRY4") (argument_list "(uVar13,*(uint *)(iVar7 + 8))" (( "(") (identifier "uVar13") (, ",") (pointer_expression "*(uint *)(iVar7 + 8)" (* "*") (cast_expression "(uint *)(iVar7 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")")))) () ")")))))) (; ";")) (expression_statement "uVar4 = *(uint *)(puVar3 + 0x20);" (assignment_expression "uVar4 = *(uint *)(puVar3 + 0x20)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(puVar3 + 0x20)" (* "*") (cast_expression "(uint *)(puVar3 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x20)" (( "(") (binary_expression "puVar3 + 0x20" (identifier "puVar3") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(uint *)(puVar3 + 0x1c);" (assignment_expression "uVar5 = *(uint *)(puVar3 + 0x1c)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(puVar3 + 0x1c)" (* "*") (cast_expression "(uint *)(puVar3 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x1c)" (( "(") (binary_expression "puVar3 + 0x1c" (identifier "puVar3") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "uVar9 = uVar5 + *(uint *)(iVar8 + 8);" (assignment_expression "uVar9 = uVar5 + *(uint *)(iVar8 + 8)" (identifier "uVar9") (= "=") (binary_expression "uVar5 + *(uint *)(iVar8 + 8)" (identifier "uVar5") (+ "+") (pointer_expression "*(uint *)(iVar8 + 8)" (* "*") (cast_expression "(uint *)(iVar8 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (expression_statement "uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));" (assignment_expression "uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" (identifier "uVar17") (= "=") (binary_expression "uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" (binary_expression "uVar4 + *(int *)(iVar8 + 0xc)" (identifier "uVar4") (+ "+") (pointer_expression "*(int *)(iVar8 + 0xc)" (* "*") (cast_expression "(int *)(iVar8 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(uVar5,*(uint *)(iVar8 + 8))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar5,*(uint *)(iVar8 + 8))" (identifier "CARRY4") (argument_list "(uVar5,*(uint *)(iVar8 + 8))" (( "(") (identifier "uVar5") (, ",") (pointer_expression "*(uint *)(iVar8 + 8)" (* "*") (cast_expression "(uint *)(iVar8 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")")))) () ")")))))) (; ";")) (if_statement "if (uVar14 != uVar17 || uVar16 != uVar9) {\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }" (if "if") (parenthesized_expression "(uVar14 != uVar17 || uVar16 != uVar9)" (( "(") (binary_expression "uVar14 != uVar17 || uVar16 != uVar9" (binary_expression "uVar14 != uVar17" (identifier "uVar14") (!= "!=") (identifier "uVar17")) (|| "||") (binary_expression "uVar16 != uVar9" (identifier "uVar16") (!= "!=") (identifier "uVar9"))) () ")")) (compound_statement "{\n    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;\n  }" ({ "{") (return_statement "return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;" (return "return") (binary_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1" (binary_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2" (call_expression "(uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17)" (( "(") (binary_expression "uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17" (binary_expression "uVar17 <= uVar14" (identifier "uVar17") (<= "<=") (identifier "uVar14")) (&& "&&") (binary_expression "(uint)(uVar16 < uVar9) <= uVar14 - uVar17" (call_expression "(uint)(uVar16 < uVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar16 < uVar9)" (( "(") (binary_expression "uVar16 < uVar9" (identifier "uVar16") (< "<") (identifier "uVar9")) () ")"))) (<= "<=") (binary_expression "uVar14 - uVar17" (identifier "uVar14") (- "-") (identifier "uVar17")))) () ")"))) (* "*") (number_literal "2")) (+ "+") (number_literal "-1")) (; ";")) (} "}"))) (if_statement "if (uVar15 != uVar4 || uVar13 != uVar5) {\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }" (if "if") (parenthesized_expression "(uVar15 != uVar4 || uVar13 != uVar5)" (( "(") (binary_expression "uVar15 != uVar4 || uVar13 != uVar5" (binary_expression "uVar15 != uVar4" (identifier "uVar15") (!= "!=") (identifier "uVar4")) (|| "||") (binary_expression "uVar13 != uVar5" (identifier "uVar13") (!= "!=") (identifier "uVar5"))) () ")")) (compound_statement "{\n    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;\n  }" ({ "{") (return_statement "return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;" (return "return") (binary_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1" (binary_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2" (call_expression "(uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4)" (( "(") (binary_expression "uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4" (binary_expression "uVar4 <= uVar15" (identifier "uVar4") (<= "<=") (identifier "uVar15")) (&& "&&") (binary_expression "(uint)(uVar13 < uVar5) <= uVar15 - uVar4" (call_expression "(uint)(uVar13 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar13 < uVar5)" (( "(") (binary_expression "uVar13 < uVar5" (identifier "uVar13") (< "<") (identifier "uVar5")) () ")"))) (<= "<=") (binary_expression "uVar15 - uVar4" (identifier "uVar15") (- "-") (identifier "uVar4")))) () ")"))) (* "*") (number_literal "2")) (+ "+") (number_literal "-1")) (; ";")) (} "}"))) (expression_statement "pcVar18 = *(char **)(iVar7 + 4);" (assignment_expression "pcVar18 = *(char **)(iVar7 + 4)" (identifier "pcVar18") (= "=") (pointer_expression "*(char **)(iVar7 + 4)" (* "*") (cast_expression "(char **)(iVar7 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "__haystack = *(char **)(iVar8 + 4);" (assignment_expression "__haystack = *(char **)(iVar8 + 4)" (identifier "__haystack") (= "=") (pointer_expression "*(char **)(iVar8 + 4)" (* "*") (cast_expression "(char **)(iVar8 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 4)" (( "(") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar10 = strstr(pcVar18,"gnu_compiled");" (assignment_expression "pcVar10 = strstr(pcVar18,"gnu_compiled")" (identifier "pcVar10") (= "=") (call_expression "strstr(pcVar18,"gnu_compiled")" (identifier "strstr") (argument_list "(pcVar18,"gnu_compiled")" (( "(") (identifier "pcVar18") (, ",") (string_literal ""gnu_compiled"" (" """) (string_content "gnu_compiled") (" """)) () ")")))) (; ";")) (expression_statement "pcVar11 = strstr(__haystack,"gnu_compiled");" (assignment_expression "pcVar11 = strstr(__haystack,"gnu_compiled")" (identifier "pcVar11") (= "=") (call_expression "strstr(__haystack,"gnu_compiled")" (identifier "strstr") (argument_list "(__haystack,"gnu_compiled")" (( "(") (identifier "__haystack") (, ",") (string_literal ""gnu_compiled"" (" """) (string_content "gnu_compiled") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar10 == (char *)0x0) {\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" (if "if") (parenthesized_expression "(pcVar10 == (char *)0x0)" (( "(") (binary_expression "pcVar10 == (char *)0x0" (identifier "pcVar10") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar10 = strstr(pcVar18,"gcc2_compiled");\n    if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;\n    if (pcVar10 == (char *)0x0) {\n      return 1;\n    }\n  }" ({ "{") (expression_statement "pcVar10 = strstr(pcVar18,"gcc2_compiled");" (assignment_expression "pcVar10 = strstr(pcVar18,"gcc2_compiled")" (identifier "pcVar10") (= "=") (call_expression "strstr(pcVar18,"gcc2_compiled")" (identifier "strstr") (argument_list "(pcVar18,"gcc2_compiled")" (( "(") (identifier "pcVar18") (, ",") (string_literal ""gcc2_compiled"" (" """) (string_content "gcc2_compiled") (" """)) () ")")))) (; ";")) (if_statement "if ((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))\n    goto joined_r0x00013322;" (if "if") (parenthesized_expression "((pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))" (( "(") (binary_expression "(pcVar11 == (char *)0x0) &&\n       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0)" (parenthesized_expression "(pcVar11 == (char *)0x0)" (( "(") (binary_expression "pcVar11 == (char *)0x0" (identifier "pcVar11") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0)" (( "(") (comma_expression "pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0" (assignment_expression "pcVar11 = strstr(__haystack,"gcc2_compiled")" (identifier "pcVar11") (= "=") (call_expression "strstr(__haystack,"gcc2_compiled")" (identifier "strstr") (argument_list "(__haystack,"gcc2_compiled")" (( "(") (identifier "__haystack") (, ",") (string_literal ""gcc2_compiled"" (" """) (string_content "gcc2_compiled") (" """)) () ")")))) (, ",") (binary_expression "pcVar11 == (char *)0x0" (identifier "pcVar11") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto joined_r0x00013322;" (goto "goto") (statement_identifier "joined_r0x00013322") (; ";"))) (if_statement "if (pcVar10 == (char *)0x0) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(pcVar10 == (char *)0x0)" (( "(") (binary_expression "pcVar10 == (char *)0x0" (identifier "pcVar10") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" (else "else") (if_statement "if (pcVar11 == (char *)0x0) {\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" (if "if") (parenthesized_expression "(pcVar11 == (char *)0x0)" (( "(") (binary_expression "pcVar11 == (char *)0x0" (identifier "pcVar11") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar10 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }\n  }" ({ "{") (expression_statement "pcVar10 = strstr(__haystack,"gcc2_compiled");" (assignment_expression "pcVar10 = strstr(__haystack,"gcc2_compiled")" (identifier "pcVar10") (= "=") (call_expression "strstr(__haystack,"gcc2_compiled")" (identifier "strstr") (argument_list "(__haystack,"gcc2_compiled")" (( "(") (identifier "__haystack") (, ",") (string_literal ""gcc2_compiled"" (" """) (string_content "gcc2_compiled") (" """)) () ")")))) (; ";")) (labeled_statement "joined_r0x00013322:\n    if (pcVar10 != (char *)0x0) {\n      return -1;\n    }" (statement_identifier "joined_r0x00013322") (: ":") (if_statement "if (pcVar10 != (char *)0x0) {\n      return -1;\n    }" (if "if") (parenthesized_expression "(pcVar10 != (char *)0x0)" (( "(") (binary_expression "pcVar10 != (char *)0x0" (identifier "pcVar10") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return -1;\n    }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}")))) (} "}"))))) (if_statement "if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }\n  else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" (if "if") (parenthesized_expression "(((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))))))" (( "(") (binary_expression "((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&\n     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))" (parenthesized_expression "((*(byte *)(iVar7 + 0x11) & 0x40) == 0)" (( "(") (binary_expression "(*(byte *)(iVar7 + 0x11) & 0x40) == 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x11) & 0x40)" (( "(") (binary_expression "*(byte *)(iVar7 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar7 + 0x11)" (* "*") (cast_expression "(byte *)(iVar7 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x11)" (( "(") (binary_expression "iVar7 + 0x11" (identifier "iVar7") (+ "+") (number_literal "0x11")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))" (( "(") (parenthesized_expression "((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))))" (( "(") (binary_expression "(sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||\n      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))" (parenthesized_expression "(sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.'))" (( "(") (comma_expression "sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')" (assignment_expression "sVar12 = strlen(pcVar18)" (identifier "sVar12") (= "=") (call_expression "strlen(pcVar18)" (identifier "strlen") (argument_list "(pcVar18)" (( "(") (identifier "pcVar18") () ")")))) (, ",") (binary_expression "sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')" (binary_expression "sVar12 < 3" (identifier "sVar12") (< "<") (number_literal "3")) (|| "||") (parenthesized_expression "(pcVar18[sVar12 - 2] != '.')" (( "(") (binary_expression "pcVar18[sVar12 - 2] != '.'" (subscript_expression "pcVar18[sVar12 - 2]" (identifier "pcVar18") ([ "[") (binary_expression "sVar12 - 2" (identifier "sVar12") (- "-") (number_literal "2")) (] "]")) (!= "!=") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")))) () ")")) (|| "||") (parenthesized_expression "((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))" (( "(") (parenthesized_expression "(pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a'))" (( "(") (binary_expression "pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')" (binary_expression "pcVar18[sVar12 - 1] != 'o'" (subscript_expression "pcVar18[sVar12 - 1]" (identifier "pcVar18") ([ "[") (binary_expression "sVar12 - 1" (identifier "sVar12") (- "-") (number_literal "1")) (] "]")) (!= "!=") (char_literal "'o'" (' "'") (character "o") (' "'"))) (&& "&&") (parenthesized_expression "(pcVar18[sVar12 - 1] != 'a')" (( "(") (binary_expression "pcVar18[sVar12 - 1] != 'a'" (subscript_expression "pcVar18[sVar12 - 1]" (identifier "pcVar18") ([ "[") (binary_expression "sVar12 - 1" (identifier "sVar12") (- "-") (number_literal "1")) (] "]")) (!= "!=") (char_literal "'a'" (' "'") (character "a") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }\n    uVar15 = 0xffffffff;\n    pcVar18 = __haystack;\n    do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');\n    uVar13 = ~uVar15 - 1;\n    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;\n    bVar6 = false;\n  }" ({ "{") (if_statement "if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {\n      return 1;\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x11) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x11) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x11) & 0x40)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar8 + 0x11)" (* "*") (cast_expression "(byte *)(iVar8 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x11)" (( "(") (binary_expression "iVar8 + 0x11" (identifier "iVar8") (+ "+") (number_literal "0x11")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar15 = 0xffffffff;" (assignment_expression "uVar15 = 0xffffffff" (identifier "uVar15") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "pcVar18 = __haystack;" (assignment_expression "pcVar18 = __haystack" (identifier "pcVar18") (= "=") (identifier "__haystack")) (; ";")) (do_statement "do {\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    } while (cVar1 != '\0');" (do "do") (compound_statement "{\n      if (uVar15 == 0) break;\n      uVar15 = uVar15 - 1;\n      cVar1 = *pcVar18;\n      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;\n    }" ({ "{") (if_statement "if (uVar15 == 0) break;" (if "if") (parenthesized_expression "(uVar15 == 0)" (( "(") (binary_expression "uVar15 == 0" (identifier "uVar15") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar15 = uVar15 - 1;" (assignment_expression "uVar15 = uVar15 - 1" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar18;" (assignment_expression "cVar1 = *pcVar18" (identifier "cVar1") (= "=") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18"))) (; ";")) (expression_statement "pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;" (assignment_expression "pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1" (identifier "pcVar18") (= "=") (binary_expression "pcVar18 + (uint)bVar19 * -2 + 1" (binary_expression "pcVar18 + (uint)bVar19 * -2" (identifier "pcVar18") (+ "+") (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 "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "uVar13 = ~uVar15 - 1;" (assignment_expression "uVar13 = ~uVar15 - 1" (identifier "uVar13") (= "=") (binary_expression "~uVar15 - 1" (unary_expression "~uVar15" (~ "~") (identifier "uVar15")) (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;" (if "if") (parenthesized_expression "((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.'))" (( "(") (binary_expression "(uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')" (parenthesized_expression "(uVar13 < 3)" (( "(") (binary_expression "uVar13 < 3" (identifier "uVar13") (< "<") (number_literal "3")) () ")")) (|| "||") (parenthesized_expression "(__haystack[~uVar15 - 3] != '.')" (( "(") (binary_expression "__haystack[~uVar15 - 3] != '.'" (subscript_expression "__haystack[~uVar15 - 3]" (identifier "__haystack") ([ "[") (binary_expression "~uVar15 - 3" (unary_expression "~uVar15" (~ "~") (identifier "uVar15")) (- "-") (number_literal "3")) (] "]")) (!= "!=") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_000132b7;" (goto "goto") (statement_identifier "LAB_000132b7") (; ";"))) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" (else "else") (compound_statement "{\n    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;\n    uVar13 = strlen(__haystack);\n    if (uVar13 < 3) {\n      return -1;\n    }\n    if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }\n    bVar6 = true;\n  }" ({ "{") (if_statement "if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x11) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x11) & 0x40) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x11) & 0x40)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x11) & 0x40" (pointer_expression "*(byte *)(iVar8 + 0x11)" (* "*") (cast_expression "(byte *)(iVar8 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x11)" (( "(") (binary_expression "iVar8 + 0x11" (identifier "iVar8") (+ "+") (number_literal "0x11")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000132b7;" (goto "goto") (statement_identifier "LAB_000132b7") (; ";"))) (expression_statement "uVar13 = strlen(__haystack);" (assignment_expression "uVar13 = strlen(__haystack)" (identifier "uVar13") (= "=") (call_expression "strlen(__haystack)" (identifier "strlen") (argument_list "(__haystack)" (( "(") (identifier "__haystack") () ")")))) (; ";")) (if_statement "if (uVar13 < 3) {\n      return -1;\n    }" (if "if") (parenthesized_expression "(uVar13 < 3)" (( "(") (binary_expression "uVar13 < 3" (identifier "uVar13") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n      return -1;\n    }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))) (if_statement "if (__haystack[uVar13 - 2] != '.') {\n      return -1;\n    }" (if "if") (parenthesized_expression "(__haystack[uVar13 - 2] != '.')" (( "(") (binary_expression "__haystack[uVar13 - 2] != '.'" (subscript_expression "__haystack[uVar13 - 2]" (identifier "__haystack") ([ "[") (binary_expression "uVar13 - 2" (identifier "uVar13") (- "-") (number_literal "2")) (] "]")) (!= "!=") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (compound_statement "{\n      return -1;\n    }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))) (expression_statement "bVar6 = true;" (assignment_expression "bVar6 = true" (identifier "bVar6") (= "=") (true "true")) (; ";")) (} "}")))) (if_statement "if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {\n    if (!bVar6) {\n      return 1;\n    }\n  }\n  else if (bVar6) {\n    return -1;\n  }" (if "if") (parenthesized_expression "((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a'))" (( "(") (binary_expression "(__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')" (parenthesized_expression "(__haystack[uVar13 - 1] == 'o')" (( "(") (binary_expression "__haystack[uVar13 - 1] == 'o'" (subscript_expression "__haystack[uVar13 - 1]" (identifier "__haystack") ([ "[") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1")) (] "]")) (== "==") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(__haystack[uVar13 - 1] == 'a')" (( "(") (binary_expression "__haystack[uVar13 - 1] == 'a'" (subscript_expression "__haystack[uVar13 - 1]" (identifier "__haystack") ([ "[") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1")) (] "]")) (== "==") (char_literal "'a'" (' "'") (character "a") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    if (!bVar6) {\n      return 1;\n    }\n  }" ({ "{") (if_statement "if (!bVar6) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(!bVar6)" (( "(") (unary_expression "!bVar6" (! "!") (identifier "bVar6")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else if (bVar6) {\n    return -1;\n  }" (else "else") (if_statement "if (bVar6) {\n    return -1;\n  }" (if "if") (parenthesized_expression "(bVar6)" (( "(") (identifier "bVar6") () ")")) (compound_statement "{\n    return -1;\n  }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))))) (labeled_statement "LAB_000132b7:\n  iVar7 = FUN_00012df0();" (statement_identifier "LAB_000132b7") (: ":") (expression_statement "iVar7 = FUN_00012df0();" (assignment_expression "iVar7 = FUN_00012df0()" (identifier "iVar7") (= "=") (call_expression "FUN_00012df0()" (identifier "FUN_00012df0") (argument_list "()" (( "(") () ")")))) (; ";"))) (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}")))

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

int function_1(void *P_x,void *P_y)

{
  char var_23;
  type_1 *var_4;
  type_1 *var_6;
  type_2 var_12;
  type_2 var_11;
  char *__haystack;
  bool bVar6;
  size_t ynl;
  type_3 *var_1;
  type_3 *var_2;
  type_2 var_16;
  char *var_18;
  char *var_19;
  size_t var_21;
  type_2 var_8;
  int iVar14;
  type_2 var_13;
  type_2 var_9;
  type_2 var_15;
  type_2 var_14;
  char *var_22;
  type_4 bVar20;
  
  bVar20 = 0;
  var_1 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);
  var_2 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);
  if ((var_1 == (type_3 *)0x0) || (var_2 == (type_3 *)0x0)) {
                    /* WARNING: Subroutine does not return */
    var_3(sort_bfd->filename);
  }
  var_4 = var_1->section;
  var_6 = var_2->section;
  if ((var_4 == (type_1 *)(var_5 + 0xc0)) ||
     (var_6 == (type_1 *)(var_5 + 0xc0))) {
                    /* WARNING: Subroutine does not return */
    var_7();
  }
  var_8 = (type_2)var_4->vma;
  var_9 = *(type_2 *)((int)&var_4->vma + 4);
  var_15 = var_8 + (int)var_1->value;
  var_13 = var_9 + *(int *)((int)&var_1->value + 4) + (type_2)var_10(var_8,(type_2)var_1->value);
  var_12 = *(type_2 *)((int)&var_6->vma + 4);
  var_11 = (type_2)var_6->vma;
  var_16 = var_11 + (int)var_2->value;
  var_14 = var_12 + *(int *)((int)&var_2->value + 4) + (type_2)var_10(var_11,(type_2)var_2->value);
  if (var_13 != var_14 || var_15 != var_16) {
    return (type_2)(var_14 <= var_13 && (type_2)(var_15 < var_16) <= var_13 - var_14) * 2 + -1;
  }
  if (var_9 != var_12 || var_8 != var_11) {
    return (type_2)(var_12 <= var_9 && (type_2)(var_8 < var_11) <= var_9 - var_12) * 2 + -1;
  }
  var_22 = var_1->name;
  __haystack = var_2->name;
  var_18 = var_17(var_22,"gnu_compiled");
  var_19 = var_17(__haystack,"gnu_compiled");
  if (var_18 == (char *)0x0) {
    var_18 = var_17(var_22,"gcc2_compiled");
    if ((var_19 == (char *)0x0) &&
       (var_19 = var_17(__haystack,"gcc2_compiled"), var_19 == (char *)0x0))
    goto joined_r0x00013322;
    if (var_18 == (char *)0x0) {
      return 1;
    }
  }
  else if (var_19 == (char *)0x0) {
    var_18 = var_17(__haystack,"gcc2_compiled");
joined_r0x00013322:
    if (var_18 != (char *)0x0) {
      return -1;
    }
  }
  if (((var_1->flags & 0x4000) == 0) &&
     (((var_21 = var_20(var_22), var_21 < 3 || (var_22[var_21 - 2] != '.')) ||
      ((var_22[var_21 - 1] != 'o' && (var_22[var_21 - 1] != 'a')))))) {
    if ((var_2->flags & 0x4000) != 0) {
      return 1;
    }
    var_9 = 0xffffffff;
    var_22 = __haystack;
    do {
      if (var_9 == 0) break;
      var_9 = var_9 - 1;
      var_23 = *var_22;
      var_22 = var_22 + (type_2)bVar20 * -2 + 1;
    } while (var_23 != '\0');
    var_8 = ~var_9 - 1;
    if ((var_8 < 3) || (__haystack[~var_9 - 3] != '.')) goto LAB_000132b7;
    bVar6 = false;
  }
  else {
    if ((var_2->flags & 0x4000) != 0) goto LAB_000132b7;
    var_8 = var_20(__haystack);
    if (var_8 < 3) {
      return -1;
    }
    if (__haystack[var_8 - 2] != '.') {
      return -1;
    }
    bVar6 = true;
  }
  if ((__haystack[var_8 - 1] == 'o') || (__haystack[var_8 - 1] == 'a')) {
    if (!bVar6) {
      return 1;
    }
  }
  else if (bVar6) {
    return -1;
  }
LAB_000132b7:
  iVar14 = var_24(P_x,P_y);
  return iVar14;
}


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

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

int MASKED(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined *puVar2;
  undefined *puVar3;
  uint uVar4;
  uint uVar5;
  char *__haystack;
  bool bVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  char *pcVar10;
  char *pcVar11;
  size_t sVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  char *pcVar18;
  byte bVar19;
  
  bVar19 = 0;
  iVar7 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_1,DAT_0001d3c4);
  iVar8 = (**(code **)(DAT_0001d3cc[1] + 0x13c))(DAT_0001d3cc,DAT_0001d3c8,param_2,DAT_0001d3c0);
  if ((iVar7 == 0) || (iVar8 == 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_00015650(*DAT_0001d3cc);
  }
  puVar2 = *(undefined **)(iVar7 + 0x14);
  puVar3 = *(undefined **)(iVar8 + 0x14);
  if ((puVar2 == PTR__bfd_std_section_0001cfec + 0xc0) ||
     (puVar3 == PTR__bfd_std_section_0001cfec + 0xc0)) {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  uVar13 = *(uint *)(puVar2 + 0x1c);
  uVar15 = *(uint *)(puVar2 + 0x20);
  uVar16 = uVar13 + *(uint *)(iVar7 + 8);
  uVar14 = uVar15 + *(int *)(iVar7 + 0xc) + (uint)CARRY4(uVar13,*(uint *)(iVar7 + 8));
  uVar4 = *(uint *)(puVar3 + 0x20);
  uVar5 = *(uint *)(puVar3 + 0x1c);
  uVar9 = uVar5 + *(uint *)(iVar8 + 8);
  uVar17 = uVar4 + *(int *)(iVar8 + 0xc) + (uint)CARRY4(uVar5,*(uint *)(iVar8 + 8));
  if (uVar14 != uVar17 || uVar16 != uVar9) {
    return (uint)(uVar17 <= uVar14 && (uint)(uVar16 < uVar9) <= uVar14 - uVar17) * 2 + -1;
  }
  if (uVar15 != uVar4 || uVar13 != uVar5) {
    return (uint)(uVar4 <= uVar15 && (uint)(uVar13 < uVar5) <= uVar15 - uVar4) * 2 + -1;
  }
  pcVar18 = *(char **)(iVar7 + 4);
  __haystack = *(char **)(iVar8 + 4);
  pcVar10 = strstr(pcVar18,"gnu_compiled");
  pcVar11 = strstr(__haystack,"gnu_compiled");
  if (pcVar10 == (char *)0x0) {
    pcVar10 = strstr(pcVar18,"gcc2_compiled");
    if ((pcVar11 == (char *)0x0) &&
       (pcVar11 = strstr(__haystack,"gcc2_compiled"), pcVar11 == (char *)0x0))
    goto joined_r0x00013322;
    if (pcVar10 == (char *)0x0) {
      return 1;
    }
  }
  else if (pcVar11 == (char *)0x0) {
    pcVar10 = strstr(__haystack,"gcc2_compiled");
joined_r0x00013322:
    if (pcVar10 != (char *)0x0) {
      return -1;
    }
  }
  if (((*(byte *)(iVar7 + 0x11) & 0x40) == 0) &&
     (((sVar12 = strlen(pcVar18), sVar12 < 3 || (pcVar18[sVar12 - 2] != '.')) ||
      ((pcVar18[sVar12 - 1] != 'o' && (pcVar18[sVar12 - 1] != 'a')))))) {
    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) {
      return 1;
    }
    uVar15 = 0xffffffff;
    pcVar18 = __haystack;
    do {
      if (uVar15 == 0) break;
      uVar15 = uVar15 - 1;
      cVar1 = *pcVar18;
      pcVar18 = pcVar18 + (uint)bVar19 * -2 + 1;
    } while (cVar1 != '\0');
    uVar13 = ~uVar15 - 1;
    if ((uVar13 < 3) || (__haystack[~uVar15 - 3] != '.')) goto LAB_000132b7;
    bVar6 = false;
  }
  else {
    if ((*(byte *)(iVar8 + 0x11) & 0x40) != 0) goto LAB_000132b7;
    uVar13 = strlen(__haystack);
    if (uVar13 < 3) {
      return -1;
    }
    if (__haystack[uVar13 - 2] != '.') {
      return -1;
    }
    bVar6 = true;
  }
  if ((__haystack[uVar13 - 1] == 'o') || (__haystack[uVar13 - 1] == 'a')) {
    if (!bVar6) {
      return 1;
    }
  }
  else if (bVar6) {
    return -1;
  }
LAB_000132b7:
  iVar7 = FUN_00012df0();
  return iVar7;
}

