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

int compare_symbols(void *ap,void *bp)

{
  int *piVar1;
  int *piVar2;
  char *__haystack;
  char *__haystack_00;
  char *pcVar3;
  char *pcVar4;
  size_t sVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  
                    /* WARNING: Load size is inaccurate */
  piVar1 = *ap;
                    /* WARNING: Load size is inaccurate */
  piVar2 = *bp;
  uVar6 = piVar1[4];
  uVar8 = piVar2[4];
  uVar7 = piVar1[2] + *(int *)(uVar6 + 0x1c);
  uVar9 = piVar2[2] + *(int *)(uVar8 + 0x1c);
  iVar10 = 1;
  if (uVar9 < uVar7) {
    return 1;
  }
  if (uVar7 < uVar9) {
    return -1;
  }
  if (uVar8 < uVar6) {
    return 1;
  }
  if (uVar6 < uVar8) {
    return -1;
  }
  __haystack = (char *)piVar2[1];
  __haystack_00 = (char *)piVar1[1];
  pcVar3 = strstr(__haystack_00,"gnu_compiled");
  pcVar4 = strstr(__haystack,"gnu_compiled");
  if (pcVar3 == (char *)0x0) {
    pcVar3 = strstr(__haystack_00,"gcc2_compiled");
    if ((pcVar4 != (char *)0x0) ||
       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)) {
      iVar10 = -1;
      goto joined_r0x00015b07;
    }
    if (pcVar3 != (char *)0x0) {
      return 1;
    }
  }
  else if (pcVar4 == (char *)0x0) {
    pcVar3 = strstr(__haystack,"gcc2_compiled");
joined_r0x00015b07:
    if (pcVar3 == (char *)0x0) {
      return iVar10;
    }
  }
  uVar6 = piVar1[3];
  if (((uVar6 & 0x4000) == 0) &&
     ((sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||
      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))))) {
    uVar8 = piVar2[3];
    if ((uVar8 & 0x4000) != 0) {
      return -1;
    }
    sVar5 = strlen(__haystack);
    if (__haystack[sVar5 - 2] == '.') {
      if (__haystack[sVar5 - 1] == 'o') {
        return -1;
      }
      if (__haystack[sVar5 - 1] == 'a') {
        return -1;
      }
    }
  }
  else {
    uVar8 = piVar2[3];
    if (((uVar8 & 0x4000) == 0) &&
       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||
        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))) {
      return 1;
    }
  }
  uVar7 = uVar6 ^ uVar8;
  if ((uVar7 & 4) != 0) {
    return -(uint)((uVar6 & 4) == 0) | 1;
  }
  if ((uVar7 & 8) != 0) {
    return (-(uint)((uVar6 & 8) == 0) & 2) - 1;
  }
  if ((uVar7 & 1) != 0) {
    return -(uint)((uVar6 & 1) == 0) | 1;
  }
  if ((uVar7 & 2) != 0) {
    return (-(uint)((uVar6 & 2) == 0) & 2) - 1;
  }
  if ((*(int *)(*(int *)(*piVar1 + 4) + 4) != 5) || (*(int *)(*(int *)(*piVar2 + 4) + 4) != 5))
  goto LAB_00015bfb;
  if ((uVar6 & 0x200100) == 0) {
    uVar6 = piVar1[7];
    uVar7 = 0;
    if ((uVar8 & 0x200100) == 0) goto LAB_00015c4c;
  }
  else {
    if ((uVar8 & 0x200100) != 0) goto LAB_00015bfb;
    uVar6 = 0;
LAB_00015c4c:
    uVar7 = piVar2[7];
  }
  if (uVar7 != uVar6) {
    return -(uint)(uVar7 < uVar6) | 1;
  }
LAB_00015bfb:
  if (*__haystack_00 == '.') {
    if (*__haystack != '.') {
      return 1;
    }
  }
  else if (*__haystack == '.') {
    return -1;
  }
  iVar10 = strcmp(__haystack_00,__haystack);
  return iVar10;
}



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

uint FUN_00015990(int *param_1,int *param_2)

