
int hol_entry_qcmp(void *entry1_v,void *entry2_v)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  long lVar6;
  long lVar7;
  __int32_t **pp_Var8;
  long lVar9;
  long lVar10;
  uint uVar11;
  long in_FS_OFFSET;
  char *long1;
  char *long2;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  iVar1 = *(int *)((long)entry1_v + 0x18);
  iVar2 = *(int *)((long)entry2_v + 0x18);
  lVar9 = *(long *)((long)entry1_v + 0x20);
  lVar6 = *(long *)((long)entry2_v + 0x20);
  if (lVar9 != lVar6) {
    if (lVar9 == 0) {
      do {
        lVar9 = lVar6;
        lVar6 = *(long *)(lVar9 + 0x10);
      } while (lVar6 != 0);
      uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);
    }
    else if (lVar6 == 0) {
      do {
        lVar6 = lVar9;
        lVar9 = *(long *)(lVar6 + 0x10);
      } while (lVar9 != 0);
      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);
    }
    else {
      iVar2 = *(int *)(lVar6 + 0x20);
      iVar1 = *(int *)(lVar9 + 0x20);
      while (iVar2 < iVar1) {
        lVar9 = *(long *)(lVar9 + 0x10);
        iVar1 = *(int *)(lVar9 + 0x20);
      }
      while (iVar1 < iVar2) {
        lVar6 = *(long *)(lVar6 + 0x10);
        iVar2 = *(int *)(lVar6 + 0x20);
      }
      do {
        lVar10 = lVar6;
        lVar7 = lVar9;
        lVar9 = *(long *)(lVar7 + 0x10);
        lVar6 = *(long *)(lVar10 + 0x10);
      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));
      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),
                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));
      if (uVar3 == 0) {
        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;
      }
    }
    goto LAB_00106b9c;
  }
  if (iVar1 != iVar2) {
    uVar3 = group_cmp(iVar1,iVar2,
                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |
                      1);
    goto LAB_00106b9c;
  }
  uVar4 = hol_entry_short_iterate
                    ((hol_entry *)entry1_v,until_short,
                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0);
  uVar5 = hol_entry_short_iterate
                    ((hol_entry *)entry2_v,until_short,
                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0);
                    /* WARNING: Load size is inaccurate */
  uVar3 = *(uint *)(*entry1_v + 0x18);
                    /* WARNING: Load size is inaccurate */
  uVar11 = *(uint *)(*entry2_v + 0x18) & 8;
  long1 = hol_entry_first_long((hol_entry *)entry1_v);
  long2 = hol_entry_first_long((hol_entry *)entry2_v);
  if ((uVar3 & 8) == 0) {
    uVar3 = 0;
    if (uVar11 != 0) {
LAB_00106ca2:
      uVar11 = canon_doc_option(&long2);
      goto LAB_00106caf;
    }
  }
  else {
    uVar3 = canon_doc_option(&long1);
    if (uVar11 != 0) goto LAB_00106ca2;
LAB_00106caf:
    if (uVar3 != uVar11) {
      uVar3 = uVar3 - uVar11;
      goto LAB_00106b9c;
    }
  }
  if ((char)uVar4 == '\0' && (char)uVar5 == '\0') {
    if (long1 == (char *)0x0) {
      uVar4 = 0;
    }
    else {
      if (long2 != (char *)0x0) {
        uVar3 = strcasecmp(long1,long2);
        if (uVar3 == 0) {
          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;
        }
        goto LAB_00106b9c;
      }
LAB_00106d3f:
      uVar4 = (uint)(byte)*long1;
    }
  }
  else if ((char)uVar4 == '\0') {
    if (long1 != (char *)0x0) goto LAB_00106d3f;
    uVar4 = 0;
  }
  if (((char)uVar5 == '\0') && (uVar5 = 0, long2 != (char *)0x0)) {
    uVar5 = (uint)(byte)*long2;
  }
  pp_Var8 = __ctype_tolower_loc();
  uVar3 = (*pp_Var8)[uVar4 & 0xff] - (*pp_Var8)[uVar5 & 0xff];
  if ((uVar3 == 0) && (uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0)) {
    uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;
  }
LAB_00106b9c:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar3;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



uint FUN_00106aca(long *param_1,long *param_2)

{
  int iVar1;
  int iVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  long lVar6;
  long lVar7;
  __int32_t **pp_Var8;
  long lVar9;
  long lVar10;
  uint uVar11;
  long in_FS_OFFSET;
  byte *local_50;
  byte *local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  iVar1 = (int)param_1[3];
  iVar2 = (int)param_2[3];
  lVar9 = param_1[4];
  lVar6 = param_2[4];
  if (lVar9 != lVar6) {
    if (lVar9 == 0) {
      do {
        lVar9 = lVar6;
        lVar6 = *(long *)(lVar9 + 0x10);
      } while (lVar6 != 0);
      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);
    }
    else if (lVar6 == 0) {
      do {
        lVar6 = lVar9;
        lVar9 = *(long *)(lVar6 + 0x10);
      } while (lVar9 != 0);
      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);
    }
    else {
      iVar2 = *(int *)(lVar6 + 0x20);
      iVar1 = *(int *)(lVar9 + 0x20);
      while (iVar2 < iVar1) {
        lVar9 = *(long *)(lVar9 + 0x10);
        iVar1 = *(int *)(lVar9 + 0x20);
      }
      while (iVar1 < iVar2) {
        lVar6 = *(long *)(lVar6 + 0x10);
        iVar2 = *(int *)(lVar6 + 0x20);
      }
      do {
        lVar10 = lVar6;
        lVar7 = lVar9;
        lVar9 = *(long *)(lVar7 + 0x10);
        lVar6 = *(long *)(lVar10 + 0x10);
      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));
      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),
                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));
      if (uVar5 == 0) {
        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;
      }
    }
    goto LAB_00106b9c;
  }
  if (iVar1 != iVar2) {
    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);
    goto LAB_00106b9c;
  }
  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);
  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);
  uVar5 = *(uint *)(*param_1 + 0x18);
  uVar11 = *(uint *)(*param_2 + 0x18) & 8;
  local_50 = (byte *)FUN_00105984(param_1);
  local_48 = (byte *)FUN_00105984(param_2);
  if ((uVar5 & 8) == 0) {
    uVar5 = 0;
    if (uVar11 != 0) {
LAB_00106ca2:
      uVar11 = FUN_00105a13(&local_48);
      goto LAB_00106caf;
    }
  }
  else {
    uVar5 = FUN_00105a13(&local_50);
    if (uVar11 != 0) goto LAB_00106ca2;
LAB_00106caf:
    if (uVar5 != uVar11) {
      uVar5 = uVar5 - uVar11;
      goto LAB_00106b9c;
    }
  }
  if (bVar3 == 0 && bVar4 == 0) {
    if (local_50 == (byte *)0x0) {
      bVar3 = 0;
    }
    else {
      if (local_48 != (byte *)0x0) {
        uVar5 = strcasecmp((char *)local_50,(char *)local_48);
        if (uVar5 == 0) {
          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;
        }
        goto LAB_00106b9c;
      }
LAB_00106d3f:
      bVar3 = *local_50;
    }
  }
  else if (bVar3 == 0) {
    if (local_50 != (byte *)0x0) goto LAB_00106d3f;
    bVar3 = 0;
  }
  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {
    bVar4 = *local_48;
  }
  pp_Var8 = __ctype_tolower_loc();
  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];
  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {
    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;
  }