{
  char *__haystack;
  char *__haystack_00;
  char *pcVar1;
  char *pcVar2;
  size_t sVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  
  param_1 = (int *)*param_1;
  param_2 = (int *)*param_2;
  uVar4 = param_1[4];
  uVar6 = param_2[4];
  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);
  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);
  uVar8 = 1;
  if (uVar7 < uVar5) {
    return 1;
  }
  if (uVar5 < uVar7) {
    return 0xffffffff;
  }
  if (uVar6 < uVar4) {
    return 1;
  }
  if (uVar4 < uVar6) {
    return 0xffffffff;
  }
  __haystack = (char *)param_2[1];
  __haystack_00 = (char *)param_1[1];
  pcVar1 = strstr(__haystack_00,"gnu_compiled");
  pcVar2 = strstr(__haystack,"gnu_compiled");
  if (pcVar1 == (char *)0x0) {
    pcVar1 = strstr(__haystack_00,"gcc2_compiled");
    if ((pcVar2 != (char *)0x0) ||
       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {
      uVar8 = 0xffffffff;
      goto joined_r0x00015b07;
    }
    if (pcVar1 != (char *)0x0) {
      return 1;
    }
  }
  else if (pcVar2 == (char *)0x0) {
    pcVar1 = strstr(__haystack,"gcc2_compiled");
joined_r0x00015b07:
    if (pcVar1 == (char *)0x0) {
      return uVar8;
    }
  }
  uVar4 = param_1[3];
  if (((uVar4 & 0x4000) == 0) &&
     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||
      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {
    uVar6 = param_2[3];
    if ((uVar6 & 0x4000) != 0) {
      return 0xffffffff;
    }
    sVar3 = strlen(__haystack);
    if (__haystack[sVar3 - 2] == '.') {
      if (__haystack[sVar3 - 1] == 'o') {
        return 0xffffffff;
      }
      if (__haystack[sVar3 - 1] == 'a') {
        return 0xffffffff;
      }
    }
  }
  else {
    uVar6 = param_2[3];
    if (((uVar6 & 0x4000) == 0) &&
       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||
        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {
      return 1;
    }
  }
  uVar8 = uVar4 ^ uVar6;
  if ((uVar8 & 4) != 0) {
    return -(uint)((uVar4 & 4) == 0) | 1;
  }
  if ((uVar8 & 8) != 0) {
    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;
  }
  if ((uVar8 & 1) != 0) {
    return -(uint)((uVar4 & 1) == 0) | 1;
  }
  if ((uVar8 & 2) != 0) {
    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;
  }
  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))
  goto LAB_00015bfb;
  if ((uVar4 & 0x200100) == 0) {
    uVar4 = param_1[7];
    uVar8 = 0;
    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;
  }
  else {
    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;
    uVar4 = 0;
LAB_00015c4c:
    uVar8 = param_2[7];
  }
  if (uVar8 != uVar4) {
    return -(uint)(uVar8 < uVar4) | 1;
  }
LAB_00015bfb:
  if (*__haystack_00 == '.') {
    if (*__haystack != '.') {
      return 1;
    }
  }
  else if (*__haystack == '.') {
    return 0xffffffff;
  }
  uVar4 = strcmp(__haystack_00,__haystack);
  return uVar4;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000143a0
ADD EBX,0x5a667
SUB ESP,0x1c
MOV EAX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [EAX]
MOV EAX,dword ptr [ESI + 0x10]
MOV EDX,dword ptr [ESI + 0x8]
MOV ECX,dword ptr [EDI + 0x10]
MOV EBP,dword ptr [EDI + 0x8]
ADD EDX,dword ptr [EAX + 0x1c]
ADD EBP,dword ptr [ECX + 0x1c]
MOV dword ptr [ESP],EBP
MOV EBP,0x1
CMP EDX,dword ptr [ESP]
JA 0x00015a95
JC 0x00015a90
CMP EAX,ECX
JA 0x00015a95
JC 0x00015a90
MOV ECX,dword ptr [EDI + 0x4]
MOV EAX,dword ptr [ESI + 0x4]
SUB ESP,0x8
LEA EDX,[EBX + 0xfffdc5b3]
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x8],ECX
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
PUSH EAX
CALL 0x00013060
POP EDX
POP ECX
MOV EDX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x10],EAX
PUSH EDX
PUSH dword ptr [ESP + 0xc]
CALL 0x00013060
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST ECX,ECX
JZ 0x00015ad8
TEST EAX,EAX
JZ 0x00015b30
MOV EBP,dword ptr [ESI + 0xc]
TEST EBP,0x4000
JNZ 0x00015ab0
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL 0x00013470
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x4]
CMP byte ptr [ECX + EAX*0x1 + -0x2],0x2e
JZ 0x00015aa0
MOV EDX,dword ptr [EDI + 0xc]
TEST DH,0x40
JNZ 0x00015a90
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0xc]
CALL 0x00013470
ADD ESP,0x10
MOV ECX,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x8]
CMP byte ptr [ECX + EAX*0x1 + -0x2],0x2e
JNZ 0x00015abc
MOV ECX,dword ptr [ESP]
MOVZX EAX,byte ptr [ECX + EAX*0x1 + -0x1]
CMP AL,0x6f
JZ 0x00015a90
CMP AL,0x61
JNZ 0x00015abc
MOV EBP,0xffffffff
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOVZX EAX,byte ptr [ECX + EAX*0x1 + -0x1]
CMP AL,0x6f
JZ 0x00015ab0
CMP AL,0x61
JNZ 0x00015a57
LEA ESI,[ESI]
MOV EDX,dword ptr [EDI + 0xc]
TEST DH,0x40
JZ 0x00015ba0
MOV EAX,EBP
XOR EAX,EDX
TEST AL,0x4
JZ 0x00015b10
AND EBP,0x4
CMP EBP,0x1
SBB EBP,EBP
OR EBP,0x1
JMP 0x00015a95
MOV dword ptr [ESP + 0x8],EAX
SUB ESP,0x8
LEA EAX,[EBX + 0xfffdc5c0]
MOV dword ptr [ESP + 0x14],EAX
PUSH EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x00013060
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV ECX,EAX
TEST EDX,EDX
JZ 0x00015b70
MOV EBP,0xffffffff
TEST ECX,ECX
JNZ 0x00015a32
JMP 0x00015a95
TEST AL,0x8
JNZ 0x00015b58
TEST AL,0x1
JZ 0x00015bd0
AND EBP,0x1
CMP EBP,0x1
SBB EBP,EBP
OR EBP,0x1
JMP 0x00015a95
SUB ESP,0x8
LEA EAX,[EBX + 0xfffdc5c0]
PUSH EAX
PUSH dword ptr [ESP + 0xc]
CALL 0x00013060
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00015a32
JMP 0x00015a95
AND EBP,0x8
CMP EBP,0x1
SBB EBP,EBP
AND EBP,0x2
SUB EBP,0x1
JMP 0x00015a95
MOV dword ptr [ESP + 0x8],EAX
SUB ESP,0x8
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0xc]
CALL 0x00013060
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x00015b00
TEST ECX,ECX
JNZ 0x00015a95
JMP 0x00015a32
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0xc]
CALL 0x00013470
ADD ESP,0x10
MOV ECX,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x8]
CMP byte ptr [ECX + EAX*0x1 + -0x2],0x2e
JZ 0x00015c74
MOV EBP,0x1
JMP 0x00015a95
TEST AL,0x2
JZ 0x00015bf0
AND EBP,0x2
CMP EBP,0x1
SBB EBP,EBP
AND EBP,0x2
SUB EBP,0x1
JMP 0x00015a95
MOV EAX,dword ptr [ESI]
MOV EAX,dword ptr [EAX + 0x4]
CMP dword ptr [EAX + 0x4],0x5
JZ 0x00015c2c
MOV EDI,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP]
CMP byte ptr [EDI],0x2e
MOVZX EAX,byte ptr [EAX]
JZ 0x00015c5d
CMP AL,0x2e
JZ 0x00015a90
SUB ESP,0x8
PUSH dword ptr [ESP + 0x8]
PUSH dword ptr [ESP + 0x10]
CALL 0x00013080
ADD ESP,0x10
MOV EBP,EAX
JMP 0x00015a95
MOV EAX,dword ptr [EDI]
MOV EAX,dword ptr [EAX + 0x4]
CMP dword ptr [EAX + 0x4],0x5
JNZ 0x00015bfb
AND EDX,0x200100
AND EBP,0x200100
JNZ 0x00015c6c
MOV EAX,dword ptr [ESI + 0x1c]
TEST EDX,EDX
JNZ 0x00015c4f
MOV EBP,dword ptr [EDI + 0x1c]
CMP EBP,EAX
JZ 0x00015bfb
SBB EBP,EBP
OR EBP,0x1
JMP 0x00015a95
MOV EBP,0x1
CMP AL,0x2e
JNZ 0x00015a95
JMP 0x00015c12
TEST EDX,EDX
JNZ 0x00015bfb
XOR EAX,EAX
JMP 0x00015c4c
MOV ECX,dword ptr [ESP]
MOVZX EAX,byte ptr [ECX + EAX*0x1 + -0x1]
CMP AL,0x61
JZ 0x00015abc
CMP AL,0x6f
JNZ 0x00015bc5
JMP 0x00015abc
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint FUN_00015990(int *param_1,int *param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  size_t sVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  \n  param_1 = (int *)*param_1;\n  param_2 = (int *)*param_2;\n  uVar4 = param_1[4];\n  uVar6 = param_2[4];\n  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);\n  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);\n  uVar8 = 1;\n  if (uVar7 < uVar5) {\n    return 1;\n  }\n  if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }\n  if (uVar6 < uVar4) {\n    return 1;\n  }\n  if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }\n  __haystack = (char *)param_2[1];\n  __haystack_00 = (char *)param_1[1];\n  pcVar1 = strstr(__haystack_00,"gnu_compiled");\n  pcVar2 = strstr(__haystack,"gnu_compiled");\n  if (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }\n  uVar4 = param_1[3];\n  if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar8 = uVar4 ^ uVar6;\n  if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }\n  if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }\n  if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }\n  if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }\n  uVar4 = strcmp(__haystack_00,__haystack);\n  return uVar4;\n}\n\n" comment (function_definition "uint FUN_00015990(int *param_1,int *param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  size_t sVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  \n  param_1 = (int *)*param_1;\n  param_2 = (int *)*param_2;\n  uVar4 = param_1[4];\n  uVar6 = param_2[4];\n  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);\n  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);\n  uVar8 = 1;\n  if (uVar7 < uVar5) {\n    return 1;\n  }\n  if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }\n  if (uVar6 < uVar4) {\n    return 1;\n  }\n  if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }\n  __haystack = (char *)param_2[1];\n  __haystack_00 = (char *)param_1[1];\n  pcVar1 = strstr(__haystack_00,"gnu_compiled");\n  pcVar2 = strstr(__haystack,"gnu_compiled");\n  if (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }\n  uVar4 = param_1[3];\n  if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar8 = uVar4 ^ uVar6;\n  if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }\n  if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }\n  if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }\n  if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }\n  uVar4 = strcmp(__haystack_00,__haystack);\n  return uVar4;\n}" type_identifier (function_declarator "FUN_00015990(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  size_t sVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  \n  param_1 = (int *)*param_1;\n  param_2 = (int *)*param_2;\n  uVar4 = param_1[4];\n  uVar6 = param_2[4];\n  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);\n  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);\n  uVar8 = 1;\n  if (uVar7 < uVar5) {\n    return 1;\n  }\n  if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }\n  if (uVar6 < uVar4) {\n    return 1;\n  }\n  if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }\n  __haystack = (char *)param_2[1];\n  __haystack_00 = (char *)param_1[1];\n  pcVar1 = strstr(__haystack_00,"gnu_compiled");\n  pcVar2 = strstr(__haystack,"gnu_compiled");\n  if (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }\n  uVar4 = param_1[3];\n  if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar8 = uVar4 ^ uVar6;\n  if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }\n  if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }\n  if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }\n  if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }\n  uVar4 = strcmp(__haystack_00,__haystack);\n  return uVar4;\n}" { (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "char *__haystack_00;" primitive_type (pointer_declarator "*__haystack_00" * identifier) ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "param_2 = (int *)*param_2;" (assignment_expression "param_2 = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_2[4];" (assignment_expression "uVar6 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);" (assignment_expression "uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c)" identifier = (binary_expression "param_1[2] + *(int *)(uVar4 + 0x1c)" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (pointer_expression "*(int *)(uVar4 + 0x1c)" * (cast_expression "(int *)(uVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x1c)" ( (binary_expression "uVar4 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);" (assignment_expression "uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c)" identifier = (binary_expression "param_2[2] + *(int *)(uVar6 + 0x1c)" (subscript_expression "param_2[2]" identifier [ number_literal ]) + (pointer_expression "*(int *)(uVar6 + 0x1c)" * (cast_expression "(int *)(uVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (if_statement "if (uVar7 < uVar5) {\n    return 1;\n  }" if (parenthesized_expression "(uVar7 < uVar5)" ( (binary_expression "uVar7 < uVar5" identifier < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(uVar5 < uVar7)" ( (binary_expression "uVar5 < uVar7" identifier < identifier) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (uVar6 < uVar4) {\n    return 1;\n  }" if (parenthesized_expression "(uVar6 < uVar4)" ( (binary_expression "uVar6 < uVar4" identifier < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "__haystack = (char *)param_2[1];" (assignment_expression "__haystack = (char *)param_2[1]" identifier = (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (expression_statement "__haystack_00 = (char *)param_1[1];" (assignment_expression "__haystack_00 = (char *)param_1[1]" identifier = (cast_expression "(char *)param_1[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar1 = strstr(__haystack_00,"gnu_compiled");" (assignment_expression "pcVar1 = strstr(__haystack_00,"gnu_compiled")" identifier = (call_expression "strstr(__haystack_00,"gnu_compiled")" identifier (argument_list "(__haystack_00,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (expression_statement "pcVar2 = strstr(__haystack,"gnu_compiled");" (assignment_expression "pcVar2 = 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 (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }" { (expression_statement "pcVar1 = strstr(__haystack_00,"gcc2_compiled");" (assignment_expression "pcVar1 = strstr(__haystack_00,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack_00,"gcc2_compiled")" identifier (argument_list "(__haystack_00,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (if_statement "if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }" if (parenthesized_expression "((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0))" ( (binary_expression "(pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)" (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)" ( (comma_expression "pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0" (assignment_expression "pcVar2 = 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 "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }" { (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto joined_r0x00015b07;" goto statement_identifier ;) })) (if_statement "if (pcVar1 != (char *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (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 (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" else (if_statement "if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" { (expression_statement "pcVar1 = strstr(__haystack,"gcc2_compiled");" (assignment_expression "pcVar1 = 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_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }" statement_identifier : (if_statement "if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return uVar8;\n    }" { (return_statement "return uVar8;" return identifier ;) }))) })))) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (if_statement "if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))))))" ( (binary_expression "((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))" (parenthesized_expression "((uVar4 & 0x4000) == 0)" ( (binary_expression "(uVar4 & 0x4000) == 0" (parenthesized_expression "(uVar4 & 0x4000)" ( (binary_expression "uVar4 & 0x4000" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))" ( (parenthesized_expression "(sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))))" ( (comma_expression "sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" (assignment_expression "sVar3 = strlen(__haystack_00)" identifier = (call_expression "strlen(__haystack_00)" identifier (argument_list "(__haystack_00)" ( identifier )))) , (binary_expression "__haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" (binary_expression "__haystack_00[sVar3 - 2] != '.'" (subscript_expression "__haystack_00[sVar3 - 2]" identifier [ (binary_expression "sVar3 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) || (parenthesized_expression "((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" ( (parenthesized_expression "(__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))" ( (binary_expression "__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')" (binary_expression "__haystack_00[sVar3 - 1] != 'o'" (subscript_expression "__haystack_00[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) && (parenthesized_expression "(__haystack_00[sVar3 - 1] != 'a')" ( (binary_expression "__haystack_00[sVar3 - 1] != 'a'" (subscript_expression "__haystack_00[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) ))) )) )))) )) ))) )) (compound_statement "{\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }" { (expression_statement "uVar6 = param_2[3];" (assignment_expression "uVar6 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "((uVar6 & 0x4000) != 0)" ( (binary_expression "(uVar6 & 0x4000) != 0" (parenthesized_expression "(uVar6 & 0x4000)" ( (binary_expression "uVar6 & 0x4000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "sVar3 = strlen(__haystack);" (assignment_expression "sVar3 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) ;) (if_statement "if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }" if (parenthesized_expression "(__haystack[sVar3 - 2] == '.')" ( (binary_expression "__haystack[sVar3 - 2] == '.'" (subscript_expression "__haystack[sVar3 - 2]" identifier [ (binary_expression "sVar3 - 2" identifier - number_literal) ]) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }" { (if_statement "if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(__haystack[sVar3 - 1] == 'o')" ( (binary_expression "__haystack[sVar3 - 1] == 'o'" (subscript_expression "__haystack[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) == (char_literal "'o'" ' character ')) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(__haystack[sVar3 - 1] == 'a')" ( (binary_expression "__haystack[sVar3 - 1] == 'a'" (subscript_expression "__haystack[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) == (char_literal "'a'" ' character ')) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) })) }) (else_clause "else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" else (compound_statement "{\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" { (expression_statement "uVar6 = param_2[3];" (assignment_expression "uVar6 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }" if (parenthesized_expression "(((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))))))" ( (binary_expression "((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))" (parenthesized_expression "((uVar6 & 0x4000) == 0)" ( (binary_expression "(uVar6 & 0x4000) == 0" (parenthesized_expression "(uVar6 & 0x4000)" ( (binary_expression "uVar6 & 0x4000" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))" ( (parenthesized_expression "(sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))))" ( (comma_expression "sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" (assignment_expression "sVar3 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) , (binary_expression "__haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" (binary_expression "__haystack[sVar3 - 2] != '.'" (subscript_expression "__haystack[sVar3 - 2]" identifier [ (binary_expression "sVar3 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) || (parenthesized_expression "((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" ( (parenthesized_expression "(__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))" ( (binary_expression "__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')" (binary_expression "__haystack[sVar3 - 1] != 'a'" (subscript_expression "__haystack[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) && (parenthesized_expression "(__haystack[sVar3 - 1] != 'o')" ( (binary_expression "__haystack[sVar3 - 1] != 'o'" (subscript_expression "__haystack[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) ))) )) )))) )) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }))) (expression_statement "uVar8 = uVar4 ^ uVar6;" (assignment_expression "uVar8 = uVar4 ^ uVar6" identifier = (binary_expression "uVar4 ^ uVar6" identifier ^ identifier)) ;) (if_statement "if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }" if (parenthesized_expression "((uVar8 & 4) != 0)" ( (binary_expression "(uVar8 & 4) != 0" (parenthesized_expression "(uVar8 & 4)" ( (binary_expression "uVar8 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }" { (return_statement "return -(uint)((uVar4 & 4) == 0) | 1;" return (binary_expression "-(uint)((uVar4 & 4) == 0) | 1" (unary_expression "-(uint)((uVar4 & 4) == 0)" - (call_expression "(uint)((uVar4 & 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 & 4) == 0)" ( (binary_expression "(uVar4 & 4) == 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) == number_literal) )))) | number_literal) ;) })) (if_statement "if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }" if (parenthesized_expression "((uVar8 & 8) != 0)" ( (binary_expression "(uVar8 & 8) != 0" (parenthesized_expression "(uVar8 & 8)" ( (binary_expression "uVar8 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }" { (return_statement "return (-(uint)((uVar4 & 8) == 0) & 2) - 1;" return (binary_expression "(-(uint)((uVar4 & 8) == 0) & 2) - 1" (parenthesized_expression "(-(uint)((uVar4 & 8) == 0) & 2)" ( (binary_expression "-(uint)((uVar4 & 8) == 0) & 2" (unary_expression "-(uint)((uVar4 & 8) == 0)" - (call_expression "(uint)((uVar4 & 8) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 & 8) == 0)" ( (binary_expression "(uVar4 & 8) == 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) == number_literal) )))) & number_literal) )) - number_literal) ;) })) (if_statement "if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }" if (parenthesized_expression "((uVar8 & 1) != 0)" ( (binary_expression "(uVar8 & 1) != 0" (parenthesized_expression "(uVar8 & 1)" ( (binary_expression "uVar8 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }" { (return_statement "return -(uint)((uVar4 & 1) == 0) | 1;" return (binary_expression "-(uint)((uVar4 & 1) == 0) | 1" (unary_expression "-(uint)((uVar4 & 1) == 0)" - (call_expression "(uint)((uVar4 & 1) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )))) | number_literal) ;) })) (if_statement "if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }" if (parenthesized_expression "((uVar8 & 2) != 0)" ( (binary_expression "(uVar8 & 2) != 0" (parenthesized_expression "(uVar8 & 2)" ( (binary_expression "uVar8 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }" { (return_statement "return (-(uint)((uVar4 & 2) == 0) & 2) - 1;" return (binary_expression "(-(uint)((uVar4 & 2) == 0) & 2) - 1" (parenthesized_expression "(-(uint)((uVar4 & 2) == 0) & 2)" ( (binary_expression "-(uint)((uVar4 & 2) == 0) & 2" (unary_expression "-(uint)((uVar4 & 2) == 0)" - (call_expression "(uint)((uVar4 & 2) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 & 2) == 0)" ( (binary_expression "(uVar4 & 2) == 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) == number_literal) )))) & number_literal) )) - number_literal) ;) })) (if_statement "if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;" if (parenthesized_expression "((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))" ( (binary_expression "(*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5)" (parenthesized_expression "(*(int *)(*(int *)(*param_1 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(*param_1 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(*param_1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(*param_1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 4) + 4)" ( (binary_expression "*(int *)(*param_1 + 4) + 4" (pointer_expression "*(int *)(*param_1 + 4)" * (cast_expression "(int *)(*param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))) + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(*(int *)(*param_2 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(*param_2 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(*param_2 + 4) + 4)" * (cast_expression "(int *)(*(int *)(*param_2 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 4)" ( (binary_expression "*(int *)(*param_2 + 4) + 4" (pointer_expression "*(int *)(*param_2 + 4)" * (cast_expression "(int *)(*param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 4)" ( (binary_expression "*param_2 + 4" (pointer_expression "*param_2" * identifier) + number_literal) )))) + number_literal) )))) != number_literal) ))) )) (goto_statement "goto LAB_00015bfb;" goto statement_identifier ;)) (if_statement "if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" if (parenthesized_expression "((uVar4 & 0x200100) == 0)" ( (binary_expression "(uVar4 & 0x200100) == 0" (parenthesized_expression "(uVar4 & 0x200100)" ( (binary_expression "uVar4 & 0x200100" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }" { (expression_statement "uVar4 = param_1[7];" (assignment_expression "uVar4 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;" if (parenthesized_expression "((uVar6 & 0x200100) == 0)" ( (binary_expression "(uVar6 & 0x200100) == 0" (parenthesized_expression "(uVar6 & 0x200100)" ( (binary_expression "uVar6 & 0x200100" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00015c4c;" goto statement_identifier ;)) }) (else_clause "else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" else (compound_statement "{\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" { (if_statement "if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;" if (parenthesized_expression "((uVar6 & 0x200100) != 0)" ( (binary_expression "(uVar6 & 0x200100) != 0" (parenthesized_expression "(uVar6 & 0x200100)" ( (binary_expression "uVar6 & 0x200100" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00015bfb;" goto statement_identifier ;)) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015c4c:\n    uVar8 = param_2[7];" statement_identifier : (expression_statement "uVar8 = param_2[7];" (assignment_expression "uVar8 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;)) }))) (if_statement "if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }" if (parenthesized_expression "(uVar8 != uVar4)" ( (binary_expression "uVar8 != uVar4" identifier != identifier) )) (compound_statement "{\n    return -(uint)(uVar8 < uVar4) | 1;\n  }" { (return_statement "return -(uint)(uVar8 < uVar4) | 1;" return (binary_expression "-(uint)(uVar8 < uVar4) | 1" (unary_expression "-(uint)(uVar8 < uVar4)" - (call_expression "(uint)(uVar8 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar4)" ( (binary_expression "uVar8 < uVar4" identifier < identifier) )))) | number_literal) ;) })) (labeled_statement "LAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" statement_identifier : (if_statement "if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(*__haystack_00 == '.')" ( (binary_expression "*__haystack_00 == '.'" (pointer_expression "*__haystack_00" * identifier) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }" { (if_statement "if (*__haystack != '.') {\n      return 1;\n    }" if (parenthesized_expression "(*__haystack != '.')" ( (binary_expression "*__haystack != '.'" (pointer_expression "*__haystack" * identifier) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" else (if_statement "if (*__haystack == '.') {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(*__haystack == '.')" ( (binary_expression "*__haystack == '.'" (pointer_expression "*__haystack" * identifier) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) }))))) (expression_statement "uVar4 = strcmp(__haystack_00,__haystack);" (assignment_expression "uVar4 = strcmp(__haystack_00,__haystack)" identifier = (call_expression "strcmp(__haystack_00,__haystack)" identifier (argument_list "(__haystack_00,__haystack)" ( identifier , identifier )))) ;) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nint compare_symbols(void *ap,void *bp)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  \n                    /* WARNING: Load size is inaccurate */\n  piVar1 = *ap;\n                    /* WARNING: Load size is inaccurate */\n  piVar2 = *bp;\n  uVar6 = piVar1[4];\n  uVar8 = piVar2[4];\n  uVar7 = piVar1[2] + *(int *)(uVar6 + 0x1c);\n  uVar9 = piVar2[2] + *(int *)(uVar8 + 0x1c);\n  iVar10 = 1;\n  if (uVar9 < uVar7) {\n    return 1;\n  }\n  if (uVar7 < uVar9) {\n    return -1;\n  }\n  if (uVar8 < uVar6) {\n    return 1;\n  }\n  if (uVar6 < uVar8) {\n    return -1;\n  }\n  __haystack = (char *)piVar2[1];\n  __haystack_00 = (char *)piVar1[1];\n  pcVar3 = strstr(__haystack_00,"gnu_compiled");\n  pcVar4 = strstr(__haystack,"gnu_compiled");\n  if (pcVar3 == (char *)0x0) {\n    pcVar3 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar4 != (char *)0x0) ||\n       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)) {\n      iVar10 = -1;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar3 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar4 == (char *)0x0) {\n    pcVar3 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }\n  }\n  uVar6 = piVar1[3];\n  if (((uVar6 & 0x4000) == 0) &&\n     ((sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))))) {\n    uVar8 = piVar2[3];\n    if ((uVar8 & 0x4000) != 0) {\n      return -1;\n    }\n    sVar5 = strlen(__haystack);\n    if (__haystack[sVar5 - 2] == '.') {\n      if (__haystack[sVar5 - 1] == 'o') {\n        return -1;\n      }\n      if (__haystack[sVar5 - 1] == 'a') {\n        return -1;\n      }\n    }\n  }\n  else {\n    uVar8 = piVar2[3];\n    if (((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar7 = uVar6 ^ uVar8;\n  if ((uVar7 & 4) != 0) {\n    return -(uint)((uVar6 & 4) == 0) | 1;\n  }\n  if ((uVar7 & 8) != 0) {\n    return (-(uint)((uVar6 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar7 & 1) != 0) {\n    return -(uint)((uVar6 & 1) == 0) | 1;\n  }\n  if ((uVar7 & 2) != 0) {\n    return (-(uint)((uVar6 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*piVar1 + 4) + 4) != 5) || (*(int *)(*(int *)(*piVar2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar6 & 0x200100) == 0) {\n    uVar6 = piVar1[7];\n    uVar7 = 0;\n    if ((uVar8 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar8 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar6 = 0;\nLAB_00015c4c:\n    uVar7 = piVar2[7];\n  }\n  if (uVar7 != uVar6) {\n    return -(uint)(uVar7 < uVar6) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return -1;\n  }\n  iVar10 = strcmp(__haystack_00,__haystack);\n  return iVar10;\n}\n\n" comment comment (function_definition "int compare_symbols(void *ap,void *bp)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  \n                    /* WARNING: Load size is inaccurate */\n  piVar1 = *ap;\n                    /* WARNING: Load size is inaccurate */\n  piVar2 = *bp;\n  uVar6 = piVar1[4];\n  uVar8 = piVar2[4];\n  uVar7 = piVar1[2] + *(int *)(uVar6 + 0x1c);\n  uVar9 = piVar2[2] + *(int *)(uVar8 + 0x1c);\n  iVar10 = 1;\n  if (uVar9 < uVar7) {\n    return 1;\n  }\n  if (uVar7 < uVar9) {\n    return -1;\n  }\n  if (uVar8 < uVar6) {\n    return 1;\n  }\n  if (uVar6 < uVar8) {\n    return -1;\n  }\n  __haystack = (char *)piVar2[1];\n  __haystack_00 = (char *)piVar1[1];\n  pcVar3 = strstr(__haystack_00,"gnu_compiled");\n  pcVar4 = strstr(__haystack,"gnu_compiled");\n  if (pcVar3 == (char *)0x0) {\n    pcVar3 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar4 != (char *)0x0) ||\n       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)) {\n      iVar10 = -1;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar3 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar4 == (char *)0x0) {\n    pcVar3 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }\n  }\n  uVar6 = piVar1[3];\n  if (((uVar6 & 0x4000) == 0) &&\n     ((sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))))) {\n    uVar8 = piVar2[3];\n    if ((uVar8 & 0x4000) != 0) {\n      return -1;\n    }\n    sVar5 = strlen(__haystack);\n    if (__haystack[sVar5 - 2] == '.') {\n      if (__haystack[sVar5 - 1] == 'o') {\n        return -1;\n      }\n      if (__haystack[sVar5 - 1] == 'a') {\n        return -1;\n      }\n    }\n  }\n  else {\n    uVar8 = piVar2[3];\n    if (((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar7 = uVar6 ^ uVar8;\n  if ((uVar7 & 4) != 0) {\n    return -(uint)((uVar6 & 4) == 0) | 1;\n  }\n  if ((uVar7 & 8) != 0) {\n    return (-(uint)((uVar6 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar7 & 1) != 0) {\n    return -(uint)((uVar6 & 1) == 0) | 1;\n  }\n  if ((uVar7 & 2) != 0) {\n    return (-(uint)((uVar6 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*piVar1 + 4) + 4) != 5) || (*(int *)(*(int *)(*piVar2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar6 & 0x200100) == 0) {\n    uVar6 = piVar1[7];\n    uVar7 = 0;\n    if ((uVar8 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar8 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar6 = 0;\nLAB_00015c4c:\n    uVar7 = piVar2[7];\n  }\n  if (uVar7 != uVar6) {\n    return -(uint)(uVar7 < uVar6) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return -1;\n  }\n  iVar10 = strcmp(__haystack_00,__haystack);\n  return iVar10;\n}" primitive_type (function_declarator "compare_symbols(void *ap,void *bp)" identifier (parameter_list "(void *ap,void *bp)" ( (parameter_declaration "void *ap" primitive_type (pointer_declarator "*ap" * identifier)) , (parameter_declaration "void *bp" primitive_type (pointer_declarator "*bp" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  \n                    /* WARNING: Load size is inaccurate */\n  piVar1 = *ap;\n                    /* WARNING: Load size is inaccurate */\n  piVar2 = *bp;\n  uVar6 = piVar1[4];\n  uVar8 = piVar2[4];\n  uVar7 = piVar1[2] + *(int *)(uVar6 + 0x1c);\n  uVar9 = piVar2[2] + *(int *)(uVar8 + 0x1c);\n  iVar10 = 1;\n  if (uVar9 < uVar7) {\n    return 1;\n  }\n  if (uVar7 < uVar9) {\n    return -1;\n  }\n  if (uVar8 < uVar6) {\n    return 1;\n  }\n  if (uVar6 < uVar8) {\n    return -1;\n  }\n  __haystack = (char *)piVar2[1];\n  __haystack_00 = (char *)piVar1[1];\n  pcVar3 = strstr(__haystack_00,"gnu_compiled");\n  pcVar4 = strstr(__haystack,"gnu_compiled");\n  if (pcVar3 == (char *)0x0) {\n    pcVar3 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar4 != (char *)0x0) ||\n       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)) {\n      iVar10 = -1;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar3 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar4 == (char *)0x0) {\n    pcVar3 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }\n  }\n  uVar6 = piVar1[3];\n  if (((uVar6 & 0x4000) == 0) &&\n     ((sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))))) {\n    uVar8 = piVar2[3];\n    if ((uVar8 & 0x4000) != 0) {\n      return -1;\n    }\n    sVar5 = strlen(__haystack);\n    if (__haystack[sVar5 - 2] == '.') {\n      if (__haystack[sVar5 - 1] == 'o') {\n        return -1;\n      }\n      if (__haystack[sVar5 - 1] == 'a') {\n        return -1;\n      }\n    }\n  }\n  else {\n    uVar8 = piVar2[3];\n    if (((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar7 = uVar6 ^ uVar8;\n  if ((uVar7 & 4) != 0) {\n    return -(uint)((uVar6 & 4) == 0) | 1;\n  }\n  if ((uVar7 & 8) != 0) {\n    return (-(uint)((uVar6 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar7 & 1) != 0) {\n    return -(uint)((uVar6 & 1) == 0) | 1;\n  }\n  if ((uVar7 & 2) != 0) {\n    return (-(uint)((uVar6 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*piVar1 + 4) + 4) != 5) || (*(int *)(*(int *)(*piVar2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar6 & 0x200100) == 0) {\n    uVar6 = piVar1[7];\n    uVar7 = 0;\n    if ((uVar8 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar8 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar6 = 0;\nLAB_00015c4c:\n    uVar7 = piVar2[7];\n  }\n  if (uVar7 != uVar6) {\n    return -(uint)(uVar7 < uVar6) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return -1;\n  }\n  iVar10 = strcmp(__haystack_00,__haystack);\n  return iVar10;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "char *__haystack_00;" primitive_type (pointer_declarator "*__haystack_00" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) comment (expression_statement "piVar1 = *ap;" (assignment_expression "piVar1 = *ap" identifier = (pointer_expression "*ap" * identifier)) ;) comment (expression_statement "piVar2 = *bp;" (assignment_expression "piVar2 = *bp" identifier = (pointer_expression "*bp" * identifier)) ;) (expression_statement "uVar6 = piVar1[4];" (assignment_expression "uVar6 = piVar1[4]" identifier = (subscript_expression "piVar1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = piVar2[4];" (assignment_expression "uVar8 = piVar2[4]" identifier = (subscript_expression "piVar2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = piVar1[2] + *(int *)(uVar6 + 0x1c);" (assignment_expression "uVar7 = piVar1[2] + *(int *)(uVar6 + 0x1c)" identifier = (binary_expression "piVar1[2] + *(int *)(uVar6 + 0x1c)" (subscript_expression "piVar1[2]" identifier [ number_literal ]) + (pointer_expression "*(int *)(uVar6 + 0x1c)" * (cast_expression "(int *)(uVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "uVar9 = piVar2[2] + *(int *)(uVar8 + 0x1c);" (assignment_expression "uVar9 = piVar2[2] + *(int *)(uVar8 + 0x1c)" identifier = (binary_expression "piVar2[2] + *(int *)(uVar8 + 0x1c)" (subscript_expression "piVar2[2]" identifier [ number_literal ]) + (pointer_expression "*(int *)(uVar8 + 0x1c)" * (cast_expression "(int *)(uVar8 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + 0x1c)" ( (binary_expression "uVar8 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (if_statement "if (uVar9 < uVar7) {\n    return 1;\n  }" if (parenthesized_expression "(uVar9 < uVar7)" ( (binary_expression "uVar9 < uVar7" identifier < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar7 < uVar9) {\n    return -1;\n  }" if (parenthesized_expression "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (uVar8 < uVar6) {\n    return 1;\n  }" if (parenthesized_expression "(uVar8 < uVar6)" ( (binary_expression "uVar8 < uVar6" identifier < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar6 < uVar8) {\n    return -1;\n  }" if (parenthesized_expression "(uVar6 < uVar8)" ( (binary_expression "uVar6 < uVar8" identifier < identifier) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "__haystack = (char *)piVar2[1];" (assignment_expression "__haystack = (char *)piVar2[1]" identifier = (cast_expression "(char *)piVar2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "__haystack_00 = (char *)piVar1[1];" (assignment_expression "__haystack_00 = (char *)piVar1[1]" identifier = (cast_expression "(char *)piVar1[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar3 = strstr(__haystack_00,"gnu_compiled");" (assignment_expression "pcVar3 = strstr(__haystack_00,"gnu_compiled")" identifier = (call_expression "strstr(__haystack_00,"gnu_compiled")" identifier (argument_list "(__haystack_00,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (expression_statement "pcVar4 = strstr(__haystack,"gnu_compiled");" (assignment_expression "pcVar4 = 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 (pcVar3 == (char *)0x0) {\n    pcVar3 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar4 != (char *)0x0) ||\n       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)) {\n      iVar10 = -1;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar3 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar4 == (char *)0x0) {\n    pcVar3 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar3 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar4 != (char *)0x0) ||\n       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)) {\n      iVar10 = -1;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar3 != (char *)0x0) {\n      return 1;\n    }\n  }" { (expression_statement "pcVar3 = strstr(__haystack_00,"gcc2_compiled");" (assignment_expression "pcVar3 = strstr(__haystack_00,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack_00,"gcc2_compiled")" identifier (argument_list "(__haystack_00,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (if_statement "if ((pcVar4 != (char *)0x0) ||\n       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)) {\n      iVar10 = -1;\n      goto joined_r0x00015b07;\n    }" if (parenthesized_expression "((pcVar4 != (char *)0x0) ||\n       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0))" ( (binary_expression "(pcVar4 != (char *)0x0) ||\n       (pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)" (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0)" ( (comma_expression "pcVar4 = strstr(__haystack,"gcc2_compiled"), pcVar4 != (char *)0x0" (assignment_expression "pcVar4 = 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 "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      iVar10 = -1;\n      goto joined_r0x00015b07;\n    }" { (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (goto_statement "goto joined_r0x00015b07;" goto statement_identifier ;) })) (if_statement "if (pcVar3 != (char *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (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 (pcVar4 == (char *)0x0) {\n    pcVar3 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }\n  }" else (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar3 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar3 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }\n  }" { (expression_statement "pcVar3 = strstr(__haystack,"gcc2_compiled");" (assignment_expression "pcVar3 = 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_r0x00015b07:\n    if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }" statement_identifier : (if_statement "if (pcVar3 == (char *)0x0) {\n      return iVar10;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return iVar10;\n    }" { (return_statement "return iVar10;" return identifier ;) }))) })))) (expression_statement "uVar6 = piVar1[3];" (assignment_expression "uVar6 = piVar1[3]" identifier = (subscript_expression "piVar1[3]" identifier [ number_literal ])) ;) (if_statement "if (((uVar6 & 0x4000) == 0) &&\n     ((sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))))) {\n    uVar8 = piVar2[3];\n    if ((uVar8 & 0x4000) != 0) {\n      return -1;\n    }\n    sVar5 = strlen(__haystack);\n    if (__haystack[sVar5 - 2] == '.') {\n      if (__haystack[sVar5 - 1] == 'o') {\n        return -1;\n      }\n      if (__haystack[sVar5 - 1] == 'a') {\n        return -1;\n      }\n    }\n  }\n  else {\n    uVar8 = piVar2[3];\n    if (((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(((uVar6 & 0x4000) == 0) &&\n     ((sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a'))))))" ( (binary_expression "((uVar6 & 0x4000) == 0) &&\n     ((sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))))" (parenthesized_expression "((uVar6 & 0x4000) == 0)" ( (binary_expression "(uVar6 & 0x4000) == 0" (parenthesized_expression "(uVar6 & 0x4000)" ( (binary_expression "uVar6 & 0x4000" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))))" ( (parenthesized_expression "(sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a'))))" ( (comma_expression "sVar5 = strlen(__haystack_00), __haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))" (assignment_expression "sVar5 = strlen(__haystack_00)" identifier = (call_expression "strlen(__haystack_00)" identifier (argument_list "(__haystack_00)" ( identifier )))) , (binary_expression "__haystack_00[sVar5 - 2] != '.' ||\n      ((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))" (binary_expression "__haystack_00[sVar5 - 2] != '.'" (subscript_expression "__haystack_00[sVar5 - 2]" identifier [ (binary_expression "sVar5 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) || (parenthesized_expression "((__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')))" ( (parenthesized_expression "(__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a'))" ( (binary_expression "__haystack_00[sVar5 - 1] != 'o' && (__haystack_00[sVar5 - 1] != 'a')" (binary_expression "__haystack_00[sVar5 - 1] != 'o'" (subscript_expression "__haystack_00[sVar5 - 1]" identifier [ (binary_expression "sVar5 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) && (parenthesized_expression "(__haystack_00[sVar5 - 1] != 'a')" ( (binary_expression "__haystack_00[sVar5 - 1] != 'a'" (subscript_expression "__haystack_00[sVar5 - 1]" identifier [ (binary_expression "sVar5 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) ))) )) )))) )) ))) )) (compound_statement "{\n    uVar8 = piVar2[3];\n    if ((uVar8 & 0x4000) != 0) {\n      return -1;\n    }\n    sVar5 = strlen(__haystack);\n    if (__haystack[sVar5 - 2] == '.') {\n      if (__haystack[sVar5 - 1] == 'o') {\n        return -1;\n      }\n      if (__haystack[sVar5 - 1] == 'a') {\n        return -1;\n      }\n    }\n  }" { (expression_statement "uVar8 = piVar2[3];" (assignment_expression "uVar8 = piVar2[3]" identifier = (subscript_expression "piVar2[3]" identifier [ number_literal ])) ;) (if_statement "if ((uVar8 & 0x4000) != 0) {\n      return -1;\n    }" if (parenthesized_expression "((uVar8 & 0x4000) != 0)" ( (binary_expression "(uVar8 & 0x4000) != 0" (parenthesized_expression "(uVar8 & 0x4000)" ( (binary_expression "uVar8 & 0x4000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "sVar5 = strlen(__haystack);" (assignment_expression "sVar5 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) ;) (if_statement "if (__haystack[sVar5 - 2] == '.') {\n      if (__haystack[sVar5 - 1] == 'o') {\n        return -1;\n      }\n      if (__haystack[sVar5 - 1] == 'a') {\n        return -1;\n      }\n    }" if (parenthesized_expression "(__haystack[sVar5 - 2] == '.')" ( (binary_expression "__haystack[sVar5 - 2] == '.'" (subscript_expression "__haystack[sVar5 - 2]" identifier [ (binary_expression "sVar5 - 2" identifier - number_literal) ]) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n      if (__haystack[sVar5 - 1] == 'o') {\n        return -1;\n      }\n      if (__haystack[sVar5 - 1] == 'a') {\n        return -1;\n      }\n    }" { (if_statement "if (__haystack[sVar5 - 1] == 'o') {\n        return -1;\n      }" if (parenthesized_expression "(__haystack[sVar5 - 1] == 'o')" ( (binary_expression "__haystack[sVar5 - 1] == 'o'" (subscript_expression "__haystack[sVar5 - 1]" identifier [ (binary_expression "sVar5 - 1" identifier - number_literal) ]) == (char_literal "'o'" ' character ')) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (__haystack[sVar5 - 1] == 'a') {\n        return -1;\n      }" if (parenthesized_expression "(__haystack[sVar5 - 1] == 'a')" ( (binary_expression "__haystack[sVar5 - 1] == 'a'" (subscript_expression "__haystack[sVar5 - 1]" identifier [ (binary_expression "sVar5 - 1" identifier - number_literal) ]) == (char_literal "'a'" ' character ')) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) })) }) (else_clause "else {\n    uVar8 = piVar2[3];\n    if (((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" else (compound_statement "{\n    uVar8 = piVar2[3];\n    if (((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" { (expression_statement "uVar8 = piVar2[3];" (assignment_expression "uVar8 = piVar2[3]" identifier = (subscript_expression "piVar2[3]" identifier [ number_literal ])) ;) (if_statement "if (((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))) {\n      return 1;\n    }" if (parenthesized_expression "(((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o'))))))" ( (binary_expression "((uVar8 & 0x4000) == 0) &&\n       ((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))" (parenthesized_expression "((uVar8 & 0x4000) == 0)" ( (binary_expression "(uVar8 & 0x4000) == 0" (parenthesized_expression "(uVar8 & 0x4000)" ( (binary_expression "uVar8 & 0x4000" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))))" ( (parenthesized_expression "(sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o'))))" ( (comma_expression "sVar5 = strlen(__haystack), __haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))" (assignment_expression "sVar5 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) , (binary_expression "__haystack[sVar5 - 2] != '.' ||\n        ((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))" (binary_expression "__haystack[sVar5 - 2] != '.'" (subscript_expression "__haystack[sVar5 - 2]" identifier [ (binary_expression "sVar5 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) || (parenthesized_expression "((__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')))" ( (parenthesized_expression "(__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o'))" ( (binary_expression "__haystack[sVar5 - 1] != 'a' && (__haystack[sVar5 - 1] != 'o')" (binary_expression "__haystack[sVar5 - 1] != 'a'" (subscript_expression "__haystack[sVar5 - 1]" identifier [ (binary_expression "sVar5 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) && (parenthesized_expression "(__haystack[sVar5 - 1] != 'o')" ( (binary_expression "__haystack[sVar5 - 1] != 'o'" (subscript_expression "__haystack[sVar5 - 1]" identifier [ (binary_expression "sVar5 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) ))) )) )))) )) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }))) (expression_statement "uVar7 = uVar6 ^ uVar8;" (assignment_expression "uVar7 = uVar6 ^ uVar8" identifier = (binary_expression "uVar6 ^ uVar8" identifier ^ identifier)) ;) (if_statement "if ((uVar7 & 4) != 0) {\n    return -(uint)((uVar6 & 4) == 0) | 1;\n  }" if (parenthesized_expression "((uVar7 & 4) != 0)" ( (binary_expression "(uVar7 & 4) != 0" (parenthesized_expression "(uVar7 & 4)" ( (binary_expression "uVar7 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return -(uint)((uVar6 & 4) == 0) | 1;\n  }" { (return_statement "return -(uint)((uVar6 & 4) == 0) | 1;" return (binary_expression "-(uint)((uVar6 & 4) == 0) | 1" (unary_expression "-(uint)((uVar6 & 4) == 0)" - (call_expression "(uint)((uVar6 & 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar6 & 4) == 0)" ( (binary_expression "(uVar6 & 4) == 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) == number_literal) )))) | number_literal) ;) })) (if_statement "if ((uVar7 & 8) != 0) {\n    return (-(uint)((uVar6 & 8) == 0) & 2) - 1;\n  }" if (parenthesized_expression "((uVar7 & 8) != 0)" ( (binary_expression "(uVar7 & 8) != 0" (parenthesized_expression "(uVar7 & 8)" ( (binary_expression "uVar7 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return (-(uint)((uVar6 & 8) == 0) & 2) - 1;\n  }" { (return_statement "return (-(uint)((uVar6 & 8) == 0) & 2) - 1;" return (binary_expression "(-(uint)((uVar6 & 8) == 0) & 2) - 1" (parenthesized_expression "(-(uint)((uVar6 & 8) == 0) & 2)" ( (binary_expression "-(uint)((uVar6 & 8) == 0) & 2" (unary_expression "-(uint)((uVar6 & 8) == 0)" - (call_expression "(uint)((uVar6 & 8) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar6 & 8) == 0)" ( (binary_expression "(uVar6 & 8) == 0" (parenthesized_expression "(uVar6 & 8)" ( (binary_expression "uVar6 & 8" identifier & number_literal) )) == number_literal) )))) & number_literal) )) - number_literal) ;) })) (if_statement "if ((uVar7 & 1) != 0) {\n    return -(uint)((uVar6 & 1) == 0) | 1;\n  }" if (parenthesized_expression "((uVar7 & 1) != 0)" ( (binary_expression "(uVar7 & 1) != 0" (parenthesized_expression "(uVar7 & 1)" ( (binary_expression "uVar7 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return -(uint)((uVar6 & 1) == 0) | 1;\n  }" { (return_statement "return -(uint)((uVar6 & 1) == 0) | 1;" return (binary_expression "-(uint)((uVar6 & 1) == 0) | 1" (unary_expression "-(uint)((uVar6 & 1) == 0)" - (call_expression "(uint)((uVar6 & 1) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar6 & 1) == 0)" ( (binary_expression "(uVar6 & 1) == 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) == number_literal) )))) | number_literal) ;) })) (if_statement "if ((uVar7 & 2) != 0) {\n    return (-(uint)((uVar6 & 2) == 0) & 2) - 1;\n  }" if (parenthesized_expression "((uVar7 & 2) != 0)" ( (binary_expression "(uVar7 & 2) != 0" (parenthesized_expression "(uVar7 & 2)" ( (binary_expression "uVar7 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return (-(uint)((uVar6 & 2) == 0) & 2) - 1;\n  }" { (return_statement "return (-(uint)((uVar6 & 2) == 0) & 2) - 1;" return (binary_expression "(-(uint)((uVar6 & 2) == 0) & 2) - 1" (parenthesized_expression "(-(uint)((uVar6 & 2) == 0) & 2)" ( (binary_expression "-(uint)((uVar6 & 2) == 0) & 2" (unary_expression "-(uint)((uVar6 & 2) == 0)" - (call_expression "(uint)((uVar6 & 2) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar6 & 2) == 0)" ( (binary_expression "(uVar6 & 2) == 0" (parenthesized_expression "(uVar6 & 2)" ( (binary_expression "uVar6 & 2" identifier & number_literal) )) == number_literal) )))) & number_literal) )) - number_literal) ;) })) (if_statement "if ((*(int *)(*(int *)(*piVar1 + 4) + 4) != 5) || (*(int *)(*(int *)(*piVar2 + 4) + 4) != 5))\n  goto LAB_00015bfb;" if (parenthesized_expression "((*(int *)(*(int *)(*piVar1 + 4) + 4) != 5) || (*(int *)(*(int *)(*piVar2 + 4) + 4) != 5))" ( (binary_expression "(*(int *)(*(int *)(*piVar1 + 4) + 4) != 5) || (*(int *)(*(int *)(*piVar2 + 4) + 4) != 5)" (parenthesized_expression "(*(int *)(*(int *)(*piVar1 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(*piVar1 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(*piVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(*piVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*piVar1 + 4) + 4)" ( (binary_expression "*(int *)(*piVar1 + 4) + 4" (pointer_expression "*(int *)(*piVar1 + 4)" * (cast_expression "(int *)(*piVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar1 + 4)" ( (binary_expression "*piVar1 + 4" (pointer_expression "*piVar1" * identifier) + number_literal) )))) + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(*(int *)(*piVar2 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(*piVar2 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(*piVar2 + 4) + 4)" * (cast_expression "(int *)(*(int *)(*piVar2 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*piVar2 + 4) + 4)" ( (binary_expression "*(int *)(*piVar2 + 4) + 4" (pointer_expression "*(int *)(*piVar2 + 4)" * (cast_expression "(int *)(*piVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 4)" ( (binary_expression "*piVar2 + 4" (pointer_expression "*piVar2" * identifier) + number_literal) )))) + number_literal) )))) != number_literal) ))) )) (goto_statement "goto LAB_00015bfb;" goto statement_identifier ;)) (if_statement "if ((uVar6 & 0x200100) == 0) {\n    uVar6 = piVar1[7];\n    uVar7 = 0;\n    if ((uVar8 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar8 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar6 = 0;\nLAB_00015c4c:\n    uVar7 = piVar2[7];\n  }" if (parenthesized_expression "((uVar6 & 0x200100) == 0)" ( (binary_expression "(uVar6 & 0x200100) == 0" (parenthesized_expression "(uVar6 & 0x200100)" ( (binary_expression "uVar6 & 0x200100" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar6 = piVar1[7];\n    uVar7 = 0;\n    if ((uVar8 & 0x200100) == 0) goto LAB_00015c4c;\n  }" { (expression_statement "uVar6 = piVar1[7];" (assignment_expression "uVar6 = piVar1[7]" identifier = (subscript_expression "piVar1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if ((uVar8 & 0x200100) == 0) goto LAB_00015c4c;" if (parenthesized_expression "((uVar8 & 0x200100) == 0)" ( (binary_expression "(uVar8 & 0x200100) == 0" (parenthesized_expression "(uVar8 & 0x200100)" ( (binary_expression "uVar8 & 0x200100" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00015c4c;" goto statement_identifier ;)) }) (else_clause "else {\n    if ((uVar8 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar6 = 0;\nLAB_00015c4c:\n    uVar7 = piVar2[7];\n  }" else (compound_statement "{\n    if ((uVar8 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar6 = 0;\nLAB_00015c4c:\n    uVar7 = piVar2[7];\n  }" { (if_statement "if ((uVar8 & 0x200100) != 0) goto LAB_00015bfb;" if (parenthesized_expression "((uVar8 & 0x200100) != 0)" ( (binary_expression "(uVar8 & 0x200100) != 0" (parenthesized_expression "(uVar8 & 0x200100)" ( (binary_expression "uVar8 & 0x200100" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00015bfb;" goto statement_identifier ;)) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015c4c:\n    uVar7 = piVar2[7];" statement_identifier : (expression_statement "uVar7 = piVar2[7];" (assignment_expression "uVar7 = piVar2[7]" identifier = (subscript_expression "piVar2[7]" identifier [ number_literal ])) ;)) }))) (if_statement "if (uVar7 != uVar6) {\n    return -(uint)(uVar7 < uVar6) | 1;\n  }" if (parenthesized_expression "(uVar7 != uVar6)" ( (binary_expression "uVar7 != uVar6" identifier != identifier) )) (compound_statement "{\n    return -(uint)(uVar7 < uVar6) | 1;\n  }" { (return_statement "return -(uint)(uVar7 < uVar6) | 1;" return (binary_expression "-(uint)(uVar7 < uVar6) | 1" (unary_expression "-(uint)(uVar7 < uVar6)" - (call_expression "(uint)(uVar7 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar6)" ( (binary_expression "uVar7 < uVar6" identifier < identifier) )))) | number_literal) ;) })) (labeled_statement "LAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return -1;\n  }" statement_identifier : (if_statement "if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return -1;\n  }" if (parenthesized_expression "(*__haystack_00 == '.')" ( (binary_expression "*__haystack_00 == '.'" (pointer_expression "*__haystack_00" * identifier) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }" { (if_statement "if (*__haystack != '.') {\n      return 1;\n    }" if (parenthesized_expression "(*__haystack != '.')" ( (binary_expression "*__haystack != '.'" (pointer_expression "*__haystack" * identifier) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (*__haystack == '.') {\n    return -1;\n  }" else (if_statement "if (*__haystack == '.') {\n    return -1;\n  }" if (parenthesized_expression "(*__haystack == '.')" ( (binary_expression "*__haystack == '.'" (pointer_expression "*__haystack" * identifier) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) }))))) (expression_statement "iVar10 = strcmp(__haystack_00,__haystack);" (assignment_expression "iVar10 = strcmp(__haystack_00,__haystack)" identifier = (call_expression "strcmp(__haystack_00,__haystack)" identifier (argument_list "(__haystack_00,__haystack)" ( identifier , identifier )))) ;) (return_statement "return iVar10;" return identifier ;) })))
(translation_unit "uint FUN_00015990(int *param_1,int *param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  size_t sVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  \n  param_1 = (int *)*param_1;\n  param_2 = (int *)*param_2;\n  uVar4 = param_1[4];\n  uVar6 = param_2[4];\n  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);\n  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);\n  uVar8 = 1;\n  if (uVar7 < uVar5) {\n    return 1;\n  }\n  if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }\n  if (uVar6 < uVar4) {\n    return 1;\n  }\n  if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }\n  __haystack = (char *)param_2[1];\n  __haystack_00 = (char *)param_1[1];\n  pcVar1 = strstr(__haystack_00,"gnu_compiled");\n  pcVar2 = strstr(__haystack,"gnu_compiled");\n  if (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }\n  uVar4 = param_1[3];\n  if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar8 = uVar4 ^ uVar6;\n  if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }\n  if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }\n  if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }\n  if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }\n  uVar4 = strcmp(__haystack_00,__haystack);\n  return uVar4;\n}\n\n" (function_definition "uint FUN_00015990(int *param_1,int *param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  size_t sVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  \n  param_1 = (int *)*param_1;\n  param_2 = (int *)*param_2;\n  uVar4 = param_1[4];\n  uVar6 = param_2[4];\n  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);\n  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);\n  uVar8 = 1;\n  if (uVar7 < uVar5) {\n    return 1;\n  }\n  if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }\n  if (uVar6 < uVar4) {\n    return 1;\n  }\n  if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }\n  __haystack = (char *)param_2[1];\n  __haystack_00 = (char *)param_1[1];\n  pcVar1 = strstr(__haystack_00,"gnu_compiled");\n  pcVar2 = strstr(__haystack,"gnu_compiled");\n  if (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }\n  uVar4 = param_1[3];\n  if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar8 = uVar4 ^ uVar6;\n  if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }\n  if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }\n  if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }\n  if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }\n  uVar4 = strcmp(__haystack_00,__haystack);\n  return uVar4;\n}" type_identifier (function_declarator "FUN_00015990(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  size_t sVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  \n  param_1 = (int *)*param_1;\n  param_2 = (int *)*param_2;\n  uVar4 = param_1[4];\n  uVar6 = param_2[4];\n  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);\n  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);\n  uVar8 = 1;\n  if (uVar7 < uVar5) {\n    return 1;\n  }\n  if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }\n  if (uVar6 < uVar4) {\n    return 1;\n  }\n  if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }\n  __haystack = (char *)param_2[1];\n  __haystack_00 = (char *)param_1[1];\n  pcVar1 = strstr(__haystack_00,"gnu_compiled");\n  pcVar2 = strstr(__haystack,"gnu_compiled");\n  if (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }\n  uVar4 = param_1[3];\n  if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar8 = uVar4 ^ uVar6;\n  if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }\n  if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }\n  if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }\n  if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }\n  uVar4 = strcmp(__haystack_00,__haystack);\n  return uVar4;\n}" { (declaration "char *__haystack;" primitive_type (pointer_declarator "*__haystack" * identifier) ;) (declaration "char *__haystack_00;" primitive_type (pointer_declarator "*__haystack_00" * identifier) ;) (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "param_2 = (int *)*param_2;" (assignment_expression "param_2 = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_2[4];" (assignment_expression "uVar6 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);" (assignment_expression "uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c)" identifier = (binary_expression "param_1[2] + *(int *)(uVar4 + 0x1c)" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (pointer_expression "*(int *)(uVar4 + 0x1c)" * (cast_expression "(int *)(uVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 + 0x1c)" ( (binary_expression "uVar4 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);" (assignment_expression "uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c)" identifier = (binary_expression "param_2[2] + *(int *)(uVar6 + 0x1c)" (subscript_expression "param_2[2]" identifier [ number_literal ]) + (pointer_expression "*(int *)(uVar6 + 0x1c)" * (cast_expression "(int *)(uVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (if_statement "if (uVar7 < uVar5) {\n    return 1;\n  }" if (parenthesized_expression "(uVar7 < uVar5)" ( (binary_expression "uVar7 < uVar5" identifier < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(uVar5 < uVar7)" ( (binary_expression "uVar5 < uVar7" identifier < identifier) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (uVar6 < uVar4) {\n    return 1;\n  }" if (parenthesized_expression "(uVar6 < uVar4)" ( (binary_expression "uVar6 < uVar4" identifier < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "__haystack = (char *)param_2[1];" (assignment_expression "__haystack = (char *)param_2[1]" identifier = (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (expression_statement "__haystack_00 = (char *)param_1[1];" (assignment_expression "__haystack_00 = (char *)param_1[1]" identifier = (cast_expression "(char *)param_1[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar1 = strstr(__haystack_00,"gnu_compiled");" (assignment_expression "pcVar1 = strstr(__haystack_00,"gnu_compiled")" identifier = (call_expression "strstr(__haystack_00,"gnu_compiled")" identifier (argument_list "(__haystack_00,"gnu_compiled")" ( identifier , (string_literal ""gnu_compiled"" " string_content ") )))) ;) (expression_statement "pcVar2 = strstr(__haystack,"gnu_compiled");" (assignment_expression "pcVar2 = 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 (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }" { (expression_statement "pcVar1 = strstr(__haystack_00,"gcc2_compiled");" (assignment_expression "pcVar1 = strstr(__haystack_00,"gcc2_compiled")" identifier = (call_expression "strstr(__haystack_00,"gcc2_compiled")" identifier (argument_list "(__haystack_00,"gcc2_compiled")" ( identifier , (string_literal ""gcc2_compiled"" " string_content ") )))) ;) (if_statement "if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }" if (parenthesized_expression "((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0))" ( (binary_expression "(pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)" (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)" ( (comma_expression "pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0" (assignment_expression "pcVar2 = 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 "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }" { (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto joined_r0x00015b07;" goto statement_identifier ;) })) (if_statement "if (pcVar1 != (char *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (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 (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" else (if_statement "if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" { (expression_statement "pcVar1 = strstr(__haystack,"gcc2_compiled");" (assignment_expression "pcVar1 = 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_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }" statement_identifier : (if_statement "if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return uVar8;\n    }" { (return_statement "return uVar8;" return identifier ;) }))) })))) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (if_statement "if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))))))" ( (binary_expression "((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))" (parenthesized_expression "((uVar4 & 0x4000) == 0)" ( (binary_expression "(uVar4 & 0x4000) == 0" (parenthesized_expression "(uVar4 & 0x4000)" ( (binary_expression "uVar4 & 0x4000" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))" ( (parenthesized_expression "(sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))))" ( (comma_expression "sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" (assignment_expression "sVar3 = strlen(__haystack_00)" identifier = (call_expression "strlen(__haystack_00)" identifier (argument_list "(__haystack_00)" ( identifier )))) , (binary_expression "__haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" (binary_expression "__haystack_00[sVar3 - 2] != '.'" (subscript_expression "__haystack_00[sVar3 - 2]" identifier [ (binary_expression "sVar3 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) || (parenthesized_expression "((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" ( (parenthesized_expression "(__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))" ( (binary_expression "__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')" (binary_expression "__haystack_00[sVar3 - 1] != 'o'" (subscript_expression "__haystack_00[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) && (parenthesized_expression "(__haystack_00[sVar3 - 1] != 'a')" ( (binary_expression "__haystack_00[sVar3 - 1] != 'a'" (subscript_expression "__haystack_00[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) ))) )) )))) )) ))) )) (compound_statement "{\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }" { (expression_statement "uVar6 = param_2[3];" (assignment_expression "uVar6 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "((uVar6 & 0x4000) != 0)" ( (binary_expression "(uVar6 & 0x4000) != 0" (parenthesized_expression "(uVar6 & 0x4000)" ( (binary_expression "uVar6 & 0x4000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "sVar3 = strlen(__haystack);" (assignment_expression "sVar3 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) ;) (if_statement "if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }" if (parenthesized_expression "(__haystack[sVar3 - 2] == '.')" ( (binary_expression "__haystack[sVar3 - 2] == '.'" (subscript_expression "__haystack[sVar3 - 2]" identifier [ (binary_expression "sVar3 - 2" identifier - number_literal) ]) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }" { (if_statement "if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(__haystack[sVar3 - 1] == 'o')" ( (binary_expression "__haystack[sVar3 - 1] == 'o'" (subscript_expression "__haystack[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) == (char_literal "'o'" ' character ')) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }" if (parenthesized_expression "(__haystack[sVar3 - 1] == 'a')" ( (binary_expression "__haystack[sVar3 - 1] == 'a'" (subscript_expression "__haystack[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) == (char_literal "'a'" ' character ')) )) (compound_statement "{\n        return 0xffffffff;\n      }" { (return_statement "return 0xffffffff;" return number_literal ;) })) })) }) (else_clause "else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" else (compound_statement "{\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" { (expression_statement "uVar6 = param_2[3];" (assignment_expression "uVar6 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }" if (parenthesized_expression "(((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))))))" ( (binary_expression "((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))" (parenthesized_expression "((uVar6 & 0x4000) == 0)" ( (binary_expression "(uVar6 & 0x4000) == 0" (parenthesized_expression "(uVar6 & 0x4000)" ( (binary_expression "uVar6 & 0x4000" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))" ( (parenthesized_expression "(sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))))" ( (comma_expression "sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" (assignment_expression "sVar3 = strlen(__haystack)" identifier = (call_expression "strlen(__haystack)" identifier (argument_list "(__haystack)" ( identifier )))) , (binary_expression "__haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" (binary_expression "__haystack[sVar3 - 2] != '.'" (subscript_expression "__haystack[sVar3 - 2]" identifier [ (binary_expression "sVar3 - 2" identifier - number_literal) ]) != (char_literal "'.'" ' character ')) || (parenthesized_expression "((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" ( (parenthesized_expression "(__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))" ( (binary_expression "__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')" (binary_expression "__haystack[sVar3 - 1] != 'a'" (subscript_expression "__haystack[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'a'" ' character ')) && (parenthesized_expression "(__haystack[sVar3 - 1] != 'o')" ( (binary_expression "__haystack[sVar3 - 1] != 'o'" (subscript_expression "__haystack[sVar3 - 1]" identifier [ (binary_expression "sVar3 - 1" identifier - number_literal) ]) != (char_literal "'o'" ' character ')) ))) )) )))) )) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }))) (expression_statement "uVar8 = uVar4 ^ uVar6;" (assignment_expression "uVar8 = uVar4 ^ uVar6" identifier = (binary_expression "uVar4 ^ uVar6" identifier ^ identifier)) ;) (if_statement "if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }" if (parenthesized_expression "((uVar8 & 4) != 0)" ( (binary_expression "(uVar8 & 4) != 0" (parenthesized_expression "(uVar8 & 4)" ( (binary_expression "uVar8 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }" { (return_statement "return -(uint)((uVar4 & 4) == 0) | 1;" return (binary_expression "-(uint)((uVar4 & 4) == 0) | 1" (unary_expression "-(uint)((uVar4 & 4) == 0)" - (call_expression "(uint)((uVar4 & 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 & 4) == 0)" ( (binary_expression "(uVar4 & 4) == 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) == number_literal) )))) | number_literal) ;) })) (if_statement "if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }" if (parenthesized_expression "((uVar8 & 8) != 0)" ( (binary_expression "(uVar8 & 8) != 0" (parenthesized_expression "(uVar8 & 8)" ( (binary_expression "uVar8 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }" { (return_statement "return (-(uint)((uVar4 & 8) == 0) & 2) - 1;" return (binary_expression "(-(uint)((uVar4 & 8) == 0) & 2) - 1" (parenthesized_expression "(-(uint)((uVar4 & 8) == 0) & 2)" ( (binary_expression "-(uint)((uVar4 & 8) == 0) & 2" (unary_expression "-(uint)((uVar4 & 8) == 0)" - (call_expression "(uint)((uVar4 & 8) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 & 8) == 0)" ( (binary_expression "(uVar4 & 8) == 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) == number_literal) )))) & number_literal) )) - number_literal) ;) })) (if_statement "if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }" if (parenthesized_expression "((uVar8 & 1) != 0)" ( (binary_expression "(uVar8 & 1) != 0" (parenthesized_expression "(uVar8 & 1)" ( (binary_expression "uVar8 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }" { (return_statement "return -(uint)((uVar4 & 1) == 0) | 1;" return (binary_expression "-(uint)((uVar4 & 1) == 0) | 1" (unary_expression "-(uint)((uVar4 & 1) == 0)" - (call_expression "(uint)((uVar4 & 1) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )))) | number_literal) ;) })) (if_statement "if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }" if (parenthesized_expression "((uVar8 & 2) != 0)" ( (binary_expression "(uVar8 & 2) != 0" (parenthesized_expression "(uVar8 & 2)" ( (binary_expression "uVar8 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }" { (return_statement "return (-(uint)((uVar4 & 2) == 0) & 2) - 1;" return (binary_expression "(-(uint)((uVar4 & 2) == 0) & 2) - 1" (parenthesized_expression "(-(uint)((uVar4 & 2) == 0) & 2)" ( (binary_expression "-(uint)((uVar4 & 2) == 0) & 2" (unary_expression "-(uint)((uVar4 & 2) == 0)" - (call_expression "(uint)((uVar4 & 2) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 & 2) == 0)" ( (binary_expression "(uVar4 & 2) == 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) == number_literal) )))) & number_literal) )) - number_literal) ;) })) (if_statement "if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;" if (parenthesized_expression "((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))" ( (binary_expression "(*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5)" (parenthesized_expression "(*(int *)(*(int *)(*param_1 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(*param_1 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(*param_1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(*param_1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 4) + 4)" ( (binary_expression "*(int *)(*param_1 + 4) + 4" (pointer_expression "*(int *)(*param_1 + 4)" * (cast_expression "(int *)(*param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))) + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(*(int *)(*param_2 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(*param_2 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(*param_2 + 4) + 4)" * (cast_expression "(int *)(*(int *)(*param_2 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 4)" ( (binary_expression "*(int *)(*param_2 + 4) + 4" (pointer_expression "*(int *)(*param_2 + 4)" * (cast_expression "(int *)(*param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 4)" ( (binary_expression "*param_2 + 4" (pointer_expression "*param_2" * identifier) + number_literal) )))) + number_literal) )))) != number_literal) ))) )) (goto_statement "goto LAB_00015bfb;" goto statement_identifier ;)) (if_statement "if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" if (parenthesized_expression "((uVar4 & 0x200100) == 0)" ( (binary_expression "(uVar4 & 0x200100) == 0" (parenthesized_expression "(uVar4 & 0x200100)" ( (binary_expression "uVar4 & 0x200100" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }" { (expression_statement "uVar4 = param_1[7];" (assignment_expression "uVar4 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;" if (parenthesized_expression "((uVar6 & 0x200100) == 0)" ( (binary_expression "(uVar6 & 0x200100) == 0" (parenthesized_expression "(uVar6 & 0x200100)" ( (binary_expression "uVar6 & 0x200100" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00015c4c;" goto statement_identifier ;)) }) (else_clause "else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" else (compound_statement "{\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" { (if_statement "if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;" if (parenthesized_expression "((uVar6 & 0x200100) != 0)" ( (binary_expression "(uVar6 & 0x200100) != 0" (parenthesized_expression "(uVar6 & 0x200100)" ( (binary_expression "uVar6 & 0x200100" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00015bfb;" goto statement_identifier ;)) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015c4c:\n    uVar8 = param_2[7];" statement_identifier : (expression_statement "uVar8 = param_2[7];" (assignment_expression "uVar8 = param_2[7]" identifier = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;)) }))) (if_statement "if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }" if (parenthesized_expression "(uVar8 != uVar4)" ( (binary_expression "uVar8 != uVar4" identifier != identifier) )) (compound_statement "{\n    return -(uint)(uVar8 < uVar4) | 1;\n  }" { (return_statement "return -(uint)(uVar8 < uVar4) | 1;" return (binary_expression "-(uint)(uVar8 < uVar4) | 1" (unary_expression "-(uint)(uVar8 < uVar4)" - (call_expression "(uint)(uVar8 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar4)" ( (binary_expression "uVar8 < uVar4" identifier < identifier) )))) | number_literal) ;) })) (labeled_statement "LAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" statement_identifier : (if_statement "if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(*__haystack_00 == '.')" ( (binary_expression "*__haystack_00 == '.'" (pointer_expression "*__haystack_00" * identifier) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }" { (if_statement "if (*__haystack != '.') {\n      return 1;\n    }" if (parenthesized_expression "(*__haystack != '.')" ( (binary_expression "*__haystack != '.'" (pointer_expression "*__haystack" * identifier) != (char_literal "'.'" ' character ')) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" else (if_statement "if (*__haystack == '.') {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(*__haystack == '.')" ( (binary_expression "*__haystack == '.'" (pointer_expression "*__haystack" * identifier) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) }))))) (expression_statement "uVar4 = strcmp(__haystack_00,__haystack);" (assignment_expression "uVar4 = strcmp(__haystack_00,__haystack)" identifier = (call_expression "strcmp(__haystack_00,__haystack)" identifier (argument_list "(__haystack_00,__haystack)" ( identifier , identifier )))) ;) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_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))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = 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 IDENT ;) }))) })))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_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 { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) == (char_literal ' character ')) )) (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 ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_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 { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )))) | LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )))) & LIT) )) - LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )))) | LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )))) & LIT) )) - LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + LIT) )))) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + LIT) )))) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (return_statement return (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) | LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) }))))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (return_statement return IDENT ;) })))
(function_definition "uint FUN_00015990(int *param_1,int *param_2)\n\n{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  size_t sVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  \n  param_1 = (int *)*param_1;\n  param_2 = (int *)*param_2;\n  uVar4 = param_1[4];\n  uVar6 = param_2[4];\n  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);\n  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);\n  uVar8 = 1;\n  if (uVar7 < uVar5) {\n    return 1;\n  }\n  if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }\n  if (uVar6 < uVar4) {\n    return 1;\n  }\n  if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }\n  __haystack = (char *)param_2[1];\n  __haystack_00 = (char *)param_1[1];\n  pcVar1 = strstr(__haystack_00,"gnu_compiled");\n  pcVar2 = strstr(__haystack,"gnu_compiled");\n  if (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }\n  uVar4 = param_1[3];\n  if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar8 = uVar4 ^ uVar6;\n  if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }\n  if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }\n  if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }\n  if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }\n  uVar4 = strcmp(__haystack_00,__haystack);\n  return uVar4;\n}" (type_identifier "uint") (function_declarator "FUN_00015990(int *param_1,int *param_2)" (identifier "FUN_00015990") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  char *__haystack;\n  char *__haystack_00;\n  char *pcVar1;\n  char *pcVar2;\n  size_t sVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  \n  param_1 = (int *)*param_1;\n  param_2 = (int *)*param_2;\n  uVar4 = param_1[4];\n  uVar6 = param_2[4];\n  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);\n  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);\n  uVar8 = 1;\n  if (uVar7 < uVar5) {\n    return 1;\n  }\n  if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }\n  if (uVar6 < uVar4) {\n    return 1;\n  }\n  if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }\n  __haystack = (char *)param_2[1];\n  __haystack_00 = (char *)param_1[1];\n  pcVar1 = strstr(__haystack_00,"gnu_compiled");\n  pcVar2 = strstr(__haystack,"gnu_compiled");\n  if (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }\n  uVar4 = param_1[3];\n  if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }\n  uVar8 = uVar4 ^ uVar6;\n  if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }\n  if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }\n  if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }\n  if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }\n  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;\n  if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }\n  if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }\nLAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }\n  uVar4 = strcmp(__haystack_00,__haystack);\n  return uVar4;\n}" ({ "{") (declaration "char *__haystack;" (primitive_type "char") (pointer_declarator "*__haystack" (* "*") (identifier "__haystack")) (; ";")) (declaration "char *__haystack_00;" (primitive_type "char") (pointer_declarator "*__haystack_00" (* "*") (identifier "__haystack_00")) (; ";")) (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" (identifier "param_1") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "param_2 = (int *)*param_2;" (assignment_expression "param_2 = (int *)*param_2" (identifier "param_2") (= "=") (cast_expression "(int *)*param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "uVar4 = param_1[4];" (assignment_expression "uVar4 = param_1[4]" (identifier "uVar4") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar6 = param_2[4];" (assignment_expression "uVar6 = param_2[4]" (identifier "uVar6") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);" (assignment_expression "uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c)" (identifier "uVar5") (= "=") (binary_expression "param_1[2] + *(int *)(uVar4 + 0x1c)" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (pointer_expression "*(int *)(uVar4 + 0x1c)" (* "*") (cast_expression "(int *)(uVar4 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 + 0x1c)" (( "(") (binary_expression "uVar4 + 0x1c" (identifier "uVar4") (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (expression_statement "uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);" (assignment_expression "uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c)" (identifier "uVar7") (= "=") (binary_expression "param_2[2] + *(int *)(uVar6 + 0x1c)" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (+ "+") (pointer_expression "*(int *)(uVar6 + 0x1c)" (* "*") (cast_expression "(int *)(uVar6 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x1c)" (( "(") (binary_expression "uVar6 + 0x1c" (identifier "uVar6") (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";")) (if_statement "if (uVar7 < uVar5) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(uVar7 < uVar5)" (( "(") (binary_expression "uVar7 < uVar5" (identifier "uVar7") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (uVar5 < uVar7) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(uVar5 < uVar7)" (( "(") (binary_expression "uVar5 < uVar7" (identifier "uVar5") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (uVar6 < uVar4) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(uVar6 < uVar4)" (( "(") (binary_expression "uVar6 < uVar4" (identifier "uVar6") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (uVar4 < uVar6) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(uVar4 < uVar6)" (( "(") (binary_expression "uVar4 < uVar6" (identifier "uVar4") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (expression_statement "__haystack = (char *)param_2[1];" (assignment_expression "__haystack = (char *)param_2[1]" (identifier "__haystack") (= "=") (cast_expression "(char *)param_2[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "__haystack_00 = (char *)param_1[1];" (assignment_expression "__haystack_00 = (char *)param_1[1]" (identifier "__haystack_00") (= "=") (cast_expression "(char *)param_1[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pcVar1 = strstr(__haystack_00,"gnu_compiled");" (assignment_expression "pcVar1 = strstr(__haystack_00,"gnu_compiled")" (identifier "pcVar1") (= "=") (call_expression "strstr(__haystack_00,"gnu_compiled")" (identifier "strstr") (argument_list "(__haystack_00,"gnu_compiled")" (( "(") (identifier "__haystack_00") (, ",") (string_literal ""gnu_compiled"" (" """) (string_content "gnu_compiled") (" """)) () ")")))) (; ";")) (expression_statement "pcVar2 = strstr(__haystack,"gnu_compiled");" (assignment_expression "pcVar2 = strstr(__haystack,"gnu_compiled")" (identifier "pcVar2") (= "=") (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 (pcVar1 == (char *)0x0) {\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }\n  else if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" (if "if") (parenthesized_expression "(pcVar1 == (char *)0x0)" (( "(") (binary_expression "pcVar1 == (char *)0x0" (identifier "pcVar1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar1 = strstr(__haystack_00,"gcc2_compiled");\n    if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }\n    if (pcVar1 != (char *)0x0) {\n      return 1;\n    }\n  }" ({ "{") (expression_statement "pcVar1 = strstr(__haystack_00,"gcc2_compiled");" (assignment_expression "pcVar1 = strstr(__haystack_00,"gcc2_compiled")" (identifier "pcVar1") (= "=") (call_expression "strstr(__haystack_00,"gcc2_compiled")" (identifier "strstr") (argument_list "(__haystack_00,"gcc2_compiled")" (( "(") (identifier "__haystack_00") (, ",") (string_literal ""gcc2_compiled"" (" """) (string_content "gcc2_compiled") (" """)) () ")")))) (; ";")) (if_statement "if ((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }" (if "if") (parenthesized_expression "((pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0))" (( "(") (binary_expression "(pcVar2 != (char *)0x0) ||\n       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)" (parenthesized_expression "(pcVar2 != (char *)0x0)" (( "(") (binary_expression "pcVar2 != (char *)0x0" (identifier "pcVar2") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)" (( "(") (comma_expression "pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0" (assignment_expression "pcVar2 = strstr(__haystack,"gcc2_compiled")" (identifier "pcVar2") (= "=") (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 "pcVar2 != (char *)0x0" (identifier "pcVar2") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n      uVar8 = 0xffffffff;\n      goto joined_r0x00015b07;\n    }" ({ "{") (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffff")) (; ";")) (goto_statement "goto joined_r0x00015b07;" (goto "goto") (statement_identifier "joined_r0x00015b07") (; ";")) (} "}"))) (if_statement "if (pcVar1 != (char *)0x0) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(pcVar1 != (char *)0x0)" (( "(") (binary_expression "pcVar1 != (char *)0x0" (identifier "pcVar1") (!= "!=") (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 (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" (else "else") (if_statement "if (pcVar2 == (char *)0x0) {\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" (if "if") (parenthesized_expression "(pcVar2 == (char *)0x0)" (( "(") (binary_expression "pcVar2 == (char *)0x0" (identifier "pcVar2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar1 = strstr(__haystack,"gcc2_compiled");\njoined_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }\n  }" ({ "{") (expression_statement "pcVar1 = strstr(__haystack,"gcc2_compiled");" (assignment_expression "pcVar1 = strstr(__haystack,"gcc2_compiled")" (identifier "pcVar1") (= "=") (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_r0x00015b07:\n    if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }" (statement_identifier "joined_r0x00015b07") (: ":") (if_statement "if (pcVar1 == (char *)0x0) {\n      return uVar8;\n    }" (if "if") (parenthesized_expression "(pcVar1 == (char *)0x0)" (( "(") (binary_expression "pcVar1 == (char *)0x0" (identifier "pcVar1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return uVar8;\n    }" ({ "{") (return_statement "return uVar8;" (return "return") (identifier "uVar8") (; ";")) (} "}")))) (} "}"))))) (expression_statement "uVar4 = param_1[3];" (assignment_expression "uVar4 = param_1[3]" (identifier "uVar4") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }\n  else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" (if "if") (parenthesized_expression "(((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))))))" (( "(") (binary_expression "((uVar4 & 0x4000) == 0) &&\n     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))" (parenthesized_expression "((uVar4 & 0x4000) == 0)" (( "(") (binary_expression "(uVar4 & 0x4000) == 0" (parenthesized_expression "(uVar4 & 0x4000)" (( "(") (binary_expression "uVar4 & 0x4000" (identifier "uVar4") (& "&") (number_literal "0x4000")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))" (( "(") (parenthesized_expression "(sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))))" (( "(") (comma_expression "sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" (assignment_expression "sVar3 = strlen(__haystack_00)" (identifier "sVar3") (= "=") (call_expression "strlen(__haystack_00)" (identifier "strlen") (argument_list "(__haystack_00)" (( "(") (identifier "__haystack_00") () ")")))) (, ",") (binary_expression "__haystack_00[sVar3 - 2] != '.' ||\n      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" (binary_expression "__haystack_00[sVar3 - 2] != '.'" (subscript_expression "__haystack_00[sVar3 - 2]" (identifier "__haystack_00") ([ "[") (binary_expression "sVar3 - 2" (identifier "sVar3") (- "-") (number_literal "2")) (] "]")) (!= "!=") (char_literal "'.'" (' "'") (character ".") (' "'"))) (|| "||") (parenthesized_expression "((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))" (( "(") (parenthesized_expression "(__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a'))" (( "(") (binary_expression "__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')" (binary_expression "__haystack_00[sVar3 - 1] != 'o'" (subscript_expression "__haystack_00[sVar3 - 1]" (identifier "__haystack_00") ([ "[") (binary_expression "sVar3 - 1" (identifier "sVar3") (- "-") (number_literal "1")) (] "]")) (!= "!=") (char_literal "'o'" (' "'") (character "o") (' "'"))) (&& "&&") (parenthesized_expression "(__haystack_00[sVar3 - 1] != 'a')" (( "(") (binary_expression "__haystack_00[sVar3 - 1] != 'a'" (subscript_expression "__haystack_00[sVar3 - 1]" (identifier "__haystack_00") ([ "[") (binary_expression "sVar3 - 1" (identifier "sVar3") (- "-") (number_literal "1")) (] "]")) (!= "!=") (char_literal "'a'" (' "'") (character "a") (' "'"))) () ")"))) () ")")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    uVar6 = param_2[3];\n    if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }\n    sVar3 = strlen(__haystack);\n    if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar6 = param_2[3];" (assignment_expression "uVar6 = param_2[3]" (identifier "uVar6") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((uVar6 & 0x4000) != 0) {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "((uVar6 & 0x4000) != 0)" (( "(") (binary_expression "(uVar6 & 0x4000) != 0" (parenthesized_expression "(uVar6 & 0x4000)" (( "(") (binary_expression "uVar6 & 0x4000" (identifier "uVar6") (& "&") (number_literal "0x4000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (expression_statement "sVar3 = strlen(__haystack);" (assignment_expression "sVar3 = strlen(__haystack)" (identifier "sVar3") (= "=") (call_expression "strlen(__haystack)" (identifier "strlen") (argument_list "(__haystack)" (( "(") (identifier "__haystack") () ")")))) (; ";")) (if_statement "if (__haystack[sVar3 - 2] == '.') {\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }" (if "if") (parenthesized_expression "(__haystack[sVar3 - 2] == '.')" (( "(") (binary_expression "__haystack[sVar3 - 2] == '.'" (subscript_expression "__haystack[sVar3 - 2]" (identifier "__haystack") ([ "[") (binary_expression "sVar3 - 2" (identifier "sVar3") (- "-") (number_literal "2")) (] "]")) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (compound_statement "{\n      if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }\n      if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }\n    }" ({ "{") (if_statement "if (__haystack[sVar3 - 1] == 'o') {\n        return 0xffffffff;\n      }" (if "if") (parenthesized_expression "(__haystack[sVar3 - 1] == 'o')" (( "(") (binary_expression "__haystack[sVar3 - 1] == 'o'" (subscript_expression "__haystack[sVar3 - 1]" (identifier "__haystack") ([ "[") (binary_expression "sVar3 - 1" (identifier "sVar3") (- "-") (number_literal "1")) (] "]")) (== "==") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")")) (compound_statement "{\n        return 0xffffffff;\n      }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (__haystack[sVar3 - 1] == 'a') {\n        return 0xffffffff;\n      }" (if "if") (parenthesized_expression "(__haystack[sVar3 - 1] == 'a')" (( "(") (binary_expression "__haystack[sVar3 - 1] == 'a'" (subscript_expression "__haystack[sVar3 - 1]" (identifier "__haystack") ([ "[") (binary_expression "sVar3 - 1" (identifier "sVar3") (- "-") (number_literal "1")) (] "]")) (== "==") (char_literal "'a'" (' "'") (character "a") (' "'"))) () ")")) (compound_statement "{\n        return 0xffffffff;\n      }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" (else "else") (compound_statement "{\n    uVar6 = param_2[3];\n    if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }\n  }" ({ "{") (expression_statement "uVar6 = param_2[3];" (assignment_expression "uVar6 = param_2[3]" (identifier "uVar6") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))))))" (( "(") (binary_expression "((uVar6 & 0x4000) == 0) &&\n       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))" (parenthesized_expression "((uVar6 & 0x4000) == 0)" (( "(") (binary_expression "(uVar6 & 0x4000) == 0" (parenthesized_expression "(uVar6 & 0x4000)" (( "(") (binary_expression "uVar6 & 0x4000" (identifier "uVar6") (& "&") (number_literal "0x4000")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))" (( "(") (parenthesized_expression "(sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))))" (( "(") (comma_expression "sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" (assignment_expression "sVar3 = strlen(__haystack)" (identifier "sVar3") (= "=") (call_expression "strlen(__haystack)" (identifier "strlen") (argument_list "(__haystack)" (( "(") (identifier "__haystack") () ")")))) (, ",") (binary_expression "__haystack[sVar3 - 2] != '.' ||\n        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" (binary_expression "__haystack[sVar3 - 2] != '.'" (subscript_expression "__haystack[sVar3 - 2]" (identifier "__haystack") ([ "[") (binary_expression "sVar3 - 2" (identifier "sVar3") (- "-") (number_literal "2")) (] "]")) (!= "!=") (char_literal "'.'" (' "'") (character ".") (' "'"))) (|| "||") (parenthesized_expression "((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))" (( "(") (parenthesized_expression "(__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o'))" (( "(") (binary_expression "__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')" (binary_expression "__haystack[sVar3 - 1] != 'a'" (subscript_expression "__haystack[sVar3 - 1]" (identifier "__haystack") ([ "[") (binary_expression "sVar3 - 1" (identifier "sVar3") (- "-") (number_literal "1")) (] "]")) (!= "!=") (char_literal "'a'" (' "'") (character "a") (' "'"))) (&& "&&") (parenthesized_expression "(__haystack[sVar3 - 1] != 'o')" (( "(") (binary_expression "__haystack[sVar3 - 1] != 'o'" (subscript_expression "__haystack[sVar3 - 1]" (identifier "__haystack") ([ "[") (binary_expression "sVar3 - 1" (identifier "sVar3") (- "-") (number_literal "1")) (] "]")) (!= "!=") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")"))) () ")")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar8 = uVar4 ^ uVar6;" (assignment_expression "uVar8 = uVar4 ^ uVar6" (identifier "uVar8") (= "=") (binary_expression "uVar4 ^ uVar6" (identifier "uVar4") (^ "^") (identifier "uVar6"))) (; ";")) (if_statement "if ((uVar8 & 4) != 0) {\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }" (if "if") (parenthesized_expression "((uVar8 & 4) != 0)" (( "(") (binary_expression "(uVar8 & 4) != 0" (parenthesized_expression "(uVar8 & 4)" (( "(") (binary_expression "uVar8 & 4" (identifier "uVar8") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return -(uint)((uVar4 & 4) == 0) | 1;\n  }" ({ "{") (return_statement "return -(uint)((uVar4 & 4) == 0) | 1;" (return "return") (binary_expression "-(uint)((uVar4 & 4) == 0) | 1" (unary_expression "-(uint)((uVar4 & 4) == 0)" (- "-") (call_expression "(uint)((uVar4 & 4) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar4 & 4) == 0)" (( "(") (binary_expression "(uVar4 & 4) == 0" (parenthesized_expression "(uVar4 & 4)" (( "(") (binary_expression "uVar4 & 4" (identifier "uVar4") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")))) (| "|") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if ((uVar8 & 8) != 0) {\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }" (if "if") (parenthesized_expression "((uVar8 & 8) != 0)" (( "(") (binary_expression "(uVar8 & 8) != 0" (parenthesized_expression "(uVar8 & 8)" (( "(") (binary_expression "uVar8 & 8" (identifier "uVar8") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;\n  }" ({ "{") (return_statement "return (-(uint)((uVar4 & 8) == 0) & 2) - 1;" (return "return") (binary_expression "(-(uint)((uVar4 & 8) == 0) & 2) - 1" (parenthesized_expression "(-(uint)((uVar4 & 8) == 0) & 2)" (( "(") (binary_expression "-(uint)((uVar4 & 8) == 0) & 2" (unary_expression "-(uint)((uVar4 & 8) == 0)" (- "-") (call_expression "(uint)((uVar4 & 8) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar4 & 8) == 0)" (( "(") (binary_expression "(uVar4 & 8) == 0" (parenthesized_expression "(uVar4 & 8)" (( "(") (binary_expression "uVar4 & 8" (identifier "uVar4") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "2")) () ")")) (- "-") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if ((uVar8 & 1) != 0) {\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }" (if "if") (parenthesized_expression "((uVar8 & 1) != 0)" (( "(") (binary_expression "(uVar8 & 1) != 0" (parenthesized_expression "(uVar8 & 1)" (( "(") (binary_expression "uVar8 & 1" (identifier "uVar8") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return -(uint)((uVar4 & 1) == 0) | 1;\n  }" ({ "{") (return_statement "return -(uint)((uVar4 & 1) == 0) | 1;" (return "return") (binary_expression "-(uint)((uVar4 & 1) == 0) | 1" (unary_expression "-(uint)((uVar4 & 1) == 0)" (- "-") (call_expression "(uint)((uVar4 & 1) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar4 & 1) == 0)" (( "(") (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" (( "(") (binary_expression "uVar4 & 1" (identifier "uVar4") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")))) (| "|") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if ((uVar8 & 2) != 0) {\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }" (if "if") (parenthesized_expression "((uVar8 & 2) != 0)" (( "(") (binary_expression "(uVar8 & 2) != 0" (parenthesized_expression "(uVar8 & 2)" (( "(") (binary_expression "uVar8 & 2" (identifier "uVar8") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;\n  }" ({ "{") (return_statement "return (-(uint)((uVar4 & 2) == 0) & 2) - 1;" (return "return") (binary_expression "(-(uint)((uVar4 & 2) == 0) & 2) - 1" (parenthesized_expression "(-(uint)((uVar4 & 2) == 0) & 2)" (( "(") (binary_expression "-(uint)((uVar4 & 2) == 0) & 2" (unary_expression "-(uint)((uVar4 & 2) == 0)" (- "-") (call_expression "(uint)((uVar4 & 2) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar4 & 2) == 0)" (( "(") (binary_expression "(uVar4 & 2) == 0" (parenthesized_expression "(uVar4 & 2)" (( "(") (binary_expression "uVar4 & 2" (identifier "uVar4") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "2")) () ")")) (- "-") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))\n  goto LAB_00015bfb;" (if "if") (parenthesized_expression "((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))" (( "(") (binary_expression "(*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5)" (parenthesized_expression "(*(int *)(*(int *)(*param_1 + 4) + 4) != 5)" (( "(") (binary_expression "*(int *)(*(int *)(*param_1 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(*param_1 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(*param_1 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_1 + 4) + 4)" (( "(") (binary_expression "*(int *)(*param_1 + 4) + 4" (pointer_expression "*(int *)(*param_1 + 4)" (* "*") (cast_expression "(int *)(*param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 4)" (( "(") (binary_expression "*param_1 + 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "5")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(*(int *)(*param_2 + 4) + 4) != 5)" (( "(") (binary_expression "*(int *)(*(int *)(*param_2 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(*param_2 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(*param_2 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_2 + 4) + 4)" (( "(") (binary_expression "*(int *)(*param_2 + 4) + 4" (pointer_expression "*(int *)(*param_2 + 4)" (* "*") (cast_expression "(int *)(*param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 4)" (( "(") (binary_expression "*param_2 + 4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "5")) () ")"))) () ")")) (goto_statement "goto LAB_00015bfb;" (goto "goto") (statement_identifier "LAB_00015bfb") (; ";"))) (if_statement "if ((uVar4 & 0x200100) == 0) {\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }\n  else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x200100) == 0)" (( "(") (binary_expression "(uVar4 & 0x200100) == 0" (parenthesized_expression "(uVar4 & 0x200100)" (( "(") (binary_expression "uVar4 & 0x200100" (identifier "uVar4") (& "&") (number_literal "0x200100")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = param_1[7];\n    uVar8 = 0;\n    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;\n  }" ({ "{") (expression_statement "uVar4 = param_1[7];" (assignment_expression "uVar4 = param_1[7]" (identifier "uVar4") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;" (if "if") (parenthesized_expression "((uVar6 & 0x200100) == 0)" (( "(") (binary_expression "(uVar6 & 0x200100) == 0" (parenthesized_expression "(uVar6 & 0x200100)" (( "(") (binary_expression "uVar6 & 0x200100" (identifier "uVar6") (& "&") (number_literal "0x200100")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00015c4c;" (goto "goto") (statement_identifier "LAB_00015c4c") (; ";"))) (} "}")) (else_clause "else {\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" (else "else") (compound_statement "{\n    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;\n    uVar4 = 0;\nLAB_00015c4c:\n    uVar8 = param_2[7];\n  }" ({ "{") (if_statement "if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;" (if "if") (parenthesized_expression "((uVar6 & 0x200100) != 0)" (( "(") (binary_expression "(uVar6 & 0x200100) != 0" (parenthesized_expression "(uVar6 & 0x200100)" (( "(") (binary_expression "uVar6 & 0x200100" (identifier "uVar6") (& "&") (number_literal "0x200100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00015bfb;" (goto "goto") (statement_identifier "LAB_00015bfb") (; ";"))) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00015c4c:\n    uVar8 = param_2[7];" (statement_identifier "LAB_00015c4c") (: ":") (expression_statement "uVar8 = param_2[7];" (assignment_expression "uVar8 = param_2[7]" (identifier "uVar8") (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";"))) (} "}")))) (if_statement "if (uVar8 != uVar4) {\n    return -(uint)(uVar8 < uVar4) | 1;\n  }" (if "if") (parenthesized_expression "(uVar8 != uVar4)" (( "(") (binary_expression "uVar8 != uVar4" (identifier "uVar8") (!= "!=") (identifier "uVar4")) () ")")) (compound_statement "{\n    return -(uint)(uVar8 < uVar4) | 1;\n  }" ({ "{") (return_statement "return -(uint)(uVar8 < uVar4) | 1;" (return "return") (binary_expression "-(uint)(uVar8 < uVar4) | 1" (unary_expression "-(uint)(uVar8 < uVar4)" (- "-") (call_expression "(uint)(uVar8 < uVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < uVar4)" (( "(") (binary_expression "uVar8 < uVar4" (identifier "uVar8") (< "<") (identifier "uVar4")) () ")")))) (| "|") (number_literal "1")) (; ";")) (} "}"))) (labeled_statement "LAB_00015bfb:\n  if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" (statement_identifier "LAB_00015bfb") (: ":") (if_statement "if (*__haystack_00 == '.') {\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }\n  else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(*__haystack_00 == '.')" (( "(") (binary_expression "*__haystack_00 == '.'" (pointer_expression "*__haystack_00" (* "*") (identifier "__haystack_00")) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (compound_statement "{\n    if (*__haystack != '.') {\n      return 1;\n    }\n  }" ({ "{") (if_statement "if (*__haystack != '.') {\n      return 1;\n    }" (if "if") (parenthesized_expression "(*__haystack != '.')" (( "(") (binary_expression "*__haystack != '.'" (pointer_expression "*__haystack" (* "*") (identifier "__haystack")) (!= "!=") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else if (*__haystack == '.') {\n    return 0xffffffff;\n  }" (else "else") (if_statement "if (*__haystack == '.') {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(*__haystack == '.')" (( "(") (binary_expression "*__haystack == '.'" (pointer_expression "*__haystack" (* "*") (identifier "__haystack")) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}")))))) (expression_statement "uVar4 = strcmp(__haystack_00,__haystack);" (assignment_expression "uVar4 = strcmp(__haystack_00,__haystack)" (identifier "uVar4") (= "=") (call_expression "strcmp(__haystack_00,__haystack)" (identifier "strcmp") (argument_list "(__haystack_00,__haystack)" (( "(") (identifier "__haystack_00") (, ",") (identifier "__haystack") () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))

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

int function_1(void *ap,void *bp)

{
  int *piVar1;
  int *piVar2;
  char *__haystack;
  char *__haystack_00;
  char *var_6;
  char *var_7;
  size_t var_9;
  type_1 var_1;
  type_1 var_4;
  type_1 var_2;
  type_1 var_3;
  int iVar10;
  
                    /* WARNING: Load size is inaccurate */
  piVar1 = *ap;
                    /* WARNING: Load size is inaccurate */
  piVar2 = *bp;
  var_1 = piVar1[4];
  var_2 = piVar2[4];
  var_4 = piVar1[2] + *(int *)(var_1 + 0x1c);
  var_3 = piVar2[2] + *(int *)(var_2 + 0x1c);
  iVar10 = 1;
  if (var_3 < var_4) {
    return 1;
  }
  if (var_4 < var_3) {
    return -1;
  }
  if (var_2 < var_1) {
    return 1;
  }
  if (var_1 < var_2) {
    return -1;
  }
  __haystack = (char *)piVar2[1];
  __haystack_00 = (char *)piVar1[1];
  var_6 = var_5(__haystack_00,"gnu_compiled");
  var_7 = var_5(__haystack,"gnu_compiled");
  if (var_6 == (char *)0x0) {
    var_6 = var_5(__haystack_00,"gcc2_compiled");
    if ((var_7 != (char *)0x0) ||
       (var_7 = var_5(__haystack,"gcc2_compiled"), var_7 != (char *)0x0)) {
      iVar10 = -1;
      goto joined_r0x00015b07;
    }
    if (var_6 != (char *)0x0) {
      return 1;
    }
  }
  else if (var_7 == (char *)0x0) {
    var_6 = var_5(__haystack,"gcc2_compiled");
joined_r0x00015b07:
    if (var_6 == (char *)0x0) {
      return iVar10;
    }
  }
  var_1 = piVar1[3];
  if (((var_1 & 0x4000) == 0) &&
     ((var_9 = var_8(__haystack_00), __haystack_00[var_9 - 2] != '.' ||
      ((__haystack_00[var_9 - 1] != 'o' && (__haystack_00[var_9 - 1] != 'a')))))) {
    var_2 = piVar2[3];
    if ((var_2 & 0x4000) != 0) {
      return -1;
    }
    var_9 = var_8(__haystack);
    if (__haystack[var_9 - 2] == '.') {
      if (__haystack[var_9 - 1] == 'o') {
        return -1;
      }
      if (__haystack[var_9 - 1] == 'a') {
        return -1;
      }
    }
  }
  else {
    var_2 = piVar2[3];
    if (((var_2 & 0x4000) == 0) &&
       ((var_9 = var_8(__haystack), __haystack[var_9 - 2] != '.' ||
        ((__haystack[var_9 - 1] != 'a' && (__haystack[var_9 - 1] != 'o')))))) {
      return 1;
    }
  }
  var_4 = var_1 ^ var_2;
  if ((var_4 & 4) != 0) {
    return -(type_1)((var_1 & 4) == 0) | 1;
  }
  if ((var_4 & 8) != 0) {
    return (-(type_1)((var_1 & 8) == 0) & 2) - 1;
  }
  if ((var_4 & 1) != 0) {
    return -(type_1)((var_1 & 1) == 0) | 1;
  }
  if ((var_4 & 2) != 0) {
    return (-(type_1)((var_1 & 2) == 0) & 2) - 1;
  }
  if ((*(int *)(*(int *)(*piVar1 + 4) + 4) != 5) || (*(int *)(*(int *)(*piVar2 + 4) + 4) != 5))
  goto LAB_00015bfb;
  if ((var_1 & 0x200100) == 0) {
    var_1 = piVar1[7];
    var_4 = 0;
    if ((var_2 & 0x200100) == 0) goto LAB_00015c4c;
  }
  else {
    if ((var_2 & 0x200100) != 0) goto LAB_00015bfb;
    var_1 = 0;
LAB_00015c4c:
    var_4 = piVar2[7];
  }
  if (var_4 != var_1) {
    return -(type_1)(var_4 < var_1) | 1;
  }
LAB_00015bfb:
  if (*__haystack_00 == '.') {
    if (*__haystack != '.') {
      return 1;
    }
  }
  else if (*__haystack == '.') {
    return -1;
  }
  iVar10 = var_10(__haystack_00,__haystack);
  return iVar10;
}


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

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

uint MASKED(int *param_1,int *param_2)

{
  char *__haystack;
  char *__haystack_00;
  char *pcVar1;
  char *pcVar2;
  size_t sVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  
  param_1 = (int *)*param_1;
  param_2 = (int *)*param_2;
  uVar4 = param_1[4];
  uVar6 = param_2[4];
  uVar5 = param_1[2] + *(int *)(uVar4 + 0x1c);
  uVar7 = param_2[2] + *(int *)(uVar6 + 0x1c);
  uVar8 = 1;
  if (uVar7 < uVar5) {
    return 1;
  }
  if (uVar5 < uVar7) {
    return 0xffffffff;
  }
  if (uVar6 < uVar4) {
    return 1;
  }
  if (uVar4 < uVar6) {
    return 0xffffffff;
  }
  __haystack = (char *)param_2[1];
  __haystack_00 = (char *)param_1[1];
  pcVar1 = strstr(__haystack_00,"gnu_compiled");
  pcVar2 = strstr(__haystack,"gnu_compiled");
  if (pcVar1 == (char *)0x0) {
    pcVar1 = strstr(__haystack_00,"gcc2_compiled");
    if ((pcVar2 != (char *)0x0) ||
       (pcVar2 = strstr(__haystack,"gcc2_compiled"), pcVar2 != (char *)0x0)) {
      uVar8 = 0xffffffff;
      goto joined_r0x00015b07;
    }
    if (pcVar1 != (char *)0x0) {
      return 1;
    }
  }
  else if (pcVar2 == (char *)0x0) {
    pcVar1 = strstr(__haystack,"gcc2_compiled");
joined_r0x00015b07:
    if (pcVar1 == (char *)0x0) {
      return uVar8;
    }
  }
  uVar4 = param_1[3];
  if (((uVar4 & 0x4000) == 0) &&
     ((sVar3 = strlen(__haystack_00), __haystack_00[sVar3 - 2] != '.' ||
      ((__haystack_00[sVar3 - 1] != 'o' && (__haystack_00[sVar3 - 1] != 'a')))))) {
    uVar6 = param_2[3];
    if ((uVar6 & 0x4000) != 0) {
      return 0xffffffff;
    }
    sVar3 = strlen(__haystack);
    if (__haystack[sVar3 - 2] == '.') {
      if (__haystack[sVar3 - 1] == 'o') {
        return 0xffffffff;
      }
      if (__haystack[sVar3 - 1] == 'a') {
        return 0xffffffff;
      }
    }
  }
  else {
    uVar6 = param_2[3];
    if (((uVar6 & 0x4000) == 0) &&
       ((sVar3 = strlen(__haystack), __haystack[sVar3 - 2] != '.' ||
        ((__haystack[sVar3 - 1] != 'a' && (__haystack[sVar3 - 1] != 'o')))))) {
      return 1;
    }
  }
  uVar8 = uVar4 ^ uVar6;
  if ((uVar8 & 4) != 0) {
    return -(uint)((uVar4 & 4) == 0) | 1;
  }
  if ((uVar8 & 8) != 0) {
    return (-(uint)((uVar4 & 8) == 0) & 2) - 1;
  }
  if ((uVar8 & 1) != 0) {
    return -(uint)((uVar4 & 1) == 0) | 1;
  }
  if ((uVar8 & 2) != 0) {
    return (-(uint)((uVar4 & 2) == 0) & 2) - 1;
  }
  if ((*(int *)(*(int *)(*param_1 + 4) + 4) != 5) || (*(int *)(*(int *)(*param_2 + 4) + 4) != 5))
  goto LAB_00015bfb;
  if ((uVar4 & 0x200100) == 0) {
    uVar4 = param_1[7];
    uVar8 = 0;
    if ((uVar6 & 0x200100) == 0) goto LAB_00015c4c;
  }
  else {
    if ((uVar6 & 0x200100) != 0) goto LAB_00015bfb;
    uVar4 = 0;
LAB_00015c4c:
    uVar8 = param_2[7];
  }
  if (uVar8 != uVar4) {
    return -(uint)(uVar8 < uVar4) | 1;
  }
LAB_00015bfb:
  if (*__haystack_00 == '.') {
    if (*__haystack != '.') {
      return 1;
    }
  }
  else if (*__haystack == '.') {
    return 0xffffffff;
  }
  uVar4 = strcmp(__haystack_00,__haystack);
  return uVar4;
}