LAB_00106b9c:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar5;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV RBX,RDI
MOV RBP,RSI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x18],RAX
XOR EAX,EAX
MOV EDI,dword ptr [RDI + 0x18]
MOV ESI,dword ptr [RSI + 0x18]
MOV RAX,qword ptr [RBX + 0x20]
MOV RCX,qword ptr [RBP + 0x20]
CMP RAX,RCX
JZ 0x00106bbf
TEST RAX,RAX
JZ 0x00106b36
TEST RCX,RCX
JZ 0x00106b51
MOV EDX,dword ptr [RAX + 0x20]
MOV ESI,dword ptr [RCX + 0x20]
CMP EDX,ESI
JLE 0x00106b24
MOV RAX,qword ptr [RAX + 0x10]
MOV EDX,dword ptr [RAX + 0x20]
CMP ESI,EDX
JL 0x00106b19
CMP ESI,EDX
JLE 0x00106b6f
MOV RCX,qword ptr [RCX + 0x10]
CMP dword ptr [RCX + 0x20],EDX
JG 0x00106b28
JMP 0x00106b6f
MOV RCX,RAX
MOV RAX,qword ptr [RCX + 0x10]
TEST RAX,RAX
JNZ 0x00106b33
MOV ESI,dword ptr [RCX + 0xc]
MOV EDX,0xffffffff
CALL 0x001059c4
JMP 0x00106b9c
MOV RAX,RDX
MOV RDX,qword ptr [RAX + 0x10]
TEST RDX,RDX
JNZ 0x00106b4e
MOV EDI,dword ptr [RAX + 0xc]
MOV EDX,0x1
CALL 0x001059c4
JMP 0x00106b9c
MOV RCX,RDX
MOV RAX,RSI
MOV RSI,qword ptr [RAX + 0x10]
MOV RDX,qword ptr [RCX + 0x10]
CMP RSI,RDX
JNZ 0x00106b69
MOV EDX,dword ptr [RCX + 0x8]
SUB EDX,dword ptr [RAX + 0x8]
MOV ESI,dword ptr [RCX + 0xc]
MOV EDI,dword ptr [RAX + 0xc]
CALL 0x001059c4
TEST EAX,EAX
JNZ 0x00106b9c
MOV EAX,dword ptr [RBX + 0x30]
CMP EAX,dword ptr [RBP + 0x30]
SBB EAX,EAX
OR EAX,0x1
MOV RBX,qword ptr [RSP + 0x18]
XOR RBX,qword ptr FS:[0x28]
JNZ 0x00106d45
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP EDI,ESI
JZ 0x00106bd5
MOV EAX,dword ptr [RBX + 0x30]
CMP EAX,dword ptr [RBP + 0x30]
SBB EDX,EDX
OR EDX,0x1
CALL 0x001059c4
JMP 0x00106b9c
MOV RAX,qword ptr [RBX + 0x28]
MOV RDX,qword ptr [RAX + 0x30]
MOV ECX,0x0
LEA RSI,[0x105f60]
MOV RDI,RBX
CALL 0x00105bed
MOV R13D,EAX
MOV RAX,qword ptr [RBP + 0x28]
MOV RDX,qword ptr [RAX + 0x30]
MOV ECX,0x0
LEA RSI,[0x105f60]
MOV RDI,RBP
CALL 0x00105bed
MOV R14D,EAX
MOV RAX,qword ptr [RBX]
MOV EAX,dword ptr [RAX + 0x18]
AND EAX,0x8
MOV R12D,EAX
MOV RAX,qword ptr [RBP]
MOV R15D,dword ptr [RAX + 0x18]
AND R15D,0x8
MOV RDI,RBX
CALL 0x00105984
MOV qword ptr [RSP + 0x8],RAX
MOV RDI,RBP
CALL 0x00105984
MOV qword ptr [RSP + 0x10],RAX
TEST R12D,R12D
JNZ 0x00106c90
TEST R15D,R15D
JNZ 0x00106ca2
MOV EAX,R13D
OR AL,R14B
JNZ 0x00106cbf
MOV RDI,qword ptr [RSP + 0x8]
TEST RDI,RDI
JZ 0x00106d32
MOV RSI,qword ptr [RSP + 0x10]
TEST RSI,RSI
JZ 0x00106d3a
CALL 0x00103060
TEST EAX,EAX
JNZ 0x00106b9c
MOV EAX,dword ptr [RBX + 0x30]
CMP EAX,dword ptr [RBP + 0x30]
SBB EAX,EAX
OR EAX,0x1
JMP 0x00106b9c
LEA RDI,[RSP + 0x8]
CALL 0x00105a13
MOV R12D,EAX
TEST R15D,R15D
JZ 0x00106caf
LEA RDI,[RSP + 0x10]
CALL 0x00105a13
MOV R15D,EAX
CMP R12D,R15D
JZ 0x00106c4f
MOV EAX,R12D
SUB EAX,R15D
JMP 0x00106b9c
MOV R12D,R13D
TEST R13B,R13B
JZ 0x00106d20
MOV R13D,R14D
TEST R14B,R14B
JNZ 0x00106ce3
MOV RAX,qword ptr [RSP + 0x10]
MOV R13D,0x0
TEST RAX,RAX
JZ 0x00106ce3
MOVZX R13D,byte ptr [RAX]
CALL 0x001033d0
MOV RCX,qword ptr [RAX]
MOVZX EAX,R12B
MOVZX EDX,R13B
MOV EAX,dword ptr [RCX + RAX*0x4]
SUB EAX,dword ptr [RCX + RDX*0x4]
JNZ 0x00106b9c
MOVZX EAX,R13B
MOVZX R12D,R12B
SUB EAX,R12D
JNZ 0x00106b9c
MOV EAX,dword ptr [RBX + 0x30]
CMP EAX,dword ptr [RBP + 0x30]
SBB EAX,EAX
OR EAX,0x1
JMP 0x00106b9c
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JNZ 0x00106d3f
MOV R12D,0x0
JMP 0x00106cc7
MOV R12D,0x0
JMP 0x00106cc7
MOV RAX,qword ptr [RSP + 0x8]
MOVZX R12D,byte ptr [RAX]
JMP 0x00106cc7
CALL 0x00103110
(translation_unit "uint FUN_00106aca(long *param_1,long *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  byte *local_50;\n  byte *local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = (int)param_1[3];\n  iVar2 = (int)param_2[3];\n  lVar9 = param_1[4];\n  lVar6 = param_2[4];\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }\n  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);\n  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);\n  uVar5 = *(uint *)(*param_1 + 0x18);\n  uVar11 = *(uint *)(*param_2 + 0x18) & 8;\n  local_50 = (byte *)FUN_00105984(param_1);\n  local_48 = (byte *)FUN_00105984(param_2);\n  if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }\n  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];\n  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "uint FUN_00106aca(long *param_1,long *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  byte *local_50;\n  byte *local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = (int)param_1[3];\n  iVar2 = (int)param_2[3];\n  lVar9 = param_1[4];\n  lVar6 = param_2[4];\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }\n  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);\n  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);\n  uVar5 = *(uint *)(*param_1 + 0x18);\n  uVar11 = *(uint *)(*param_2 + 0x18) & 8;\n  local_50 = (byte *)FUN_00105984(param_1);\n  local_48 = (byte *)FUN_00105984(param_2);\n  if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }\n  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];\n  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (function_declarator "FUN_00106aca(long *param_1,long *param_2)" identifier (parameter_list "(long *param_1,long *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  byte *local_50;\n  byte *local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = (int)param_1[3];\n  iVar2 = (int)param_2[3];\n  lVar9 = param_1[4];\n  lVar6 = param_2[4];\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }\n  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);\n  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);\n  uVar5 = *(uint *)(*param_1 + 0x18);\n  uVar11 = *(uint *)(*param_2 + 0x18) & 8;\n  local_50 = (byte *)FUN_00105984(param_1);\n  local_48 = (byte *)FUN_00105984(param_2);\n  if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }\n  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];\n  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "__int32_t **pp_Var8;" type_identifier (pointer_declarator "**pp_Var8" * (pointer_declarator "*pp_Var8" * identifier)) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "byte *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = (int)param_1[3];" (assignment_expression "iVar1 = (int)param_1[3]" identifier = (cast_expression "(int)param_1[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar2 = (int)param_2[3];" (assignment_expression "iVar2 = (int)param_2[3]" identifier = (cast_expression "(int)param_2[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "lVar9 = param_1[4];" (assignment_expression "lVar9 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = param_2[4];" (assignment_expression "lVar6 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }" if (parenthesized_expression "(lVar9 != lVar6)" ( (binary_expression "lVar9 != lVar6" identifier != identifier) )) (compound_statement "{\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }" { (if_statement "if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }" { (do_statement "do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);" do (compound_statement "{\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      }" { (expression_statement "lVar9 = lVar6;" (assignment_expression "lVar9 = lVar6" identifier = identifier) ;) (expression_statement "lVar6 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar9 + 0x10)" identifier = (pointer_expression "*(long *)(lVar9 + 0x10)" * (cast_expression "(long *)(lVar9 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) (expression_statement "uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);" (assignment_expression "uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" identifier = (call_expression "FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" identifier (argument_list "(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" ( identifier , (pointer_expression "*(undefined4 *)(lVar9 + 0xc)" * (cast_expression "(undefined4 *)(lVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0xc)" ( (binary_expression "lVar9 + 0xc" identifier + number_literal) )))) , number_literal )))) ;) }) (else_clause "else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" else (if_statement "if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }" { (do_statement "do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);" do (compound_statement "{\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      }" { (expression_statement "lVar6 = lVar9;" (assignment_expression "lVar6 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar6 + 0x10)" identifier = (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar9 != 0)" ( (binary_expression "lVar9 != 0" identifier != number_literal) )) ;) (expression_statement "uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);" (assignment_expression "uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" identifier = (call_expression "FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" identifier (argument_list "(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" ( (pointer_expression "*(undefined4 *)(lVar6 + 0xc)" * (cast_expression "(undefined4 *)(lVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xc)" ( (binary_expression "lVar6 + 0xc" identifier + number_literal) )))) , identifier , number_literal )))) ;) }) (else_clause "else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" else (compound_statement "{\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" { (expression_statement "iVar2 = *(int *)(lVar6 + 0x20);" (assignment_expression "iVar2 = *(int *)(lVar6 + 0x20)" identifier = (pointer_expression "*(int *)(lVar6 + 0x20)" * (cast_expression "(int *)(lVar6 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar9 + 0x20);" (assignment_expression "iVar1 = *(int *)(lVar9 + 0x20)" identifier = (pointer_expression "*(int *)(lVar9 + 0x20)" * (cast_expression "(int *)(lVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x20)" ( (binary_expression "lVar9 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }" while (parenthesized_expression "(iVar2 < iVar1)" ( (binary_expression "iVar2 < iVar1" identifier < identifier) )) (compound_statement "{\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }" { (expression_statement "lVar9 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar9 + 0x10)" identifier = (pointer_expression "*(long *)(lVar9 + 0x10)" * (cast_expression "(long *)(lVar9 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar9 + 0x20);" (assignment_expression "iVar1 = *(int *)(lVar9 + 0x20)" identifier = (pointer_expression "*(int *)(lVar9 + 0x20)" * (cast_expression "(int *)(lVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x20)" ( (binary_expression "lVar9 + 0x20" identifier + number_literal) ))))) ;) })) (while_statement "while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }" while (parenthesized_expression "(iVar1 < iVar2)" ( (binary_expression "iVar1 < iVar2" identifier < identifier) )) (compound_statement "{\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }" { (expression_statement "lVar6 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar6 + 0x10)" identifier = (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(lVar6 + 0x20);" (assignment_expression "iVar2 = *(int *)(lVar6 + 0x20)" identifier = (pointer_expression "*(int *)(lVar6 + 0x20)" * (cast_expression "(int *)(lVar6 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) })) (do_statement "do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));" do (compound_statement "{\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      }" { (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" identifier = identifier) ;) (expression_statement "lVar7 = lVar9;" (assignment_expression "lVar7 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = *(long *)(lVar7 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar7 + 0x10)" identifier = (pointer_expression "*(long *)(lVar7 + 0x10)" * (cast_expression "(long *)(lVar7 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = *(long *)(lVar10 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar10 + 0x10)" identifier = (pointer_expression "*(long *)(lVar10 + 0x10)" * (cast_expression "(long *)(lVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10))" ( (binary_expression "*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10)" (pointer_expression "*(long *)(lVar7 + 0x10)" * (cast_expression "(long *)(lVar7 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) )))) != (pointer_expression "*(long *)(lVar10 + 0x10)" * (cast_expression "(long *)(lVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) ))))) )) ;) (expression_statement "uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));" (assignment_expression "uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" identifier = (call_expression "FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" identifier (argument_list "(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" ( (pointer_expression "*(undefined4 *)(lVar7 + 0xc)" * (cast_expression "(undefined4 *)(lVar7 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0xc)" ( (binary_expression "lVar7 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar10 + 0xc)" * (cast_expression "(undefined4 *)(lVar10 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0xc)" ( (binary_expression "lVar10 + 0xc" identifier + number_literal) )))) , (binary_expression "*(int *)(lVar10 + 8) - *(int *)(lVar7 + 8)" (pointer_expression "*(int *)(lVar10 + 8)" * (cast_expression "(int *)(lVar10 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 8)" ( (binary_expression "lVar10 + 8" identifier + number_literal) )))) - (pointer_expression "*(int *)(lVar7 + 8)" * (cast_expression "(int *)(lVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 8)" ( (binary_expression "lVar7 + 8" identifier + number_literal) ))))) )))) ;) (if_statement "if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }" { (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" identifier = (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" - (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" ( (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 6)" * (cast_expression "(uint *)(param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) )))) | number_literal)) ;) })) }))))) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (if_statement "if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (compound_statement "{\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }" { (expression_statement "uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);" (assignment_expression "uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" identifier = (call_expression "FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" identifier (argument_list "(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" ( identifier , identifier , (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" - (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" ( (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 6)" * (cast_expression "(uint *)(param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) )))) | number_literal) )))) ;) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (expression_statement "bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);" (assignment_expression "bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" identifier = (call_expression "FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" identifier (argument_list "(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" ( identifier , identifier , (pointer_expression "*(undefined8 *)(param_1[5] + 0x30)" * (cast_expression "(undefined8 *)(param_1[5] + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x30)" ( (binary_expression "param_1[5] + 0x30" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) , number_literal )))) ;) (expression_statement "bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);" (assignment_expression "bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" identifier = (call_expression "FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" identifier (argument_list "(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" ( identifier , identifier , (pointer_expression "*(undefined8 *)(param_2[5] + 0x30)" * (cast_expression "(undefined8 *)(param_2[5] + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[5] + 0x30)" ( (binary_expression "param_2[5] + 0x30" (subscript_expression "param_2[5]" identifier [ number_literal ]) + number_literal) )))) , number_literal )))) ;) (expression_statement "uVar5 = *(uint *)(*param_1 + 0x18);" (assignment_expression "uVar5 = *(uint *)(*param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(*param_1 + 0x18)" * (cast_expression "(uint *)(*param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(*param_2 + 0x18) & 8;" (assignment_expression "uVar11 = *(uint *)(*param_2 + 0x18) & 8" identifier = (binary_expression "*(uint *)(*param_2 + 0x18) & 8" (pointer_expression "*(uint *)(*param_2 + 0x18)" * (cast_expression "(uint *)(*param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x18)" ( (binary_expression "*param_2 + 0x18" (pointer_expression "*param_2" * identifier) + number_literal) )))) & number_literal)) ;) (expression_statement "local_50 = (byte *)FUN_00105984(param_1);" (assignment_expression "local_50 = (byte *)FUN_00105984(param_1)" identifier = (cast_expression "(byte *)FUN_00105984(param_1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00105984(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "local_48 = (byte *)FUN_00105984(param_2);" (assignment_expression "local_48 = (byte *)FUN_00105984(param_2)" identifier = (cast_expression "(byte *)FUN_00105984(param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00105984(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (if_statement "if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" if (parenthesized_expression "((uVar5 & 8) == 0)" ( (binary_expression "(uVar5 & 8) == 0" (parenthesized_expression "(uVar5 & 8)" ( (binary_expression "uVar5 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (if_statement "if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }" { (labeled_statement "LAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);" statement_identifier : (expression_statement "uVar11 = FUN_00105a13(&local_48);" (assignment_expression "uVar11 = FUN_00105a13(&local_48)" identifier = (call_expression "FUN_00105a13(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) )))) ;)) (goto_statement "goto LAB_00106caf;" goto statement_identifier ;) })) }) (else_clause "else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" else (compound_statement "{\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" { (expression_statement "uVar5 = FUN_00105a13(&local_50);" (assignment_expression "uVar5 = FUN_00105a13(&local_50)" identifier = (call_expression "FUN_00105a13(&local_50)" identifier (argument_list "(&local_50)" ( (pointer_expression "&local_50" & identifier) )))) ;) (if_statement "if (uVar11 != 0) goto LAB_00106ca2;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00106ca2;" goto statement_identifier ;)) (labeled_statement "LAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" statement_identifier : (if_statement "if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" if (parenthesized_expression "(uVar5 != uVar11)" ( (binary_expression "uVar5 != uVar11" identifier != identifier) )) (compound_statement "{\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" { (expression_statement "uVar5 = uVar5 - uVar11;" (assignment_expression "uVar5 = uVar5 - uVar11" identifier = (binary_expression "uVar5 - uVar11" identifier - identifier)) ;) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) }))) }))) (if_statement "if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" if (parenthesized_expression "(bVar3 == 0 && bVar4 == 0)" ( (binary_expression "bVar3 == 0 && bVar4 == 0" (binary_expression "bVar3 == 0" identifier == number_literal) && (binary_expression "bVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }" { (if_statement "if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" if (parenthesized_expression "(local_50 == (byte *)0x0)" ( (binary_expression "local_50 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar3 = 0;\n    }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" else (compound_statement "{\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" { (if_statement "if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }" if (parenthesized_expression "(local_48 != (byte *)0x0)" ( (binary_expression "local_48 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }" { (expression_statement "uVar5 = strcasecmp((char *)local_50,(char *)local_48);" (assignment_expression "uVar5 = strcasecmp((char *)local_50,(char *)local_48)" identifier = (call_expression "strcasecmp((char *)local_50,(char *)local_48)" identifier (argument_list "((char *)local_50,(char *)local_48)" ( (cast_expression "(char *)local_50" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }" { (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" identifier = (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" - (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" ( (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 6)" * (cast_expression "(uint *)(param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) )))) | number_literal)) ;) })) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (labeled_statement "LAB_00106d3f:\n      bVar3 = *local_50;" statement_identifier : (expression_statement "bVar3 = *local_50;" (assignment_expression "bVar3 = *local_50" identifier = (pointer_expression "*local_50" * identifier)) ;)) }))) }) (else_clause "else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" else (if_statement "if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" { (if_statement "if (local_50 != (byte *)0x0) goto LAB_00106d3f;" if (parenthesized_expression "(local_50 != (byte *)0x0)" ( (binary_expression "local_50 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00106d3f;" goto statement_identifier ;)) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) })))) (if_statement "if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }" if (parenthesized_expression "((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0))" ( (binary_expression "(bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)" (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(bVar4 = 0, local_48 != (byte *)0x0)" ( (comma_expression "bVar4 = 0, local_48 != (byte *)0x0" (assignment_expression "bVar4 = 0" identifier = number_literal) , (binary_expression "local_48 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    bVar4 = *local_48;\n  }" { (expression_statement "bVar4 = *local_48;" (assignment_expression "bVar4 = *local_48" identifier = (pointer_expression "*local_48" * identifier)) ;) })) (expression_statement "pp_Var8 = __ctype_tolower_loc();" (assignment_expression "pp_Var8 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];" (assignment_expression "uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4]" identifier = (binary_expression "(*pp_Var8)[bVar3] - (*pp_Var8)[bVar4]" (subscript_expression "(*pp_Var8)[bVar3]" (parenthesized_expression "(*pp_Var8)" ( (pointer_expression "*pp_Var8" * identifier) )) [ identifier ]) - (subscript_expression "(*pp_Var8)[bVar4]" (parenthesized_expression "(*pp_Var8)" ( (pointer_expression "*pp_Var8" * identifier) )) [ identifier ]))) ;) (if_statement "if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }" if (parenthesized_expression "((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0))" ( (binary_expression "(uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)" (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)" ( (comma_expression "uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0" (assignment_expression "uVar5 = (uint)bVar4 - (uint)bVar3" identifier = (binary_expression "(uint)bVar4 - (uint)bVar3" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) - (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier))) , (binary_expression "uVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }" { (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" identifier = (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" - (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" ( (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 6)" * (cast_expression "(uint *)(param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) )))) | number_literal)) ;) })) (labeled_statement "LAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar5;\n  }" { (return_statement "return uVar5;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int hol_entry_qcmp(void *entry1_v,void *entry2_v)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  char *long1;\n  char *long2;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = *(int *)((long)entry1_v + 0x18);\n  iVar2 = *(int *)((long)entry2_v + 0x18);\n  lVar9 = *(long *)((long)entry1_v + 0x20);\n  lVar6 = *(long *)((long)entry2_v + 0x20);\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar3 = group_cmp(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1);\n    goto LAB_00106b9c;\n  }\n  uVar4 = hol_entry_short_iterate\n                    ((hol_entry *)entry1_v,until_short,\n                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0);\n  uVar5 = hol_entry_short_iterate\n                    ((hol_entry *)entry2_v,until_short,\n                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0);\n                    /* WARNING: Load size is inaccurate */\n  uVar3 = *(uint *)(*entry1_v + 0x18);\n                    /* WARNING: Load size is inaccurate */\n  uVar11 = *(uint *)(*entry2_v + 0x18) & 8;\n  long1 = hol_entry_first_long((hol_entry *)entry1_v);\n  long2 = hol_entry_first_long((hol_entry *)entry2_v);\n  if ((uVar3 & 8) == 0) {\n    uVar3 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = canon_doc_option(&long2);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar3 = canon_doc_option(&long1);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar3 != uVar11) {\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if ((char)uVar4 == '\0' && (char)uVar5 == '\0') {\n    if (long1 == (char *)0x0) {\n      uVar4 = 0;\n    }\n    else {\n      if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;\n    }\n  }\n  else if ((char)uVar4 == '\0') {\n    if (long1 != (char *)0x0) goto LAB_00106d3f;\n    uVar4 = 0;\n  }\n  if (((char)uVar5 == '\0') && (uVar5 = 0, long2 != (char *)0x0)) {\n    uVar5 = (uint)(byte)*long2;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar3 = (*pp_Var8)[uVar4 & 0xff] - (*pp_Var8)[uVar5 & 0xff];\n  if ((uVar3 == 0) && (uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0)) {\n    uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "int hol_entry_qcmp(void *entry1_v,void *entry2_v)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  char *long1;\n  char *long2;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = *(int *)((long)entry1_v + 0x18);\n  iVar2 = *(int *)((long)entry2_v + 0x18);\n  lVar9 = *(long *)((long)entry1_v + 0x20);\n  lVar6 = *(long *)((long)entry2_v + 0x20);\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar3 = group_cmp(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1);\n    goto LAB_00106b9c;\n  }\n  uVar4 = hol_entry_short_iterate\n                    ((hol_entry *)entry1_v,until_short,\n                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0);\n  uVar5 = hol_entry_short_iterate\n                    ((hol_entry *)entry2_v,until_short,\n                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0);\n                    /* WARNING: Load size is inaccurate */\n  uVar3 = *(uint *)(*entry1_v + 0x18);\n                    /* WARNING: Load size is inaccurate */\n  uVar11 = *(uint *)(*entry2_v + 0x18) & 8;\n  long1 = hol_entry_first_long((hol_entry *)entry1_v);\n  long2 = hol_entry_first_long((hol_entry *)entry2_v);\n  if ((uVar3 & 8) == 0) {\n    uVar3 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = canon_doc_option(&long2);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar3 = canon_doc_option(&long1);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar3 != uVar11) {\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if ((char)uVar4 == '\0' && (char)uVar5 == '\0') {\n    if (long1 == (char *)0x0) {\n      uVar4 = 0;\n    }\n    else {\n      if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;\n    }\n  }\n  else if ((char)uVar4 == '\0') {\n    if (long1 != (char *)0x0) goto LAB_00106d3f;\n    uVar4 = 0;\n  }\n  if (((char)uVar5 == '\0') && (uVar5 = 0, long2 != (char *)0x0)) {\n    uVar5 = (uint)(byte)*long2;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar3 = (*pp_Var8)[uVar4 & 0xff] - (*pp_Var8)[uVar5 & 0xff];\n  if ((uVar3 == 0) && (uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0)) {\n    uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "hol_entry_qcmp(void *entry1_v,void *entry2_v)" identifier (parameter_list "(void *entry1_v,void *entry2_v)" ( (parameter_declaration "void *entry1_v" primitive_type (pointer_declarator "*entry1_v" * identifier)) , (parameter_declaration "void *entry2_v" primitive_type (pointer_declarator "*entry2_v" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  char *long1;\n  char *long2;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = *(int *)((long)entry1_v + 0x18);\n  iVar2 = *(int *)((long)entry2_v + 0x18);\n  lVar9 = *(long *)((long)entry1_v + 0x20);\n  lVar6 = *(long *)((long)entry2_v + 0x20);\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar3 = group_cmp(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1);\n    goto LAB_00106b9c;\n  }\n  uVar4 = hol_entry_short_iterate\n                    ((hol_entry *)entry1_v,until_short,\n                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0);\n  uVar5 = hol_entry_short_iterate\n                    ((hol_entry *)entry2_v,until_short,\n                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0);\n                    /* WARNING: Load size is inaccurate */\n  uVar3 = *(uint *)(*entry1_v + 0x18);\n                    /* WARNING: Load size is inaccurate */\n  uVar11 = *(uint *)(*entry2_v + 0x18) & 8;\n  long1 = hol_entry_first_long((hol_entry *)entry1_v);\n  long2 = hol_entry_first_long((hol_entry *)entry2_v);\n  if ((uVar3 & 8) == 0) {\n    uVar3 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = canon_doc_option(&long2);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar3 = canon_doc_option(&long1);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar3 != uVar11) {\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if ((char)uVar4 == '\0' && (char)uVar5 == '\0') {\n    if (long1 == (char *)0x0) {\n      uVar4 = 0;\n    }\n    else {\n      if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;\n    }\n  }\n  else if ((char)uVar4 == '\0') {\n    if (long1 != (char *)0x0) goto LAB_00106d3f;\n    uVar4 = 0;\n  }\n  if (((char)uVar5 == '\0') && (uVar5 = 0, long2 != (char *)0x0)) {\n    uVar5 = (uint)(byte)*long2;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar3 = (*pp_Var8)[uVar4 & 0xff] - (*pp_Var8)[uVar5 & 0xff];\n  if ((uVar3 == 0) && (uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0)) {\n    uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "__int32_t **pp_Var8;" type_identifier (pointer_declarator "**pp_Var8" * (pointer_declarator "*pp_Var8" * identifier)) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "char *long1;" primitive_type (pointer_declarator "*long1" * identifier) ;) (declaration "char *long2;" primitive_type (pointer_declarator "*long2" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)((long)entry1_v + 0x18);" (assignment_expression "iVar1 = *(int *)((long)entry1_v + 0x18)" identifier = (pointer_expression "*(int *)((long)entry1_v + 0x18)" * (cast_expression "(int *)((long)entry1_v + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry1_v + 0x18)" ( (binary_expression "(long)entry1_v + 0x18" (cast_expression "(long)entry1_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)((long)entry2_v + 0x18);" (assignment_expression "iVar2 = *(int *)((long)entry2_v + 0x18)" identifier = (pointer_expression "*(int *)((long)entry2_v + 0x18)" * (cast_expression "(int *)((long)entry2_v + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry2_v + 0x18)" ( (binary_expression "(long)entry2_v + 0x18" (cast_expression "(long)entry2_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar9 = *(long *)((long)entry1_v + 0x20);" (assignment_expression "lVar9 = *(long *)((long)entry1_v + 0x20)" identifier = (pointer_expression "*(long *)((long)entry1_v + 0x20)" * (cast_expression "(long *)((long)entry1_v + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry1_v + 0x20)" ( (binary_expression "(long)entry1_v + 0x20" (cast_expression "(long)entry1_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar6 = *(long *)((long)entry2_v + 0x20);" (assignment_expression "lVar6 = *(long *)((long)entry2_v + 0x20)" identifier = (pointer_expression "*(long *)((long)entry2_v + 0x20)" * (cast_expression "(long *)((long)entry2_v + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry2_v + 0x20)" ( (binary_expression "(long)entry2_v + 0x20" (cast_expression "(long)entry2_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }" if (parenthesized_expression "(lVar9 != lVar6)" ( (binary_expression "lVar9 != lVar6" identifier != identifier) )) (compound_statement "{\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }" { (if_statement "if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);\n    }" { (do_statement "do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);" do (compound_statement "{\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      }" { (expression_statement "lVar9 = lVar6;" (assignment_expression "lVar9 = lVar6" identifier = identifier) ;) (expression_statement "lVar6 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar9 + 0x10)" identifier = (pointer_expression "*(long *)(lVar9 + 0x10)" * (cast_expression "(long *)(lVar9 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) (expression_statement "uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1);" (assignment_expression "uVar3 = group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1)" identifier = (call_expression "group_cmp(iVar1,*(int *)(lVar9 + 0xc),-1)" identifier (argument_list "(iVar1,*(int *)(lVar9 + 0xc),-1)" ( identifier , (pointer_expression "*(int *)(lVar9 + 0xc)" * (cast_expression "(int *)(lVar9 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0xc)" ( (binary_expression "lVar9 + 0xc" identifier + number_literal) )))) , number_literal )))) ;) }) (else_clause "else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }" else (if_statement "if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);\n    }" { (do_statement "do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);" do (compound_statement "{\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      }" { (expression_statement "lVar6 = lVar9;" (assignment_expression "lVar6 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar6 + 0x10)" identifier = (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar9 != 0)" ( (binary_expression "lVar9 != 0" identifier != number_literal) )) ;) (expression_statement "uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1);" (assignment_expression "uVar3 = group_cmp(*(int *)(lVar6 + 0xc),iVar2,1)" identifier = (call_expression "group_cmp(*(int *)(lVar6 + 0xc),iVar2,1)" identifier (argument_list "(*(int *)(lVar6 + 0xc),iVar2,1)" ( (pointer_expression "*(int *)(lVar6 + 0xc)" * (cast_expression "(int *)(lVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xc)" ( (binary_expression "lVar6 + 0xc" identifier + number_literal) )))) , identifier , number_literal )))) ;) }) (else_clause "else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }" else (compound_statement "{\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }\n    }" { (expression_statement "iVar2 = *(int *)(lVar6 + 0x20);" (assignment_expression "iVar2 = *(int *)(lVar6 + 0x20)" identifier = (pointer_expression "*(int *)(lVar6 + 0x20)" * (cast_expression "(int *)(lVar6 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar9 + 0x20);" (assignment_expression "iVar1 = *(int *)(lVar9 + 0x20)" identifier = (pointer_expression "*(int *)(lVar9 + 0x20)" * (cast_expression "(int *)(lVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x20)" ( (binary_expression "lVar9 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }" while (parenthesized_expression "(iVar2 < iVar1)" ( (binary_expression "iVar2 < iVar1" identifier < identifier) )) (compound_statement "{\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }" { (expression_statement "lVar9 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar9 + 0x10)" identifier = (pointer_expression "*(long *)(lVar9 + 0x10)" * (cast_expression "(long *)(lVar9 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar9 + 0x20);" (assignment_expression "iVar1 = *(int *)(lVar9 + 0x20)" identifier = (pointer_expression "*(int *)(lVar9 + 0x20)" * (cast_expression "(int *)(lVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x20)" ( (binary_expression "lVar9 + 0x20" identifier + number_literal) ))))) ;) })) (while_statement "while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }" while (parenthesized_expression "(iVar1 < iVar2)" ( (binary_expression "iVar1 < iVar2" identifier < identifier) )) (compound_statement "{\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }" { (expression_statement "lVar6 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar6 + 0x10)" identifier = (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(lVar6 + 0x20);" (assignment_expression "iVar2 = *(int *)(lVar6 + 0x20)" identifier = (pointer_expression "*(int *)(lVar6 + 0x20)" * (cast_expression "(int *)(lVar6 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) })) (do_statement "do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));" do (compound_statement "{\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      }" { (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" identifier = identifier) ;) (expression_statement "lVar7 = lVar9;" (assignment_expression "lVar7 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = *(long *)(lVar7 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar7 + 0x10)" identifier = (pointer_expression "*(long *)(lVar7 + 0x10)" * (cast_expression "(long *)(lVar7 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = *(long *)(lVar10 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar10 + 0x10)" identifier = (pointer_expression "*(long *)(lVar10 + 0x10)" * (cast_expression "(long *)(lVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10))" ( (binary_expression "*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10)" (pointer_expression "*(long *)(lVar7 + 0x10)" * (cast_expression "(long *)(lVar7 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) )))) != (pointer_expression "*(long *)(lVar10 + 0x10)" * (cast_expression "(long *)(lVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) ))))) )) ;) (expression_statement "uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));" (assignment_expression "uVar3 = group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" identifier = (call_expression "group_cmp(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" identifier (argument_list "(*(int *)(lVar7 + 0xc),*(int *)(lVar10 + 0xc),\n                        *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" ( (pointer_expression "*(int *)(lVar7 + 0xc)" * (cast_expression "(int *)(lVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0xc)" ( (binary_expression "lVar7 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(int *)(lVar10 + 0xc)" * (cast_expression "(int *)(lVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0xc)" ( (binary_expression "lVar10 + 0xc" identifier + number_literal) )))) , (binary_expression "*(int *)(lVar10 + 8) - *(int *)(lVar7 + 8)" (pointer_expression "*(int *)(lVar10 + 8)" * (cast_expression "(int *)(lVar10 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 8)" ( (binary_expression "lVar10 + 8" identifier + number_literal) )))) - (pointer_expression "*(int *)(lVar7 + 8)" * (cast_expression "(int *)(lVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 8)" ( (binary_expression "lVar7 + 8" identifier + number_literal) ))))) )))) ;) (if_statement "if (uVar3 == 0) {\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n      }" { (expression_statement "uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;" (assignment_expression "uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1" identifier = (binary_expression "-(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1" (unary_expression "-(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" - (call_expression "(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" ( (binary_expression "*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)" (pointer_expression "*(uint *)((long)entry1_v + 0x30)" * (cast_expression "(uint *)((long)entry1_v + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry1_v + 0x30)" ( (binary_expression "(long)entry1_v + 0x30" (cast_expression "(long)entry1_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) < (pointer_expression "*(uint *)((long)entry2_v + 0x30)" * (cast_expression "(uint *)((long)entry2_v + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry2_v + 0x30)" ( (binary_expression "(long)entry2_v + 0x30" (cast_expression "(long)entry2_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )))) | number_literal)) ;) })) }))))) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (if_statement "if (iVar1 != iVar2) {\n    uVar3 = group_cmp(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1);\n    goto LAB_00106b9c;\n  }" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (compound_statement "{\n    uVar3 = group_cmp(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1);\n    goto LAB_00106b9c;\n  }" { (expression_statement "uVar3 = group_cmp(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1);" (assignment_expression "uVar3 = group_cmp(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1)" identifier = (call_expression "group_cmp(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1)" identifier (argument_list "(iVar1,iVar2,\n                      -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1)" ( identifier , identifier , (binary_expression "-(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) |\n                      1" (unary_expression "-(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" - (call_expression "(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" ( (binary_expression "*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)" (pointer_expression "*(uint *)((long)entry1_v + 0x30)" * (cast_expression "(uint *)((long)entry1_v + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry1_v + 0x30)" ( (binary_expression "(long)entry1_v + 0x30" (cast_expression "(long)entry1_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) < (pointer_expression "*(uint *)((long)entry2_v + 0x30)" * (cast_expression "(uint *)((long)entry2_v + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry2_v + 0x30)" ( (binary_expression "(long)entry2_v + 0x30" (cast_expression "(long)entry2_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )))) | number_literal) )))) ;) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (expression_statement "uVar4 = hol_entry_short_iterate\n                    ((hol_entry *)entry1_v,until_short,\n                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0);" (assignment_expression "uVar4 = hol_entry_short_iterate\n                    ((hol_entry *)entry1_v,until_short,\n                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0)" identifier = (call_expression "hol_entry_short_iterate\n                    ((hol_entry *)entry1_v,until_short,\n                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0)" identifier (argument_list "((hol_entry *)entry1_v,until_short,\n                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0)" ( (cast_expression "(hol_entry *)entry1_v" ( (type_descriptor "hol_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (pointer_expression "*(char **)(*(long *)((long)entry1_v + 0x28) + 0x30)" * (cast_expression "(char **)(*(long *)((long)entry1_v + 0x28) + 0x30)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)((long)entry1_v + 0x28) + 0x30)" ( (binary_expression "*(long *)((long)entry1_v + 0x28) + 0x30" (pointer_expression "*(long *)((long)entry1_v + 0x28)" * (cast_expression "(long *)((long)entry1_v + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry1_v + 0x28)" ( (binary_expression "(long)entry1_v + 0x28" (cast_expression "(long)entry1_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) )))) , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "uVar5 = hol_entry_short_iterate\n                    ((hol_entry *)entry2_v,until_short,\n                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0);" (assignment_expression "uVar5 = hol_entry_short_iterate\n                    ((hol_entry *)entry2_v,until_short,\n                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0)" identifier = (call_expression "hol_entry_short_iterate\n                    ((hol_entry *)entry2_v,until_short,\n                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0)" identifier (argument_list "((hol_entry *)entry2_v,until_short,\n                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0)" ( (cast_expression "(hol_entry *)entry2_v" ( (type_descriptor "hol_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (pointer_expression "*(char **)(*(long *)((long)entry2_v + 0x28) + 0x30)" * (cast_expression "(char **)(*(long *)((long)entry2_v + 0x28) + 0x30)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)((long)entry2_v + 0x28) + 0x30)" ( (binary_expression "*(long *)((long)entry2_v + 0x28) + 0x30" (pointer_expression "*(long *)((long)entry2_v + 0x28)" * (cast_expression "(long *)((long)entry2_v + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry2_v + 0x28)" ( (binary_expression "(long)entry2_v + 0x28" (cast_expression "(long)entry2_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + number_literal) )))) , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) comment (expression_statement "uVar3 = *(uint *)(*entry1_v + 0x18);" (assignment_expression "uVar3 = *(uint *)(*entry1_v + 0x18)" identifier = (pointer_expression "*(uint *)(*entry1_v + 0x18)" * (cast_expression "(uint *)(*entry1_v + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*entry1_v + 0x18)" ( (binary_expression "*entry1_v + 0x18" (pointer_expression "*entry1_v" * identifier) + number_literal) ))))) ;) comment (expression_statement "uVar11 = *(uint *)(*entry2_v + 0x18) & 8;" (assignment_expression "uVar11 = *(uint *)(*entry2_v + 0x18) & 8" identifier = (binary_expression "*(uint *)(*entry2_v + 0x18) & 8" (pointer_expression "*(uint *)(*entry2_v + 0x18)" * (cast_expression "(uint *)(*entry2_v + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*entry2_v + 0x18)" ( (binary_expression "*entry2_v + 0x18" (pointer_expression "*entry2_v" * identifier) + number_literal) )))) & number_literal)) ;) (expression_statement "long1 = hol_entry_first_long((hol_entry *)entry1_v);" (assignment_expression "long1 = hol_entry_first_long((hol_entry *)entry1_v)" identifier = (call_expression "hol_entry_first_long((hol_entry *)entry1_v)" identifier (argument_list "((hol_entry *)entry1_v)" ( (cast_expression "(hol_entry *)entry1_v" ( (type_descriptor "hol_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "long2 = hol_entry_first_long((hol_entry *)entry2_v);" (assignment_expression "long2 = hol_entry_first_long((hol_entry *)entry2_v)" identifier = (call_expression "hol_entry_first_long((hol_entry *)entry2_v)" identifier (argument_list "((hol_entry *)entry2_v)" ( (cast_expression "(hol_entry *)entry2_v" ( (type_descriptor "hol_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if ((uVar3 & 8) == 0) {\n    uVar3 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = canon_doc_option(&long2);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar3 = canon_doc_option(&long1);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar3 != uVar11) {\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" if (parenthesized_expression "((uVar3 & 8) == 0)" ( (binary_expression "(uVar3 & 8) == 0" (parenthesized_expression "(uVar3 & 8)" ( (binary_expression "uVar3 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar3 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = canon_doc_option(&long2);\n      goto LAB_00106caf;\n    }\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = canon_doc_option(&long2);\n      goto LAB_00106caf;\n    }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00106ca2:\n      uVar11 = canon_doc_option(&long2);\n      goto LAB_00106caf;\n    }" { (labeled_statement "LAB_00106ca2:\n      uVar11 = canon_doc_option(&long2);" statement_identifier : (expression_statement "uVar11 = canon_doc_option(&long2);" (assignment_expression "uVar11 = canon_doc_option(&long2)" identifier = (call_expression "canon_doc_option(&long2)" identifier (argument_list "(&long2)" ( (pointer_expression "&long2" & identifier) )))) ;)) (goto_statement "goto LAB_00106caf;" goto statement_identifier ;) })) }) (else_clause "else {\n    uVar3 = canon_doc_option(&long1);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar3 != uVar11) {\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" else (compound_statement "{\n    uVar3 = canon_doc_option(&long1);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar3 != uVar11) {\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" { (expression_statement "uVar3 = canon_doc_option(&long1);" (assignment_expression "uVar3 = canon_doc_option(&long1)" identifier = (call_expression "canon_doc_option(&long1)" identifier (argument_list "(&long1)" ( (pointer_expression "&long1" & identifier) )))) ;) (if_statement "if (uVar11 != 0) goto LAB_00106ca2;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00106ca2;" goto statement_identifier ;)) (labeled_statement "LAB_00106caf:\n    if (uVar3 != uVar11) {\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }" statement_identifier : (if_statement "if (uVar3 != uVar11) {\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }" if (parenthesized_expression "(uVar3 != uVar11)" ( (binary_expression "uVar3 != uVar11" identifier != identifier) )) (compound_statement "{\n      uVar3 = uVar3 - uVar11;\n      goto LAB_00106b9c;\n    }" { (expression_statement "uVar3 = uVar3 - uVar11;" (assignment_expression "uVar3 = uVar3 - uVar11" identifier = (binary_expression "uVar3 - uVar11" identifier - identifier)) ;) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) }))) }))) (if_statement "if ((char)uVar4 == '\0' && (char)uVar5 == '\0') {\n    if (long1 == (char *)0x0) {\n      uVar4 = 0;\n    }\n    else {\n      if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;\n    }\n  }\n  else if ((char)uVar4 == '\0') {\n    if (long1 != (char *)0x0) goto LAB_00106d3f;\n    uVar4 = 0;\n  }" if (parenthesized_expression "((char)uVar4 == '\0' && (char)uVar5 == '\0')" ( (binary_expression "(char)uVar4 == '\0' && (char)uVar5 == '\0'" (binary_expression "(char)uVar4 == '\0'" (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) && (binary_expression "(char)uVar5 == '\0'" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n    if (long1 == (char *)0x0) {\n      uVar4 = 0;\n    }\n    else {\n      if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;\n    }\n  }" { (if_statement "if (long1 == (char *)0x0) {\n      uVar4 = 0;\n    }\n    else {\n      if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;\n    }" if (parenthesized_expression "(long1 == (char *)0x0)" ( (binary_expression "long1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar4 = 0;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;\n    }" else (compound_statement "{\n      if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;\n    }" { (if_statement "if (long2 != (char *)0x0) {\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }" if (parenthesized_expression "(long2 != (char *)0x0)" ( (binary_expression "long2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar3 = strcasecmp(long1,long2);\n        if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }\n        goto LAB_00106b9c;\n      }" { (expression_statement "uVar3 = strcasecmp(long1,long2);" (assignment_expression "uVar3 = strcasecmp(long1,long2)" identifier = (call_expression "strcasecmp(long1,long2)" identifier (argument_list "(long1,long2)" ( identifier , identifier )))) ;) (if_statement "if (uVar3 == 0) {\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n        }" { (expression_statement "uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;" (assignment_expression "uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1" identifier = (binary_expression "-(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1" (unary_expression "-(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" - (call_expression "(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" ( (binary_expression "*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)" (pointer_expression "*(uint *)((long)entry1_v + 0x30)" * (cast_expression "(uint *)((long)entry1_v + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry1_v + 0x30)" ( (binary_expression "(long)entry1_v + 0x30" (cast_expression "(long)entry1_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) < (pointer_expression "*(uint *)((long)entry2_v + 0x30)" * (cast_expression "(uint *)((long)entry2_v + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry2_v + 0x30)" ( (binary_expression "(long)entry2_v + 0x30" (cast_expression "(long)entry2_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )))) | number_literal)) ;) })) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (labeled_statement "LAB_00106d3f:\n      uVar4 = (uint)(byte)*long1;" statement_identifier : (expression_statement "uVar4 = (uint)(byte)*long1;" (assignment_expression "uVar4 = (uint)(byte)*long1" identifier = (binary_expression "(uint)(byte)*long1" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;)) }))) }) (else_clause "else if ((char)uVar4 == '\0') {\n    if (long1 != (char *)0x0) goto LAB_00106d3f;\n    uVar4 = 0;\n  }" else (if_statement "if ((char)uVar4 == '\0') {\n    if (long1 != (char *)0x0) goto LAB_00106d3f;\n    uVar4 = 0;\n  }" if (parenthesized_expression "((char)uVar4 == '\0')" ( (binary_expression "(char)uVar4 == '\0'" (cast_expression "(char)uVar4" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (long1 != (char *)0x0) goto LAB_00106d3f;\n    uVar4 = 0;\n  }" { (if_statement "if (long1 != (char *)0x0) goto LAB_00106d3f;" if (parenthesized_expression "(long1 != (char *)0x0)" ( (binary_expression "long1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00106d3f;" goto statement_identifier ;)) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) })))) (if_statement "if (((char)uVar5 == '\0') && (uVar5 = 0, long2 != (char *)0x0)) {\n    uVar5 = (uint)(byte)*long2;\n  }" if (parenthesized_expression "(((char)uVar5 == '\0') && (uVar5 = 0, long2 != (char *)0x0))" ( (binary_expression "((char)uVar5 == '\0') && (uVar5 = 0, long2 != (char *)0x0)" (parenthesized_expression "((char)uVar5 == '\0')" ( (binary_expression "(char)uVar5 == '\0'" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(uVar5 = 0, long2 != (char *)0x0)" ( (comma_expression "uVar5 = 0, long2 != (char *)0x0" (assignment_expression "uVar5 = 0" identifier = number_literal) , (binary_expression "long2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    uVar5 = (uint)(byte)*long2;\n  }" { (expression_statement "uVar5 = (uint)(byte)*long2;" (assignment_expression "uVar5 = (uint)(byte)*long2" identifier = (binary_expression "(uint)(byte)*long2" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) * identifier)) ;) })) (expression_statement "pp_Var8 = __ctype_tolower_loc();" (assignment_expression "pp_Var8 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = (*pp_Var8)[uVar4 & 0xff] - (*pp_Var8)[uVar5 & 0xff];" (assignment_expression "uVar3 = (*pp_Var8)[uVar4 & 0xff] - (*pp_Var8)[uVar5 & 0xff]" identifier = (binary_expression "(*pp_Var8)[uVar4 & 0xff] - (*pp_Var8)[uVar5 & 0xff]" (subscript_expression "(*pp_Var8)[uVar4 & 0xff]" (parenthesized_expression "(*pp_Var8)" ( (pointer_expression "*pp_Var8" * identifier) )) [ (binary_expression "uVar4 & 0xff" identifier & number_literal) ]) - (subscript_expression "(*pp_Var8)[uVar5 & 0xff]" (parenthesized_expression "(*pp_Var8)" ( (pointer_expression "*pp_Var8" * identifier) )) [ (binary_expression "uVar5 & 0xff" identifier & number_literal) ]))) ;) (if_statement "if ((uVar3 == 0) && (uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0)) {\n    uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n  }" if (parenthesized_expression "((uVar3 == 0) && (uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0))" ( (binary_expression "(uVar3 == 0) && (uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0)" (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0)" ( (comma_expression "uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff), uVar3 == 0" (assignment_expression "uVar3 = (uVar5 & 0xff) - (uVar4 & 0xff)" identifier = (binary_expression "(uVar5 & 0xff) - (uVar4 & 0xff)" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) - (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )))) , (binary_expression "uVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;\n  }" { (expression_statement "uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1;" (assignment_expression "uVar3 = -(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1" identifier = (binary_expression "-(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)) | 1" (unary_expression "-(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" - (call_expression "(uint)(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30))" ( (binary_expression "*(uint *)((long)entry1_v + 0x30) < *(uint *)((long)entry2_v + 0x30)" (pointer_expression "*(uint *)((long)entry1_v + 0x30)" * (cast_expression "(uint *)((long)entry1_v + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry1_v + 0x30)" ( (binary_expression "(long)entry1_v + 0x30" (cast_expression "(long)entry1_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) < (pointer_expression "*(uint *)((long)entry2_v + 0x30)" * (cast_expression "(uint *)((long)entry2_v + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)entry2_v + 0x30)" ( (binary_expression "(long)entry2_v + 0x30" (cast_expression "(long)entry2_v" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )))) | number_literal)) ;) })) (labeled_statement "LAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "uint FUN_00106aca(long *param_1,long *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  byte *local_50;\n  byte *local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = (int)param_1[3];\n  iVar2 = (int)param_2[3];\n  lVar9 = param_1[4];\n  lVar6 = param_2[4];\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }\n  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);\n  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);\n  uVar5 = *(uint *)(*param_1 + 0x18);\n  uVar11 = *(uint *)(*param_2 + 0x18) & 8;\n  local_50 = (byte *)FUN_00105984(param_1);\n  local_48 = (byte *)FUN_00105984(param_2);\n  if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }\n  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];\n  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "uint FUN_00106aca(long *param_1,long *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  byte *local_50;\n  byte *local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = (int)param_1[3];\n  iVar2 = (int)param_2[3];\n  lVar9 = param_1[4];\n  lVar6 = param_2[4];\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }\n  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);\n  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);\n  uVar5 = *(uint *)(*param_1 + 0x18);\n  uVar11 = *(uint *)(*param_2 + 0x18) & 8;\n  local_50 = (byte *)FUN_00105984(param_1);\n  local_48 = (byte *)FUN_00105984(param_2);\n  if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }\n  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];\n  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }\n                    \n  __stack_chk_fail();\n}" type_identifier (function_declarator "FUN_00106aca(long *param_1,long *param_2)" identifier (parameter_list "(long *param_1,long *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  byte *local_50;\n  byte *local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = (int)param_1[3];\n  iVar2 = (int)param_2[3];\n  lVar9 = param_1[4];\n  lVar6 = param_2[4];\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }\n  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);\n  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);\n  uVar5 = *(uint *)(*param_1 + 0x18);\n  uVar11 = *(uint *)(*param_2 + 0x18) & 8;\n  local_50 = (byte *)FUN_00105984(param_1);\n  local_48 = (byte *)FUN_00105984(param_2);\n  if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }\n  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];\n  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "__int32_t **pp_Var8;" type_identifier (pointer_declarator "**pp_Var8" * (pointer_declarator "*pp_Var8" * identifier)) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "byte *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = (int)param_1[3];" (assignment_expression "iVar1 = (int)param_1[3]" identifier = (cast_expression "(int)param_1[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar2 = (int)param_2[3];" (assignment_expression "iVar2 = (int)param_2[3]" identifier = (cast_expression "(int)param_2[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) ;) (expression_statement "lVar9 = param_1[4];" (assignment_expression "lVar9 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = param_2[4];" (assignment_expression "lVar6 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (if_statement "if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }" if (parenthesized_expression "(lVar9 != lVar6)" ( (binary_expression "lVar9 != lVar6" identifier != identifier) )) (compound_statement "{\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }" { (if_statement "if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }" { (do_statement "do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);" do (compound_statement "{\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      }" { (expression_statement "lVar9 = lVar6;" (assignment_expression "lVar9 = lVar6" identifier = identifier) ;) (expression_statement "lVar6 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar9 + 0x10)" identifier = (pointer_expression "*(long *)(lVar9 + 0x10)" * (cast_expression "(long *)(lVar9 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) ;) (expression_statement "uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);" (assignment_expression "uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" identifier = (call_expression "FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" identifier (argument_list "(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" ( identifier , (pointer_expression "*(undefined4 *)(lVar9 + 0xc)" * (cast_expression "(undefined4 *)(lVar9 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0xc)" ( (binary_expression "lVar9 + 0xc" identifier + number_literal) )))) , number_literal )))) ;) }) (else_clause "else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" else (if_statement "if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }" { (do_statement "do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);" do (compound_statement "{\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      }" { (expression_statement "lVar6 = lVar9;" (assignment_expression "lVar6 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar6 + 0x10)" identifier = (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar9 != 0)" ( (binary_expression "lVar9 != 0" identifier != number_literal) )) ;) (expression_statement "uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);" (assignment_expression "uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" identifier = (call_expression "FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" identifier (argument_list "(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" ( (pointer_expression "*(undefined4 *)(lVar6 + 0xc)" * (cast_expression "(undefined4 *)(lVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xc)" ( (binary_expression "lVar6 + 0xc" identifier + number_literal) )))) , identifier , number_literal )))) ;) }) (else_clause "else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" else (compound_statement "{\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" { (expression_statement "iVar2 = *(int *)(lVar6 + 0x20);" (assignment_expression "iVar2 = *(int *)(lVar6 + 0x20)" identifier = (pointer_expression "*(int *)(lVar6 + 0x20)" * (cast_expression "(int *)(lVar6 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar9 + 0x20);" (assignment_expression "iVar1 = *(int *)(lVar9 + 0x20)" identifier = (pointer_expression "*(int *)(lVar9 + 0x20)" * (cast_expression "(int *)(lVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x20)" ( (binary_expression "lVar9 + 0x20" identifier + number_literal) ))))) ;) (while_statement "while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }" while (parenthesized_expression "(iVar2 < iVar1)" ( (binary_expression "iVar2 < iVar1" identifier < identifier) )) (compound_statement "{\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }" { (expression_statement "lVar9 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar9 + 0x10)" identifier = (pointer_expression "*(long *)(lVar9 + 0x10)" * (cast_expression "(long *)(lVar9 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x10)" ( (binary_expression "lVar9 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(lVar9 + 0x20);" (assignment_expression "iVar1 = *(int *)(lVar9 + 0x20)" identifier = (pointer_expression "*(int *)(lVar9 + 0x20)" * (cast_expression "(int *)(lVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + 0x20)" ( (binary_expression "lVar9 + 0x20" identifier + number_literal) ))))) ;) })) (while_statement "while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }" while (parenthesized_expression "(iVar1 < iVar2)" ( (binary_expression "iVar1 < iVar2" identifier < identifier) )) (compound_statement "{\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }" { (expression_statement "lVar6 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar6 + 0x10)" identifier = (pointer_expression "*(long *)(lVar6 + 0x10)" * (cast_expression "(long *)(lVar6 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(lVar6 + 0x20);" (assignment_expression "iVar2 = *(int *)(lVar6 + 0x20)" identifier = (pointer_expression "*(int *)(lVar6 + 0x20)" * (cast_expression "(int *)(lVar6 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) ))))) ;) })) (do_statement "do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));" do (compound_statement "{\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      }" { (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" identifier = identifier) ;) (expression_statement "lVar7 = lVar9;" (assignment_expression "lVar7 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = *(long *)(lVar7 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar7 + 0x10)" identifier = (pointer_expression "*(long *)(lVar7 + 0x10)" * (cast_expression "(long *)(lVar7 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = *(long *)(lVar10 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar10 + 0x10)" identifier = (pointer_expression "*(long *)(lVar10 + 0x10)" * (cast_expression "(long *)(lVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10))" ( (binary_expression "*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10)" (pointer_expression "*(long *)(lVar7 + 0x10)" * (cast_expression "(long *)(lVar7 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) )))) != (pointer_expression "*(long *)(lVar10 + 0x10)" * (cast_expression "(long *)(lVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) ))))) )) ;) (expression_statement "uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));" (assignment_expression "uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" identifier = (call_expression "FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" identifier (argument_list "(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" ( (pointer_expression "*(undefined4 *)(lVar7 + 0xc)" * (cast_expression "(undefined4 *)(lVar7 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0xc)" ( (binary_expression "lVar7 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(lVar10 + 0xc)" * (cast_expression "(undefined4 *)(lVar10 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0xc)" ( (binary_expression "lVar10 + 0xc" identifier + number_literal) )))) , (binary_expression "*(int *)(lVar10 + 8) - *(int *)(lVar7 + 8)" (pointer_expression "*(int *)(lVar10 + 8)" * (cast_expression "(int *)(lVar10 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 8)" ( (binary_expression "lVar10 + 8" identifier + number_literal) )))) - (pointer_expression "*(int *)(lVar7 + 8)" * (cast_expression "(int *)(lVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 8)" ( (binary_expression "lVar7 + 8" identifier + number_literal) ))))) )))) ;) (if_statement "if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }" { (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" identifier = (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" - (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" ( (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 6)" * (cast_expression "(uint *)(param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) )))) | number_literal)) ;) })) }))))) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (if_statement "if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }" if (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) (compound_statement "{\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }" { (expression_statement "uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);" (assignment_expression "uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" identifier = (call_expression "FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" identifier (argument_list "(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" ( identifier , identifier , (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" - (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" ( (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 6)" * (cast_expression "(uint *)(param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) )))) | number_literal) )))) ;) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (expression_statement "bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);" (assignment_expression "bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" identifier = (call_expression "FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" identifier (argument_list "(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" ( identifier , identifier , (pointer_expression "*(undefined8 *)(param_1[5] + 0x30)" * (cast_expression "(undefined8 *)(param_1[5] + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x30)" ( (binary_expression "param_1[5] + 0x30" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) , number_literal )))) ;) (expression_statement "bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);" (assignment_expression "bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" identifier = (call_expression "FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" identifier (argument_list "(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" ( identifier , identifier , (pointer_expression "*(undefined8 *)(param_2[5] + 0x30)" * (cast_expression "(undefined8 *)(param_2[5] + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[5] + 0x30)" ( (binary_expression "param_2[5] + 0x30" (subscript_expression "param_2[5]" identifier [ number_literal ]) + number_literal) )))) , number_literal )))) ;) (expression_statement "uVar5 = *(uint *)(*param_1 + 0x18);" (assignment_expression "uVar5 = *(uint *)(*param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(*param_1 + 0x18)" * (cast_expression "(uint *)(*param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(*param_2 + 0x18) & 8;" (assignment_expression "uVar11 = *(uint *)(*param_2 + 0x18) & 8" identifier = (binary_expression "*(uint *)(*param_2 + 0x18) & 8" (pointer_expression "*(uint *)(*param_2 + 0x18)" * (cast_expression "(uint *)(*param_2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 0x18)" ( (binary_expression "*param_2 + 0x18" (pointer_expression "*param_2" * identifier) + number_literal) )))) & number_literal)) ;) (expression_statement "local_50 = (byte *)FUN_00105984(param_1);" (assignment_expression "local_50 = (byte *)FUN_00105984(param_1)" identifier = (cast_expression "(byte *)FUN_00105984(param_1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00105984(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "local_48 = (byte *)FUN_00105984(param_2);" (assignment_expression "local_48 = (byte *)FUN_00105984(param_2)" identifier = (cast_expression "(byte *)FUN_00105984(param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00105984(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (if_statement "if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" if (parenthesized_expression "((uVar5 & 8) == 0)" ( (binary_expression "(uVar5 & 8) == 0" (parenthesized_expression "(uVar5 & 8)" ( (binary_expression "uVar5 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (if_statement "if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }" { (labeled_statement "LAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);" statement_identifier : (expression_statement "uVar11 = FUN_00105a13(&local_48);" (assignment_expression "uVar11 = FUN_00105a13(&local_48)" identifier = (call_expression "FUN_00105a13(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) )))) ;)) (goto_statement "goto LAB_00106caf;" goto statement_identifier ;) })) }) (else_clause "else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" else (compound_statement "{\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" { (expression_statement "uVar5 = FUN_00105a13(&local_50);" (assignment_expression "uVar5 = FUN_00105a13(&local_50)" identifier = (call_expression "FUN_00105a13(&local_50)" identifier (argument_list "(&local_50)" ( (pointer_expression "&local_50" & identifier) )))) ;) (if_statement "if (uVar11 != 0) goto LAB_00106ca2;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00106ca2;" goto statement_identifier ;)) (labeled_statement "LAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" statement_identifier : (if_statement "if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" if (parenthesized_expression "(uVar5 != uVar11)" ( (binary_expression "uVar5 != uVar11" identifier != identifier) )) (compound_statement "{\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" { (expression_statement "uVar5 = uVar5 - uVar11;" (assignment_expression "uVar5 = uVar5 - uVar11" identifier = (binary_expression "uVar5 - uVar11" identifier - identifier)) ;) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) }))) }))) (if_statement "if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" if (parenthesized_expression "(bVar3 == 0 && bVar4 == 0)" ( (binary_expression "bVar3 == 0 && bVar4 == 0" (binary_expression "bVar3 == 0" identifier == number_literal) && (binary_expression "bVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }" { (if_statement "if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" if (parenthesized_expression "(local_50 == (byte *)0x0)" ( (binary_expression "local_50 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar3 = 0;\n    }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" else (compound_statement "{\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" { (if_statement "if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }" if (parenthesized_expression "(local_48 != (byte *)0x0)" ( (binary_expression "local_48 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }" { (expression_statement "uVar5 = strcasecmp((char *)local_50,(char *)local_48);" (assignment_expression "uVar5 = strcasecmp((char *)local_50,(char *)local_48)" identifier = (call_expression "strcasecmp((char *)local_50,(char *)local_48)" identifier (argument_list "((char *)local_50,(char *)local_48)" ( (cast_expression "(char *)local_50" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }" { (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" identifier = (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" - (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" ( (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 6)" * (cast_expression "(uint *)(param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) )))) | number_literal)) ;) })) (goto_statement "goto LAB_00106b9c;" goto statement_identifier ;) })) (labeled_statement "LAB_00106d3f:\n      bVar3 = *local_50;" statement_identifier : (expression_statement "bVar3 = *local_50;" (assignment_expression "bVar3 = *local_50" identifier = (pointer_expression "*local_50" * identifier)) ;)) }))) }) (else_clause "else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" else (if_statement "if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" { (if_statement "if (local_50 != (byte *)0x0) goto LAB_00106d3f;" if (parenthesized_expression "(local_50 != (byte *)0x0)" ( (binary_expression "local_50 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00106d3f;" goto statement_identifier ;)) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) })))) (if_statement "if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }" if (parenthesized_expression "((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0))" ( (binary_expression "(bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)" (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(bVar4 = 0, local_48 != (byte *)0x0)" ( (comma_expression "bVar4 = 0, local_48 != (byte *)0x0" (assignment_expression "bVar4 = 0" identifier = number_literal) , (binary_expression "local_48 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    bVar4 = *local_48;\n  }" { (expression_statement "bVar4 = *local_48;" (assignment_expression "bVar4 = *local_48" identifier = (pointer_expression "*local_48" * identifier)) ;) })) (expression_statement "pp_Var8 = __ctype_tolower_loc();" (assignment_expression "pp_Var8 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];" (assignment_expression "uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4]" identifier = (binary_expression "(*pp_Var8)[bVar3] - (*pp_Var8)[bVar4]" (subscript_expression "(*pp_Var8)[bVar3]" (parenthesized_expression "(*pp_Var8)" ( (pointer_expression "*pp_Var8" * identifier) )) [ identifier ]) - (subscript_expression "(*pp_Var8)[bVar4]" (parenthesized_expression "(*pp_Var8)" ( (pointer_expression "*pp_Var8" * identifier) )) [ identifier ]))) ;) (if_statement "if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }" if (parenthesized_expression "((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0))" ( (binary_expression "(uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)" (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)" ( (comma_expression "uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0" (assignment_expression "uVar5 = (uint)bVar4 - (uint)bVar3" identifier = (binary_expression "(uint)bVar4 - (uint)bVar3" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) - (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier))) , (binary_expression "uVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }" { (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" identifier = (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" - (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" ( (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) )))) < (pointer_expression "*(uint *)(param_2 + 6)" * (cast_expression "(uint *)(param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) ))))) )))) | number_literal)) ;) })) (labeled_statement "LAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar5;\n  }" { (return_statement "return uVar5;" return identifier ;) }))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (while_statement while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) | LIT)) ;) })) }))))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) | LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (goto_statement goto statement_identifier ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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 ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) | LIT)) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ]) - (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) | LIT)) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "uint FUN_00106aca(long *param_1,long *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  byte *local_50;\n  byte *local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = (int)param_1[3];\n  iVar2 = (int)param_2[3];\n  lVar9 = param_1[4];\n  lVar6 = param_2[4];\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }\n  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);\n  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);\n  uVar5 = *(uint *)(*param_1 + 0x18);\n  uVar11 = *(uint *)(*param_2 + 0x18) & 8;\n  local_50 = (byte *)FUN_00105984(param_1);\n  local_48 = (byte *)FUN_00105984(param_2);\n  if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }\n  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];\n  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }\n                    \n  __stack_chk_fail();\n}" (type_identifier "uint") (function_declarator "FUN_00106aca(long *param_1,long *param_2)" (identifier "FUN_00106aca") (parameter_list "(long *param_1,long *param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  long lVar6;\n  long lVar7;\n  __int32_t **pp_Var8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  long in_FS_OFFSET;\n  byte *local_50;\n  byte *local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  iVar1 = (int)param_1[3];\n  iVar2 = (int)param_2[3];\n  lVar9 = param_1[4];\n  lVar6 = param_2[4];\n  if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }\n  if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }\n  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);\n  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);\n  uVar5 = *(uint *)(*param_1 + 0x18);\n  uVar11 = *(uint *)(*param_2 + 0x18) & 8;\n  local_50 = (byte *)FUN_00105984(param_1);\n  local_48 = (byte *)FUN_00105984(param_2);\n  if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }\n  if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }\n  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }\n  pp_Var8 = __ctype_tolower_loc();\n  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];\n  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }\nLAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "__int32_t **pp_Var8;" (type_identifier "__int32_t") (pointer_declarator "**pp_Var8" (* "*") (pointer_declarator "*pp_Var8" (* "*") (identifier "pp_Var8"))) (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "byte *local_50;" (type_identifier "byte") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "byte *local_48;" (type_identifier "byte") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "iVar1 = (int)param_1[3];" (assignment_expression "iVar1 = (int)param_1[3]" (identifier "iVar1") (= "=") (cast_expression "(int)param_1[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "iVar2 = (int)param_2[3];" (assignment_expression "iVar2 = (int)param_2[3]" (identifier "iVar2") (= "=") (cast_expression "(int)param_2[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "lVar9 = param_1[4];" (assignment_expression "lVar9 = param_1[4]" (identifier "lVar9") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "lVar6 = param_2[4];" (assignment_expression "lVar6 = param_2[4]" (identifier "lVar6") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (lVar9 != lVar6) {\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }" (if "if") (parenthesized_expression "(lVar9 != lVar6)" (( "(") (binary_expression "lVar9 != lVar6" (identifier "lVar9") (!= "!=") (identifier "lVar6")) () ")")) (compound_statement "{\n    if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }\n    goto LAB_00106b9c;\n  }" ({ "{") (if_statement "if (lVar9 == 0) {\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }\n    else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);\n      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);\n    }" ({ "{") (do_statement "do {\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      } while (lVar6 != 0);" (do "do") (compound_statement "{\n        lVar9 = lVar6;\n        lVar6 = *(long *)(lVar9 + 0x10);\n      }" ({ "{") (expression_statement "lVar9 = lVar6;" (assignment_expression "lVar9 = lVar6" (identifier "lVar9") (= "=") (identifier "lVar6")) (; ";")) (expression_statement "lVar6 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar9 + 0x10)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(lVar9 + 0x10)" (* "*") (cast_expression "(long *)(lVar9 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0x10)" (( "(") (binary_expression "lVar9 + 0x10" (identifier "lVar9") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar6 != 0)" (( "(") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);" (assignment_expression "uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" (identifier "uVar5") (= "=") (call_expression "FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" (identifier "FUN_001059c4") (argument_list "(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff)" (( "(") (identifier "iVar1") (, ",") (pointer_expression "*(undefined4 *)(lVar9 + 0xc)" (* "*") (cast_expression "(undefined4 *)(lVar9 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0xc)" (( "(") (binary_expression "lVar9 + 0xc" (identifier "lVar9") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (number_literal "0xffffffff") () ")")))) (; ";")) (} "}")) (else_clause "else if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" (else "else") (if_statement "if (lVar6 == 0) {\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }\n    else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);\n    }" ({ "{") (do_statement "do {\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      } while (lVar9 != 0);" (do "do") (compound_statement "{\n        lVar6 = lVar9;\n        lVar9 = *(long *)(lVar6 + 0x10);\n      }" ({ "{") (expression_statement "lVar6 = lVar9;" (assignment_expression "lVar6 = lVar9" (identifier "lVar6") (= "=") (identifier "lVar9")) (; ";")) (expression_statement "lVar9 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar6 + 0x10)" (identifier "lVar9") (= "=") (pointer_expression "*(long *)(lVar6 + 0x10)" (* "*") (cast_expression "(long *)(lVar6 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar9 != 0)" (( "(") (binary_expression "lVar9 != 0" (identifier "lVar9") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);" (assignment_expression "uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" (identifier "uVar5") (= "=") (call_expression "FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" (identifier "FUN_001059c4") (argument_list "(*(undefined4 *)(lVar6 + 0xc),iVar2,1)" (( "(") (pointer_expression "*(undefined4 *)(lVar6 + 0xc)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0xc)" (( "(") (binary_expression "lVar6 + 0xc" (identifier "lVar6") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar2") (, ",") (number_literal "1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" (else "else") (compound_statement "{\n      iVar2 = *(int *)(lVar6 + 0x20);\n      iVar1 = *(int *)(lVar9 + 0x20);\n      while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }\n      while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }\n      do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));\n      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));\n      if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }\n    }" ({ "{") (expression_statement "iVar2 = *(int *)(lVar6 + 0x20);" (assignment_expression "iVar2 = *(int *)(lVar6 + 0x20)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(lVar6 + 0x20)" (* "*") (cast_expression "(int *)(lVar6 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(lVar9 + 0x20);" (assignment_expression "iVar1 = *(int *)(lVar9 + 0x20)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(lVar9 + 0x20)" (* "*") (cast_expression "(int *)(lVar9 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0x20)" (( "(") (binary_expression "lVar9 + 0x20" (identifier "lVar9") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (while_statement "while (iVar2 < iVar1) {\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }" (while "while") (parenthesized_expression "(iVar2 < iVar1)" (( "(") (binary_expression "iVar2 < iVar1" (identifier "iVar2") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n        lVar9 = *(long *)(lVar9 + 0x10);\n        iVar1 = *(int *)(lVar9 + 0x20);\n      }" ({ "{") (expression_statement "lVar9 = *(long *)(lVar9 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar9 + 0x10)" (identifier "lVar9") (= "=") (pointer_expression "*(long *)(lVar9 + 0x10)" (* "*") (cast_expression "(long *)(lVar9 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0x10)" (( "(") (binary_expression "lVar9 + 0x10" (identifier "lVar9") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(lVar9 + 0x20);" (assignment_expression "iVar1 = *(int *)(lVar9 + 0x20)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(lVar9 + 0x20)" (* "*") (cast_expression "(int *)(lVar9 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + 0x20)" (( "(") (binary_expression "lVar9 + 0x20" (identifier "lVar9") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (while_statement "while (iVar1 < iVar2) {\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }" (while "while") (parenthesized_expression "(iVar1 < iVar2)" (( "(") (binary_expression "iVar1 < iVar2" (identifier "iVar1") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n        lVar6 = *(long *)(lVar6 + 0x10);\n        iVar2 = *(int *)(lVar6 + 0x20);\n      }" ({ "{") (expression_statement "lVar6 = *(long *)(lVar6 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar6 + 0x10)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(lVar6 + 0x10)" (* "*") (cast_expression "(long *)(lVar6 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(lVar6 + 0x20);" (assignment_expression "iVar2 = *(int *)(lVar6 + 0x20)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(lVar6 + 0x20)" (* "*") (cast_expression "(int *)(lVar6 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (} "}"))) (do_statement "do {\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));" (do "do") (compound_statement "{\n        lVar10 = lVar6;\n        lVar7 = lVar9;\n        lVar9 = *(long *)(lVar7 + 0x10);\n        lVar6 = *(long *)(lVar10 + 0x10);\n      }" ({ "{") (expression_statement "lVar10 = lVar6;" (assignment_expression "lVar10 = lVar6" (identifier "lVar10") (= "=") (identifier "lVar6")) (; ";")) (expression_statement "lVar7 = lVar9;" (assignment_expression "lVar7 = lVar9" (identifier "lVar7") (= "=") (identifier "lVar9")) (; ";")) (expression_statement "lVar9 = *(long *)(lVar7 + 0x10);" (assignment_expression "lVar9 = *(long *)(lVar7 + 0x10)" (identifier "lVar9") (= "=") (pointer_expression "*(long *)(lVar7 + 0x10)" (* "*") (cast_expression "(long *)(lVar7 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x10)" (( "(") (binary_expression "lVar7 + 0x10" (identifier "lVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "lVar6 = *(long *)(lVar10 + 0x10);" (assignment_expression "lVar6 = *(long *)(lVar10 + 0x10)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(lVar10 + 0x10)" (* "*") (cast_expression "(long *)(lVar10 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x10)" (( "(") (binary_expression "lVar10 + 0x10" (identifier "lVar10") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10))" (( "(") (binary_expression "*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10)" (pointer_expression "*(long *)(lVar7 + 0x10)" (* "*") (cast_expression "(long *)(lVar7 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x10)" (( "(") (binary_expression "lVar7 + 0x10" (identifier "lVar7") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (pointer_expression "*(long *)(lVar10 + 0x10)" (* "*") (cast_expression "(long *)(lVar10 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x10)" (( "(") (binary_expression "lVar10 + 0x10" (identifier "lVar10") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (; ";")) (expression_statement "uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));" (assignment_expression "uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" (identifier "uVar5") (= "=") (call_expression "FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" (identifier "FUN_001059c4") (argument_list "(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),\n                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8))" (( "(") (pointer_expression "*(undefined4 *)(lVar7 + 0xc)" (* "*") (cast_expression "(undefined4 *)(lVar7 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0xc)" (( "(") (binary_expression "lVar7 + 0xc" (identifier "lVar7") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(lVar10 + 0xc)" (* "*") (cast_expression "(undefined4 *)(lVar10 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0xc)" (( "(") (binary_expression "lVar10 + 0xc" (identifier "lVar10") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (binary_expression "*(int *)(lVar10 + 8) - *(int *)(lVar7 + 8)" (pointer_expression "*(int *)(lVar10 + 8)" (* "*") (cast_expression "(int *)(lVar10 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 8)" (( "(") (binary_expression "lVar10 + 8" (identifier "lVar10") (+ "+") (number_literal "8")) () ")")))) (- "-") (pointer_expression "*(int *)(lVar7 + 8)" (* "*") (cast_expression "(int *)(lVar7 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 8)" (( "(") (binary_expression "lVar7 + 8" (identifier "lVar7") (+ "+") (number_literal "8")) () ")"))))) () ")")))) (; ";")) (if_statement "if (uVar5 == 0) {\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n      }" ({ "{") (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (identifier "uVar5") (= "=") (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (- "-") (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (( "(") (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" (* "*") (cast_expression "(uint *)(param_1 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (< "<") (pointer_expression "*(uint *)(param_2 + 6)" (* "*") (cast_expression "(uint *)(param_2 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")"))))) () ")")))) (| "|") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))))) (goto_statement "goto LAB_00106b9c;" (goto "goto") (statement_identifier "LAB_00106b9c") (; ";")) (} "}"))) (if_statement "if (iVar1 != iVar2) {\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }" (if "if") (parenthesized_expression "(iVar1 != iVar2)" (( "(") (binary_expression "iVar1 != iVar2" (identifier "iVar1") (!= "!=") (identifier "iVar2")) () ")")) (compound_statement "{\n    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);\n    goto LAB_00106b9c;\n  }" ({ "{") (expression_statement "uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);" (assignment_expression "uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" (identifier "uVar5") (= "=") (call_expression "FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" (identifier "FUN_001059c4") (argument_list "(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1)" (( "(") (identifier "iVar1") (, ",") (identifier "iVar2") (, ",") (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (- "-") (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (( "(") (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" (* "*") (cast_expression "(uint *)(param_1 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (< "<") (pointer_expression "*(uint *)(param_2 + 6)" (* "*") (cast_expression "(uint *)(param_2 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")"))))) () ")")))) (| "|") (number_literal "1")) () ")")))) (; ";")) (goto_statement "goto LAB_00106b9c;" (goto "goto") (statement_identifier "LAB_00106b9c") (; ";")) (} "}"))) (expression_statement "bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);" (assignment_expression "bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" (identifier "bVar3") (= "=") (call_expression "FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" (identifier "FUN_00105bed") (argument_list "(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0)" (( "(") (identifier "param_1") (, ",") (identifier "FUN_00105f60") (, ",") (pointer_expression "*(undefined8 *)(param_1[5] + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1[5] + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[5] + 0x30)" (( "(") (binary_expression "param_1[5] + 0x30" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x30")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);" (assignment_expression "bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" (identifier "bVar4") (= "=") (call_expression "FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" (identifier "FUN_00105bed") (argument_list "(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0)" (( "(") (identifier "param_2") (, ",") (identifier "FUN_00105f60") (, ",") (pointer_expression "*(undefined8 *)(param_2[5] + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_2[5] + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[5] + 0x30)" (( "(") (binary_expression "param_2[5] + 0x30" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x30")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar5 = *(uint *)(*param_1 + 0x18);" (assignment_expression "uVar5 = *(uint *)(*param_1 + 0x18)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(*param_1 + 0x18)" (* "*") (cast_expression "(uint *)(*param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar11 = *(uint *)(*param_2 + 0x18) & 8;" (assignment_expression "uVar11 = *(uint *)(*param_2 + 0x18) & 8" (identifier "uVar11") (= "=") (binary_expression "*(uint *)(*param_2 + 0x18) & 8" (pointer_expression "*(uint *)(*param_2 + 0x18)" (* "*") (cast_expression "(uint *)(*param_2 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 0x18)" (( "(") (binary_expression "*param_2 + 0x18" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x18")) () ")")))) (& "&") (number_literal "8"))) (; ";")) (expression_statement "local_50 = (byte *)FUN_00105984(param_1);" (assignment_expression "local_50 = (byte *)FUN_00105984(param_1)" (identifier "local_50") (= "=") (cast_expression "(byte *)FUN_00105984(param_1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00105984(param_1)" (identifier "FUN_00105984") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (expression_statement "local_48 = (byte *)FUN_00105984(param_2);" (assignment_expression "local_48 = (byte *)FUN_00105984(param_2)" (identifier "local_48") (= "=") (cast_expression "(byte *)FUN_00105984(param_2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00105984(param_2)" (identifier "FUN_00105984") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (if_statement "if ((uVar5 & 8) == 0) {\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }\n  else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" (if "if") (parenthesized_expression "((uVar5 & 8) == 0)" (( "(") (binary_expression "(uVar5 & 8) == 0" (parenthesized_expression "(uVar5 & 8)" (( "(") (binary_expression "uVar5 & 8" (identifier "uVar5") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = 0;\n    if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }\n  }" ({ "{") (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar11 != 0) {\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);\n      goto LAB_00106caf;\n    }" ({ "{") (labeled_statement "LAB_00106ca2:\n      uVar11 = FUN_00105a13(&local_48);" (statement_identifier "LAB_00106ca2") (: ":") (expression_statement "uVar11 = FUN_00105a13(&local_48);" (assignment_expression "uVar11 = FUN_00105a13(&local_48)" (identifier "uVar11") (= "=") (call_expression "FUN_00105a13(&local_48)" (identifier "FUN_00105a13") (argument_list "(&local_48)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";"))) (goto_statement "goto LAB_00106caf;" (goto "goto") (statement_identifier "LAB_00106caf") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" (else "else") (compound_statement "{\n    uVar5 = FUN_00105a13(&local_50);\n    if (uVar11 != 0) goto LAB_00106ca2;\nLAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }\n  }" ({ "{") (expression_statement "uVar5 = FUN_00105a13(&local_50);" (assignment_expression "uVar5 = FUN_00105a13(&local_50)" (identifier "uVar5") (= "=") (call_expression "FUN_00105a13(&local_50)" (identifier "FUN_00105a13") (argument_list "(&local_50)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) () ")")))) (; ";")) (if_statement "if (uVar11 != 0) goto LAB_00106ca2;" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00106ca2;" (goto "goto") (statement_identifier "LAB_00106ca2") (; ";"))) (labeled_statement "LAB_00106caf:\n    if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" (statement_identifier "LAB_00106caf") (: ":") (if_statement "if (uVar5 != uVar11) {\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" (if "if") (parenthesized_expression "(uVar5 != uVar11)" (( "(") (binary_expression "uVar5 != uVar11" (identifier "uVar5") (!= "!=") (identifier "uVar11")) () ")")) (compound_statement "{\n      uVar5 = uVar5 - uVar11;\n      goto LAB_00106b9c;\n    }" ({ "{") (expression_statement "uVar5 = uVar5 - uVar11;" (assignment_expression "uVar5 = uVar5 - uVar11" (identifier "uVar5") (= "=") (binary_expression "uVar5 - uVar11" (identifier "uVar5") (- "-") (identifier "uVar11"))) (; ";")) (goto_statement "goto LAB_00106b9c;" (goto "goto") (statement_identifier "LAB_00106b9c") (; ";")) (} "}")))) (} "}")))) (if_statement "if (bVar3 == 0 && bVar4 == 0) {\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }\n  else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" (if "if") (parenthesized_expression "(bVar3 == 0 && bVar4 == 0)" (( "(") (binary_expression "bVar3 == 0 && bVar4 == 0" (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) (&& "&&") (binary_expression "bVar4 == 0" (identifier "bVar4") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }\n  }" ({ "{") (if_statement "if (local_50 == (byte *)0x0) {\n      bVar3 = 0;\n    }\n    else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" (if "if") (parenthesized_expression "(local_50 == (byte *)0x0)" (( "(") (binary_expression "local_50 == (byte *)0x0" (identifier "local_50") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      bVar3 = 0;\n    }" ({ "{") (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" (identifier "bVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" (else "else") (compound_statement "{\n      if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }\nLAB_00106d3f:\n      bVar3 = *local_50;\n    }" ({ "{") (if_statement "if (local_48 != (byte *)0x0) {\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }" (if "if") (parenthesized_expression "(local_48 != (byte *)0x0)" (( "(") (binary_expression "local_48 != (byte *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        uVar5 = strcasecmp((char *)local_50,(char *)local_48);\n        if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }\n        goto LAB_00106b9c;\n      }" ({ "{") (expression_statement "uVar5 = strcasecmp((char *)local_50,(char *)local_48);" (assignment_expression "uVar5 = strcasecmp((char *)local_50,(char *)local_48)" (identifier "uVar5") (= "=") (call_expression "strcasecmp((char *)local_50,(char *)local_48)" (identifier "strcasecmp") (argument_list "((char *)local_50,(char *)local_48)" (( "(") (cast_expression "(char *)local_50" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_50")) (, ",") (cast_expression "(char *)local_48" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_48")) () ")")))) (; ";")) (if_statement "if (uVar5 == 0) {\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n        }" ({ "{") (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (identifier "uVar5") (= "=") (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (- "-") (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (( "(") (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" (* "*") (cast_expression "(uint *)(param_1 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (< "<") (pointer_expression "*(uint *)(param_2 + 6)" (* "*") (cast_expression "(uint *)(param_2 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")"))))) () ")")))) (| "|") (number_literal "1"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00106b9c;" (goto "goto") (statement_identifier "LAB_00106b9c") (; ";")) (} "}"))) (labeled_statement "LAB_00106d3f:\n      bVar3 = *local_50;" (statement_identifier "LAB_00106d3f") (: ":") (expression_statement "bVar3 = *local_50;" (assignment_expression "bVar3 = *local_50" (identifier "bVar3") (= "=") (pointer_expression "*local_50" (* "*") (identifier "local_50"))) (; ";"))) (} "}")))) (} "}")) (else_clause "else if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" (else "else") (if_statement "if (bVar3 == 0) {\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" (if "if") (parenthesized_expression "(bVar3 == 0)" (( "(") (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (local_50 != (byte *)0x0) goto LAB_00106d3f;\n    bVar3 = 0;\n  }" ({ "{") (if_statement "if (local_50 != (byte *)0x0) goto LAB_00106d3f;" (if "if") (parenthesized_expression "(local_50 != (byte *)0x0)" (( "(") (binary_expression "local_50 != (byte *)0x0" (identifier "local_50") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00106d3f;" (goto "goto") (statement_identifier "LAB_00106d3f") (; ";"))) (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" (identifier "bVar3") (= "=") (number_literal "0")) (; ";")) (} "}"))))) (if_statement "if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {\n    bVar4 = *local_48;\n  }" (if "if") (parenthesized_expression "((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0))" (( "(") (binary_expression "(bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)" (parenthesized_expression "(bVar4 == 0)" (( "(") (binary_expression "bVar4 == 0" (identifier "bVar4") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar4 = 0, local_48 != (byte *)0x0)" (( "(") (comma_expression "bVar4 = 0, local_48 != (byte *)0x0" (assignment_expression "bVar4 = 0" (identifier "bVar4") (= "=") (number_literal "0")) (, ",") (binary_expression "local_48 != (byte *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    bVar4 = *local_48;\n  }" ({ "{") (expression_statement "bVar4 = *local_48;" (assignment_expression "bVar4 = *local_48" (identifier "bVar4") (= "=") (pointer_expression "*local_48" (* "*") (identifier "local_48"))) (; ";")) (} "}"))) (expression_statement "pp_Var8 = __ctype_tolower_loc();" (assignment_expression "pp_Var8 = __ctype_tolower_loc()" (identifier "pp_Var8") (= "=") (call_expression "__ctype_tolower_loc()" (identifier "__ctype_tolower_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];" (assignment_expression "uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4]" (identifier "uVar5") (= "=") (binary_expression "(*pp_Var8)[bVar3] - (*pp_Var8)[bVar4]" (subscript_expression "(*pp_Var8)[bVar3]" (parenthesized_expression "(*pp_Var8)" (( "(") (pointer_expression "*pp_Var8" (* "*") (identifier "pp_Var8")) () ")")) ([ "[") (identifier "bVar3") (] "]")) (- "-") (subscript_expression "(*pp_Var8)[bVar4]" (parenthesized_expression "(*pp_Var8)" (( "(") (pointer_expression "*pp_Var8" (* "*") (identifier "pp_Var8")) () ")")) ([ "[") (identifier "bVar4") (] "]")))) (; ";")) (if_statement "if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }" (if "if") (parenthesized_expression "((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0))" (( "(") (binary_expression "(uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)" (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)" (( "(") (comma_expression "uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0" (assignment_expression "uVar5 = (uint)bVar4 - (uint)bVar3" (identifier "uVar5") (= "=") (binary_expression "(uint)bVar4 - (uint)bVar3" (cast_expression "(uint)bVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar4")) (- "-") (cast_expression "(uint)bVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar3")))) (, ",") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;\n  }" ({ "{") (expression_statement "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;" (assignment_expression "uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (identifier "uVar5") (= "=") (binary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1" (unary_expression "-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (- "-") (call_expression "(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6))" (( "(") (binary_expression "*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)" (pointer_expression "*(uint *)(param_1 + 6)" (* "*") (cast_expression "(uint *)(param_1 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")")))) (< "<") (pointer_expression "*(uint *)(param_2 + 6)" (* "*") (cast_expression "(uint *)(param_2 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")"))))) () ")")))) (| "|") (number_literal "1"))) (; ";")) (} "}"))) (labeled_statement "LAB_00106b9c:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }" (statement_identifier "LAB_00106b9c") (: ":") (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return uVar5;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return uVar5;\n  }" ({ "{") (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}")))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

int function_1(void *entry1_v,void *entry2_v)

{
  int var_6;
  int var_5;
  type_1 var_9;
  type_1 var_18;
  type_1 var_19;
  long var_3;
  long var_7;
  type_2 **pp_Var8;
  long var_2;
  long var_8;
  type_1 var_12;
  long var_1;
  char *var_14;
  char *var_15;
  long var_20;
  
  var_20 = *(long *)(var_1 + 0x28);
  var_6 = *(int *)((long)entry1_v + 0x18);
  var_5 = *(int *)((long)entry2_v + 0x18);
  var_2 = *(long *)((long)entry1_v + 0x20);
  var_3 = *(long *)((long)entry2_v + 0x20);
  if (var_2 != var_3) {
    if (var_2 == 0) {
      do {
        var_2 = var_3;
        var_3 = *(long *)(var_2 + 0x10);
      } while (var_3 != 0);
      var_9 = var_4(var_6,*(int *)(var_2 + 0xc),-1);
    }
    else if (var_3 == 0) {
      do {
        var_3 = var_2;
        var_2 = *(long *)(var_3 + 0x10);
      } while (var_2 != 0);
      var_9 = var_4(*(int *)(var_3 + 0xc),var_5,1);
    }
    else {
      var_5 = *(int *)(var_3 + 0x20);
      var_6 = *(int *)(var_2 + 0x20);
      while (var_5 < var_6) {
        var_2 = *(long *)(var_2 + 0x10);
        var_6 = *(int *)(var_2 + 0x20);
      }
      while (var_6 < var_5) {
        var_3 = *(long *)(var_3 + 0x10);
        var_5 = *(int *)(var_3 + 0x20);
      }
      do {
        var_8 = var_3;
        var_7 = var_2;
        var_2 = *(long *)(var_7 + 0x10);
        var_3 = *(long *)(var_8 + 0x10);
      } while (*(long *)(var_7 + 0x10) != *(long *)(var_8 + 0x10));
      var_9 = var_4(*(int *)(var_7 + 0xc),*(int *)(var_8 + 0xc),
                        *(int *)(var_8 + 8) - *(int *)(var_7 + 8));
      if (var_9 == 0) {
        var_9 = -(type_1)(*(type_1 *)((long)entry1_v + 0x30) < *(type_1 *)((long)entry2_v + 0x30)) | 1;
      }
    }
    goto LAB_00106b9c;
  }
  if (var_6 != var_5) {
    var_9 = var_4(var_6,var_5,
                      -(type_1)(*(type_1 *)((long)entry1_v + 0x30) < *(type_1 *)((long)entry2_v + 0x30)) |
                      1);
    goto LAB_00106b9c;
  }
  var_18 = var_10
                    ((type_3 *)entry1_v,until_short,
                     *(char **)(*(long *)((long)entry1_v + 0x28) + 0x30),(void *)0x0);
  var_19 = var_10
                    ((type_3 *)entry2_v,until_short,
                     *(char **)(*(long *)((long)entry2_v + 0x28) + 0x30),(void *)0x0);
                    /* WARNING: Load size is inaccurate */
  var_9 = *(type_1 *)(*entry1_v + 0x18);
                    /* WARNING: Load size is inaccurate */
  var_12 = *(type_1 *)(*entry2_v + 0x18) & 8;
  var_14 = var_11((type_3 *)entry1_v);
  var_15 = var_11((type_3 *)entry2_v);
  if ((var_9 & 8) == 0) {
    var_9 = 0;
    if (var_12 != 0) {
LAB_00106ca2:
      var_12 = var_13(&var_15);
      goto LAB_00106caf;
    }
  }
  else {
    var_9 = var_13(&var_14);
    if (var_12 != 0) goto LAB_00106ca2;
LAB_00106caf:
    if (var_9 != var_12) {
      var_9 = var_9 - var_12;
      goto LAB_00106b9c;
    }
  }
  if ((char)var_18 == '\0' && (char)var_19 == '\0') {
    if (var_14 == (char *)0x0) {
      var_18 = 0;
    }
    else {
      if (var_15 != (char *)0x0) {
        var_9 = var_16(var_14,var_15);
        if (var_9 == 0) {
          var_9 = -(type_1)(*(type_1 *)((long)entry1_v + 0x30) < *(type_1 *)((long)entry2_v + 0x30)) | 1;
        }
        goto LAB_00106b9c;
      }
LAB_00106d3f:
      var_18 = (type_1)(byte)*var_14;
    }
  }
  else if ((char)var_18 == '\0') {
    if (var_14 != (char *)0x0) goto LAB_00106d3f;
    var_18 = 0;
  }
  if (((char)var_19 == '\0') && (var_19 = 0, var_15 != (char *)0x0)) {
    var_19 = (type_1)(byte)*var_15;
  }
  pp_Var8 = var_17();
  var_9 = (*pp_Var8)[var_18 & 0xff] - (*pp_Var8)[var_19 & 0xff];
  if ((var_9 == 0) && (var_9 = (var_19 & 0xff) - (var_18 & 0xff), var_9 == 0)) {
    var_9 = -(type_1)(*(type_1 *)((long)entry1_v + 0x30) < *(type_1 *)((long)entry2_v + 0x30)) | 1;
  }
LAB_00106b9c:
  if (var_20 == *(long *)(var_1 + 0x28)) {
    return var_9;
  }
                    /* WARNING: Subroutine does not return */
  var_21();
}


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

uint MASKED(long *param_1,long *param_2)

{
  int iVar1;
  int iVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  long lVar6;
  long lVar7;
  __int32_t **pp_Var8;
  long lVar9;
  long lVar10;
  uint uVar11;
  long in_FS_OFFSET;
  byte *local_50;
  byte *local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  iVar1 = (int)param_1[3];
  iVar2 = (int)param_2[3];
  lVar9 = param_1[4];
  lVar6 = param_2[4];
  if (lVar9 != lVar6) {
    if (lVar9 == 0) {
      do {
        lVar9 = lVar6;
        lVar6 = *(long *)(lVar9 + 0x10);
      } while (lVar6 != 0);
      uVar5 = FUN_001059c4(iVar1,*(undefined4 *)(lVar9 + 0xc),0xffffffff);
    }
    else if (lVar6 == 0) {
      do {
        lVar6 = lVar9;
        lVar9 = *(long *)(lVar6 + 0x10);
      } while (lVar9 != 0);
      uVar5 = FUN_001059c4(*(undefined4 *)(lVar6 + 0xc),iVar2,1);
    }
    else {
      iVar2 = *(int *)(lVar6 + 0x20);
      iVar1 = *(int *)(lVar9 + 0x20);
      while (iVar2 < iVar1) {
        lVar9 = *(long *)(lVar9 + 0x10);
        iVar1 = *(int *)(lVar9 + 0x20);
      }
      while (iVar1 < iVar2) {
        lVar6 = *(long *)(lVar6 + 0x10);
        iVar2 = *(int *)(lVar6 + 0x20);
      }
      do {
        lVar10 = lVar6;
        lVar7 = lVar9;
        lVar9 = *(long *)(lVar7 + 0x10);
        lVar6 = *(long *)(lVar10 + 0x10);
      } while (*(long *)(lVar7 + 0x10) != *(long *)(lVar10 + 0x10));
      uVar5 = FUN_001059c4(*(undefined4 *)(lVar7 + 0xc),*(undefined4 *)(lVar10 + 0xc),
                           *(int *)(lVar10 + 8) - *(int *)(lVar7 + 8));
      if (uVar5 == 0) {
        uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;
      }
    }
    goto LAB_00106b9c;
  }
  if (iVar1 != iVar2) {
    uVar5 = FUN_001059c4(iVar1,iVar2,-(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1);
    goto LAB_00106b9c;
  }
  bVar3 = FUN_00105bed(param_1,FUN_00105f60,*(undefined8 *)(param_1[5] + 0x30),0);
  bVar4 = FUN_00105bed(param_2,FUN_00105f60,*(undefined8 *)(param_2[5] + 0x30),0);
  uVar5 = *(uint *)(*param_1 + 0x18);
  uVar11 = *(uint *)(*param_2 + 0x18) & 8;
  local_50 = (byte *)FUN_00105984(param_1);
  local_48 = (byte *)FUN_00105984(param_2);
  if ((uVar5 & 8) == 0) {
    uVar5 = 0;
    if (uVar11 != 0) {
LAB_00106ca2:
      uVar11 = FUN_00105a13(&local_48);
      goto LAB_00106caf;
    }
  }
  else {
    uVar5 = FUN_00105a13(&local_50);
    if (uVar11 != 0) goto LAB_00106ca2;
LAB_00106caf:
    if (uVar5 != uVar11) {
      uVar5 = uVar5 - uVar11;
      goto LAB_00106b9c;
    }
  }
  if (bVar3 == 0 && bVar4 == 0) {
    if (local_50 == (byte *)0x0) {
      bVar3 = 0;
    }
    else {
      if (local_48 != (byte *)0x0) {
        uVar5 = strcasecmp((char *)local_50,(char *)local_48);
        if (uVar5 == 0) {
          uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;
        }
        goto LAB_00106b9c;
      }
LAB_00106d3f:
      bVar3 = *local_50;
    }
  }
  else if (bVar3 == 0) {
    if (local_50 != (byte *)0x0) goto LAB_00106d3f;
    bVar3 = 0;
  }
  if ((bVar4 == 0) && (bVar4 = 0, local_48 != (byte *)0x0)) {
    bVar4 = *local_48;
  }
  pp_Var8 = __ctype_tolower_loc();
  uVar5 = (*pp_Var8)[bVar3] - (*pp_Var8)[bVar4];
  if ((uVar5 == 0) && (uVar5 = (uint)bVar4 - (uint)bVar3, uVar5 == 0)) {
    uVar5 = -(uint)(*(uint *)(param_1 + 6) < *(uint *)(param_2 + 6)) | 1;
  }
LAB_00106b9c:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return uVar5;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

