
int sqlite3Fts3MsrIncrNext
              (Fts3Table *p,Fts3MultiSegReader *pMsr,sqlite3_int64 *piDocid,char **paPoslist,
              int *pnPoslist)

{
  int nSegment;
  int *piVar1;
  int iVar2;
  int iVar3;
  Fts3Table *pTab;
  int iVar4;
  void *pOld;
  int *extraout_ECX;
  int *piVar5;
  Fts3SegReader *pFVar6;
  int nSuspect;
  int unaff_EDI;
  int in_GS_OFFSET;
  undefined8 uVar7;
  char *in_stack_ffffff88;
  char *__src;
  char **in_stack_ffffff8c;
  int *in_stack_ffffff90;
  _func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *local_4c;
  char *pList;
  int nList;
  int local_20;
  
  uVar7 = __x86_get_pc_thunk_di();
  piVar5 = (int *)((ulonglong)uVar7 >> 0x20);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  nSegment = piVar5[2];
  local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5beb7);
  if (*(char *)((int)uVar7 + 0xeb) == '\0') {
    local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37);
  }
  if (nSegment != 0) {
    piVar1 = (int *)*piVar5;
    pFVar6 = (Fts3SegReader *)*piVar1;
    if (pFVar6->pOffsetList != (char *)0x0) {
      pTab = (Fts3Table *)((int)uVar7 + 0xeb);
      do {
        iVar2 = (int)pFVar6->iDocid;
        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);
        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);
        if ((iVar4 == 0) && (1 < nSegment)) {
          pFVar6 = (Fts3SegReader *)piVar1[1];
          if (pFVar6->pOffsetList == (char *)0x0) {
            nSuspect = 1;
          }
          else {
            nSuspect = 1;
            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {
              do {
                nSuspect = nSuspect + 1;
                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);
                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;
                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];
              } while ((pFVar6->pOffsetList != (char *)0x0) &&
                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))
              ;
            }
          }
        }
        else {
          nSuspect = 1;
LAB_0008f1c0:
          if (iVar4 != 0) goto LAB_0008f19e;
        }
        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);
        __src = pList;
        if (0 < nList) {
          if (*(int *)(*piVar1 + 0x38) == 0) {
            if (-1 < piVar5[6]) goto LAB_0008f15b;
          }
          else {
            in_stack_ffffff8c = (char **)(nList + 1);
            pOld = (void *)piVar5[4];
            if (piVar5[5] < (int)in_stack_ffffff8c) {
              piVar5[5] = (int)in_stack_ffffff8c * 2;
              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);
              if (pOld == (void *)0x0) {
                iVar4 = 7;
                goto LAB_0008f19e;
              }
              piVar5[4] = (int)pOld;
            }
            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);
            pList = (char *)piVar5[4];
            in_stack_ffffff88 = __src;
            if (-1 < piVar5[6]) {
LAB_0008f15b:
              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,
                               in_stack_ffffff90);
            }
            if (nList < 1) {
              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;
              break;
            }
          }
          (p->base).pModule = (sqlite3_module *)pList;
          *extraout_ECX = iVar2;
          extraout_ECX[1] = iVar3;
          pMsr->apSegment = (Fts3SegReader **)nList;
          iVar4 = 0;
          goto LAB_0008f19e;
        }
        if (-1 < piVar5[6]) goto LAB_0008f15b;
        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;
LAB_0008f140:
        pFVar6 = (Fts3SegReader *)*piVar1;
      } while( true );
    }
  }
  (p->base).pModule = (sqlite3_module *)0x0;
  iVar4 = 0;
LAB_0008f19e:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar4;
}



int FUN_0008ef40(int *param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  void *__dest;
  int *extraout_ECX;
  int *piVar5;
  int iVar6;
  size_t __n;
  int iVar7;
  int unaff_EDI;
  int in_GS_OFFSET;
  undefined8 uVar8;
  int local_4c;
  void *local_28;
  int local_24;
  int local_20;
  
  uVar8 = FUN_0001af1a();
  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar1 = piVar5[2];
  local_4c = unaff_EDI + -0x5beb7;
  if (*(char *)((int)uVar8 + 0xeb) == '\0') {
    local_4c = unaff_EDI + -0x5bf37;
  }
  if (iVar1 != 0) {
    piVar2 = (int *)*piVar5;
    iVar6 = *piVar2;
    if (*(int *)(iVar6 + 0x50) != 0) {
      do {
        iVar3 = *(int *)(iVar6 + 0x58);
        iVar6 = *(int *)(iVar6 + 0x5c);
        iVar4 = FUN_0008ed50(&local_24);
        if ((iVar4 == 0) && (1 < iVar1)) {
          iVar4 = piVar2[1];
          if ((*(int *)(iVar4 + 0x50) != 0) &&
             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {
            do {
              iVar7 = iVar7 + 1;
              iVar4 = FUN_0008ed50(0);
              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;
              iVar4 = piVar2[iVar7];
            } while ((*(int *)(iVar4 + 0x50) != 0) &&
                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));
          }
        }
        else {
LAB_0008f1c0:
          if (iVar4 != 0) goto LAB_0008f19e;
        }
        FUN_00020420(local_4c);
        if (0 < local_24) {
          if (*(int *)(*piVar2 + 0x38) == 0) {
            if (-1 < piVar5[6]) goto LAB_0008f15b;
          }
          else {
            __n = local_24 + 1;
            __dest = (void *)piVar5[4];
            if (piVar5[5] < (int)__n) {
              piVar5[5] = __n * 2;
              __dest = (void *)FUN_000439a0(__dest,__n * 2);
              if (__dest == (void *)0x0) {
                iVar4 = 7;
                goto LAB_0008f19e;
              }
              piVar5[4] = (int)__dest;
            }
            memcpy(__dest,local_28,__n);
            local_28 = (void *)piVar5[4];
            if (-1 < piVar5[6]) {
LAB_0008f15b:
              FUN_000222d0(&local_24);
            }
            if (local_24 < 1) {
              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;
              break;
            }
          }
          *param_1 = (int)local_28;
          *extraout_ECX = iVar3;
          extraout_ECX[1] = iVar6;
          *param_2 = local_24;
          iVar4 = 0;
          goto LAB_0008f19e;
        }
        if (-1 < piVar5[6]) goto LAB_0008f15b;
        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;
LAB_0008f140:
        iVar6 = *piVar2;
      } while( true );
    }
  }
  *param_1 = 0;
  iVar4 = 0;
LAB_0008f19e:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return iVar4;
}


PUSH EBP
PUSH EDI
CALL 0x0001af1a
ADD EDI,0xbbf8d
PUSH ESI
PUSH EBX
SUB ESP,0x5c
MOV ESI,dword ptr [ESP + 0x70]
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x28],EDI
MOV dword ptr [ESP + 0x34],ESI
MOV ESI,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0x38],ECX
MOV dword ptr [ESP + 0x3c],ESI
MOV ESI,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x4c],ESI
XOR ESI,ESI
MOV ESI,dword ptr [EDX + 0x8]
CMP byte ptr [EAX + 0xeb],0x0
MOV dword ptr [ESP + 0xc],ESI
LEA ESI,[EDI + 0xffee81bc]
MOV dword ptr [ESP + 0x20],ESI
JNZ 0x0008ef9f
LEA EDI,[EDI + 0xffee813c]
MOV dword ptr [ESP + 0x20],EDI
MOV EBX,dword ptr [ESP + 0xc]
TEST EBX,EBX
JZ 0x0008f192
MOV EDI,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [EDI]
MOV EDX,dword ptr [ESI]
MOV ECX,dword ptr [EDX + 0x50]
TEST ECX,ECX
JZ 0x0008f192
CMP dword ptr [ESP + 0xc],0x1
SETG byte ptr [ESP + 0x27]
ADD EAX,0xeb
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESP + 0x44]
MOV dword ptr [ESP + 0x18],EAX
LEA EAX,[ESP + 0x48]
MOV dword ptr [ESP + 0x1c],EAX
LEA ESI,[ESI]
SUB ESP,0xc
MOV EDI,dword ptr [EDX + 0x58]
MOV EBP,dword ptr [EDX + 0x5c]
PUSH dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x0008ed50
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0008f1b3
CMP byte ptr [ESP + 0x27],0x0
JZ 0x0008f1b3
MOV EDX,dword ptr [ESI + 0x4]
MOV EAX,dword ptr [EDX + 0x50]
TEST EAX,EAX
JZ 0x0008f1ca
MOV EAX,dword ptr [EDX + 0x58]
MOV ECX,dword ptr [EDX + 0x5c]
MOV EBX,0x1
XOR EAX,EDI
XOR ECX,EBP
OR ECX,EAX
JZ 0x0008f04e
JMP 0x0008f080
MOV EAX,dword ptr [EDX + 0x58]
MOV ECX,dword ptr [EDX + 0x5c]
XOR EAX,EDI
XOR ECX,EBP
OR ECX,EAX
JNZ 0x0008f080
SUB ESP,0xc
XOR ECX,ECX
ADD EBX,0x1
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x0008ed50
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0008f1c0
CMP dword ptr [ESP + 0xc],EBX
JLE 0x0008f1c0
MOV EDX,dword ptr [ESI + EBX*0x4]
MOV EAX,dword ptr [EDX + 0x50]
TEST EAX,EAX
JNZ 0x0008f040
SUB ESP,0xc
MOV ECX,EBX
PUSH dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EBX]
CALL 0x00020420
MOV EDX,dword ptr [ESP + 0x58]
ADD ESP,0x10
TEST EDX,EDX
JLE 0x0008f178
MOV EAX,dword ptr [ESI]
MOV ECX,dword ptr [EAX + 0x38]
TEST ECX,ECX
JZ 0x0008f150
ADD EDX,0x1
MOV ECX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EBX + 0x10]
MOV dword ptr [ESP + 0x14],EBX
CMP EDX,dword ptr [EBX + 0x14]
JLE 0x0008f101
MOV dword ptr [ESP + 0x2c],EDX
LEA EBX,[EDX + EDX*0x1]
MOV EDX,dword ptr [ESP + 0x14]
SUB ESP,0x8
MOV dword ptr [ESP + 0x38],ECX
MOV dword ptr [EDX + 0x14],EBX
PUSH EBX
PUSH EAX
MOV EBX,dword ptr [ESP + 0x38]
CALL 0x000439a0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0008f1f1
MOV EBX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x2c]
MOV dword ptr [EBX + 0x10],EAX
SUB ESP,0x4
PUSH EDX
PUSH ECX
PUSH EAX
MOV EBX,dword ptr [ESP + 0x38]
CALL 0x000140d0
MOV EBX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EBX + 0x10]
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,dword ptr [EBX + 0x18]
ADD ESP,0x10
TEST EAX,EAX
JNS 0x0008f15b
MOV EDX,dword ptr [ESP + 0x48]
TEST EDX,EDX
JG 0x0008f1d4
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x50]
TEST EAX,EAX
JZ 0x0008f192
MOV EDX,dword ptr [ESI]
JMP 0x0008efe8
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x18]
TEST EAX,EAX
JS 0x0008f1d4
SUB ESP,0xc
MOV EDX,0x1
PUSH dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x28]
CALL 0x000222d0
ADD ESP,0x10
JMP 0x0008f125
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x18]
TEST EAX,EAX
JNS 0x0008f15b
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x50]
TEST EAX,EAX
JNZ 0x0008f140
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [EAX],0x0
XOR EAX,EAX
MOV EDI,dword ptr [ESP + 0x4c]
XOR EDI,dword ptr GS:[0x14]
JNZ 0x0008f1f8
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,0x1
LEA ESI,[ESI]
NOP
TEST EAX,EAX
JZ 0x0008f080
JMP 0x0008f19e
MOV EBX,0x1
JMP 0x0008f080
MOV EAX,dword ptr [ESP + 0x44]
MOV ESI,dword ptr [ESP + 0x34]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [EAX],EDI
MOV dword ptr [EAX + 0x4],EBP
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [EAX],EDX
XOR EAX,EAX
JMP 0x0008f19e
MOV EAX,0x7
JMP 0x0008f19e
CALL 0x000f6410
(translation_unit "int FUN_0008ef40(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  int iVar4;\n  void *__dest;\n  int *extraout_ECX;\n  int *piVar5;\n  int iVar6;\n  size_t __n;\n  int iVar7;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar8;\n  int local_4c;\n  void *local_28;\n  int local_24;\n  int local_20;\n  \n  uVar8 = FUN_0001af1a();\n  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = piVar5[2];\n  local_4c = unaff_EDI + -0x5beb7;\n  if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }\n  if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }\n  *param_1 = 0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return iVar4;\n}\n\n" (function_definition "int FUN_0008ef40(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  int iVar4;\n  void *__dest;\n  int *extraout_ECX;\n  int *piVar5;\n  int iVar6;\n  size_t __n;\n  int iVar7;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar8;\n  int local_4c;\n  void *local_28;\n  int local_24;\n  int local_20;\n  \n  uVar8 = FUN_0001af1a();\n  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = piVar5[2];\n  local_4c = unaff_EDI + -0x5beb7;\n  if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }\n  if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }\n  *param_1 = 0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return iVar4;\n}" primitive_type (function_declarator "FUN_0008ef40(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  int iVar4;\n  void *__dest;\n  int *extraout_ECX;\n  int *piVar5;\n  int iVar6;\n  size_t __n;\n  int iVar7;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar8;\n  int local_4c;\n  void *local_28;\n  int local_24;\n  int local_20;\n  \n  uVar8 = FUN_0001af1a();\n  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = piVar5[2];\n  local_4c = unaff_EDI + -0x5beb7;\n  if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }\n  if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }\n  *param_1 = 0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return iVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "void *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar8 = FUN_0001af1a();" (assignment_expression "uVar8 = FUN_0001af1a()" identifier = (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar5 = (int *)((ulonglong)uVar8 >> 0x20);" (assignment_expression "piVar5 = (int *)((ulonglong)uVar8 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar8 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar8 >> 0x20)" ( (binary_expression "(ulonglong)uVar8 >> 0x20" (cast_expression "(ulonglong)uVar8" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = piVar5[2];" (assignment_expression "iVar1 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_4c = unaff_EDI + -0x5beb7;" (assignment_expression "local_4c = unaff_EDI + -0x5beb7" identifier = (binary_expression "unaff_EDI + -0x5beb7" identifier + number_literal)) ;) (if_statement "if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }" if (parenthesized_expression "(*(char *)((int)uVar8 + 0xeb) == '\0')" ( (binary_expression "*(char *)((int)uVar8 + 0xeb) == '\0'" (pointer_expression "*(char *)((int)uVar8 + 0xeb)" * (cast_expression "(char *)((int)uVar8 + 0xeb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar8 + 0xeb)" ( (binary_expression "(int)uVar8 + 0xeb" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = unaff_EDI + -0x5bf37;\n  }" { (expression_statement "local_4c = unaff_EDI + -0x5bf37;" (assignment_expression "local_4c = unaff_EDI + -0x5bf37" identifier = (binary_expression "unaff_EDI + -0x5bf37" identifier + number_literal)) ;) })) (if_statement "if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }" { (expression_statement "piVar2 = (int *)*piVar5;" (assignment_expression "piVar2 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (expression_statement "iVar6 = *piVar2;" (assignment_expression "iVar6 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }" if (parenthesized_expression "(*(int *)(iVar6 + 0x50) != 0)" ( (binary_expression "*(int *)(iVar6 + 0x50) != 0" (pointer_expression "*(int *)(iVar6 + 0x50)" * (cast_expression "(int *)(iVar6 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x50)" ( (binary_expression "iVar6 + 0x50" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }" { (do_statement "do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );" do (compound_statement "{\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      }" { (expression_statement "iVar3 = *(int *)(iVar6 + 0x58);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x58)" identifier = (pointer_expression "*(int *)(iVar6 + 0x58)" * (cast_expression "(int *)(iVar6 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x58)" ( (binary_expression "iVar6 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar6 + 0x5c);" (assignment_expression "iVar6 = *(int *)(iVar6 + 0x5c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x5c)" * (cast_expression "(int *)(iVar6 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x5c)" ( (binary_expression "iVar6 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = FUN_0008ed50(&local_24);" (assignment_expression "iVar4 = FUN_0008ed50(&local_24)" identifier = (call_expression "FUN_0008ed50(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" if (parenthesized_expression "((iVar4 == 0) && (1 < iVar1))" ( (binary_expression "(iVar4 == 0) && (1 < iVar1)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < iVar1)" ( (binary_expression "1 < iVar1" number_literal < identifier) ))) )) (compound_statement "{\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }" { (expression_statement "iVar4 = piVar2[1];" (assignment_expression "iVar4 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (if_statement "if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }" if (parenthesized_expression "((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3))" ( (binary_expression "(*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" (parenthesized_expression "(*(int *)(iVar4 + 0x50) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x50) != 0" (pointer_expression "*(int *)(iVar4 + 0x50)" * (cast_expression "(int *)(iVar4 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x50)" ( (binary_expression "iVar4 + 0x50" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" ( (comma_expression "iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (assignment_expression "iVar7 = 1" identifier = number_literal) , (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6" (pointer_expression "*(int *)(iVar4 + 0x5c)" * (cast_expression "(int *)(iVar4 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x5c)" ( (binary_expression "iVar4 + 0x5c" identifier + number_literal) )))) == identifier) && (binary_expression "*(int *)(iVar4 + 0x58) == iVar3" (pointer_expression "*(int *)(iVar4 + 0x58)" * (cast_expression "(int *)(iVar4 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x58)" ( (binary_expression "iVar4 + 0x58" identifier + number_literal) )))) == identifier))) ))) )) (compound_statement "{\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }" { (do_statement "do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));" do (compound_statement "{\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_0008ed50(0);" (assignment_expression "iVar4 = FUN_0008ed50(0)" identifier = (call_expression "FUN_0008ed50(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;" if (parenthesized_expression "((iVar4 != 0) || (iVar1 <= iVar7))" ( (binary_expression "(iVar4 != 0) || (iVar1 <= iVar7)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar1 <= iVar7)" ( (binary_expression "iVar1 <= iVar7" identifier <= identifier) ))) )) (goto_statement "goto LAB_0008f1c0;" goto statement_identifier ;)) (expression_statement "iVar4 = piVar2[iVar7];" (assignment_expression "iVar4 = piVar2[iVar7]" identifier = (subscript_expression "piVar2[iVar7]" identifier [ identifier ])) ;) }) while (parenthesized_expression "((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3))" ( (binary_expression "(*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" (parenthesized_expression "(*(int *)(iVar4 + 0x50) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x50) != 0" (pointer_expression "*(int *)(iVar4 + 0x50)" * (cast_expression "(int *)(iVar4 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x50)" ( (binary_expression "iVar4 + 0x50" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" ( (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6" (pointer_expression "*(int *)(iVar4 + 0x5c)" * (cast_expression "(int *)(iVar4 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x5c)" ( (binary_expression "iVar4 + 0x5c" identifier + number_literal) )))) == identifier) && (binary_expression "*(int *)(iVar4 + 0x58) == iVar3" (pointer_expression "*(int *)(iVar4 + 0x58)" * (cast_expression "(int *)(iVar4 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x58)" ( (binary_expression "iVar4 + 0x58" identifier + number_literal) )))) == identifier)) ))) )) ;) })) }) (else_clause "else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" else (compound_statement "{\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" { (labeled_statement "LAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;" statement_identifier : (if_statement "if (iVar4 != 0) goto LAB_0008f19e;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;))) }))) (expression_statement "FUN_00020420(local_4c);" (call_expression "FUN_00020420(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) (if_statement "if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }" if (parenthesized_expression "(0 < local_24)" ( (binary_expression "0 < local_24" number_literal < identifier) )) (compound_statement "{\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }" { (if_statement "if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" if (parenthesized_expression "(*(int *)(*piVar2 + 0x38) == 0)" ( (binary_expression "*(int *)(*piVar2 + 0x38) == 0" (pointer_expression "*(int *)(*piVar2 + 0x38)" * (cast_expression "(int *)(*piVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 0x38)" ( (binary_expression "*piVar2 + 0x38" (pointer_expression "*piVar2" * identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }" { (if_statement "if (-1 < piVar5[6]) goto LAB_0008f15b;" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (goto_statement "goto LAB_0008f15b;" goto statement_identifier ;)) }) (else_clause "else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" else (compound_statement "{\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" { (expression_statement "__n = local_24 + 1;" (assignment_expression "__n = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) (expression_statement "__dest = (void *)piVar5[4];" (assignment_expression "__dest = (void *)piVar5[4]" identifier = (cast_expression "(void *)piVar5[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[4]" identifier [ number_literal ]))) ;) (if_statement "if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }" if (parenthesized_expression "(piVar5[5] < (int)__n)" ( (binary_expression "piVar5[5] < (int)__n" (subscript_expression "piVar5[5]" identifier [ number_literal ]) < (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }" { (expression_statement "piVar5[5] = __n * 2;" (assignment_expression "piVar5[5] = __n * 2" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (binary_expression "__n * 2" identifier * number_literal)) ;) (expression_statement "__dest = (void *)FUN_000439a0(__dest,__n * 2);" (assignment_expression "__dest = (void *)FUN_000439a0(__dest,__n * 2)" identifier = (cast_expression "(void *)FUN_000439a0(__dest,__n * 2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000439a0(__dest,__n * 2)" identifier (argument_list "(__dest,__n * 2)" ( identifier , (binary_expression "__n * 2" identifier * number_literal) ))))) ;) (if_statement "if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }" if (parenthesized_expression "(__dest == (void *)0x0)" ( (binary_expression "__dest == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }" { (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;) })) (expression_statement "piVar5[4] = (int)__dest;" (assignment_expression "piVar5[4] = (int)__dest" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "memcpy(__dest,local_28,__n);" (call_expression "memcpy(__dest,local_28,__n)" identifier (argument_list "(__dest,local_28,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_28 = (void *)piVar5[4];" (assignment_expression "local_28 = (void *)piVar5[4]" identifier = (cast_expression "(void *)piVar5[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[4]" identifier [ number_literal ]))) ;) (if_statement "if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }" { (labeled_statement "LAB_0008f15b:\n              FUN_000222d0(&local_24);" statement_identifier : (expression_statement "FUN_000222d0(&local_24);" (call_expression "FUN_000222d0(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) ))) ;)) })) (if_statement "if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }" if (parenthesized_expression "(local_24 < 1)" ( (binary_expression "local_24 < 1" identifier < number_literal) )) (compound_statement "{\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }" { (if_statement "if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;" if (parenthesized_expression "(*(int *)(*(int *)*piVar5 + 0x50) != 0)" ( (binary_expression "*(int *)(*(int *)*piVar5 + 0x50) != 0" (pointer_expression "*(int *)(*(int *)*piVar5 + 0x50)" * (cast_expression "(int *)(*(int *)*piVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar5 + 0x50)" ( (binary_expression "*(int *)*piVar5 + 0x50" (pointer_expression "*(int *)*piVar5" * (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0008f140;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }))) (expression_statement "*param_1 = (int)local_28;" (assignment_expression "*param_1 = (int)local_28" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*extraout_ECX = iVar3;" (assignment_expression "*extraout_ECX = iVar3" (pointer_expression "*extraout_ECX" * identifier) = identifier) ;) (expression_statement "extraout_ECX[1] = iVar6;" (assignment_expression "extraout_ECX[1] = iVar6" (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_2 = local_24;" (assignment_expression "*param_2 = local_24" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;) })) (if_statement "if (-1 < piVar5[6]) goto LAB_0008f15b;" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (goto_statement "goto LAB_0008f15b;" goto statement_identifier ;)) (if_statement "if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;" if (parenthesized_expression "(*(int *)(*(int *)*piVar5 + 0x50) == 0)" ( (binary_expression "*(int *)(*(int *)*piVar5 + 0x50) == 0" (pointer_expression "*(int *)(*(int *)*piVar5 + 0x50)" * (cast_expression "(int *)(*(int *)*piVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar5 + 0x50)" ( (binary_expression "*(int *)*piVar5 + 0x50" (pointer_expression "*(int *)*piVar5" * (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) + number_literal) )))) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0008f140:\n        iVar6 = *piVar2;" statement_identifier : (expression_statement "iVar6 = *piVar2;" (assignment_expression "iVar6 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" { comment (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "int sqlite3Fts3MsrIncrNext\n              (Fts3Table *p,Fts3MultiSegReader *pMsr,sqlite3_int64 *piDocid,char **paPoslist,\n              int *pnPoslist)\n\n{\n  int nSegment;\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  Fts3Table *pTab;\n  int iVar4;\n  void *pOld;\n  int *extraout_ECX;\n  int *piVar5;\n  Fts3SegReader *pFVar6;\n  int nSuspect;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar7;\n  char *in_stack_ffffff88;\n  char *__src;\n  char **in_stack_ffffff8c;\n  int *in_stack_ffffff90;\n  _func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *local_4c;\n  char *pList;\n  int nList;\n  int local_20;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  piVar5 = (int *)((ulonglong)uVar7 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  nSegment = piVar5[2];\n  local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5beb7);\n  if (*(char *)((int)uVar7 + 0xeb) == '\0') {\n    local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37);\n  }\n  if (nSegment != 0) {\n    piVar1 = (int *)*piVar5;\n    pFVar6 = (Fts3SegReader *)*piVar1;\n    if (pFVar6->pOffsetList != (char *)0x0) {\n      pTab = (Fts3Table *)((int)uVar7 + 0xeb);\n      do {\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      } while( true );\n    }\n  }\n  (p->base).pModule = (sqlite3_module *)0x0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}\n\n" (function_definition "int sqlite3Fts3MsrIncrNext\n              (Fts3Table *p,Fts3MultiSegReader *pMsr,sqlite3_int64 *piDocid,char **paPoslist,\n              int *pnPoslist)\n\n{\n  int nSegment;\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  Fts3Table *pTab;\n  int iVar4;\n  void *pOld;\n  int *extraout_ECX;\n  int *piVar5;\n  Fts3SegReader *pFVar6;\n  int nSuspect;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar7;\n  char *in_stack_ffffff88;\n  char *__src;\n  char **in_stack_ffffff8c;\n  int *in_stack_ffffff90;\n  _func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *local_4c;\n  char *pList;\n  int nList;\n  int local_20;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  piVar5 = (int *)((ulonglong)uVar7 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  nSegment = piVar5[2];\n  local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5beb7);\n  if (*(char *)((int)uVar7 + 0xeb) == '\0') {\n    local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37);\n  }\n  if (nSegment != 0) {\n    piVar1 = (int *)*piVar5;\n    pFVar6 = (Fts3SegReader *)*piVar1;\n    if (pFVar6->pOffsetList != (char *)0x0) {\n      pTab = (Fts3Table *)((int)uVar7 + 0xeb);\n      do {\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      } while( true );\n    }\n  }\n  (p->base).pModule = (sqlite3_module *)0x0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}" primitive_type (function_declarator "sqlite3Fts3MsrIncrNext\n              (Fts3Table *p,Fts3MultiSegReader *pMsr,sqlite3_int64 *piDocid,char **paPoslist,\n              int *pnPoslist)" identifier (parameter_list "(Fts3Table *p,Fts3MultiSegReader *pMsr,sqlite3_int64 *piDocid,char **paPoslist,\n              int *pnPoslist)" ( (parameter_declaration "Fts3Table *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "Fts3MultiSegReader *pMsr" type_identifier (pointer_declarator "*pMsr" * identifier)) , (parameter_declaration "sqlite3_int64 *piDocid" type_identifier (pointer_declarator "*piDocid" * identifier)) , (parameter_declaration "char **paPoslist" primitive_type (pointer_declarator "**paPoslist" * (pointer_declarator "*paPoslist" * identifier))) , (parameter_declaration "int *pnPoslist" primitive_type (pointer_declarator "*pnPoslist" * identifier)) ))) (compound_statement "{\n  int nSegment;\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  Fts3Table *pTab;\n  int iVar4;\n  void *pOld;\n  int *extraout_ECX;\n  int *piVar5;\n  Fts3SegReader *pFVar6;\n  int nSuspect;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar7;\n  char *in_stack_ffffff88;\n  char *__src;\n  char **in_stack_ffffff8c;\n  int *in_stack_ffffff90;\n  _func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *local_4c;\n  char *pList;\n  int nList;\n  int local_20;\n  \n  uVar7 = __x86_get_pc_thunk_di();\n  piVar5 = (int *)((ulonglong)uVar7 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  nSegment = piVar5[2];\n  local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5beb7);\n  if (*(char *)((int)uVar7 + 0xeb) == '\0') {\n    local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37);\n  }\n  if (nSegment != 0) {\n    piVar1 = (int *)*piVar5;\n    pFVar6 = (Fts3SegReader *)*piVar1;\n    if (pFVar6->pOffsetList != (char *)0x0) {\n      pTab = (Fts3Table *)((int)uVar7 + 0xeb);\n      do {\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      } while( true );\n    }\n  }\n  (p->base).pModule = (sqlite3_module *)0x0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}" { (declaration "int nSegment;" primitive_type identifier ;) (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Fts3Table *pTab;" type_identifier (pointer_declarator "*pTab" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "void *pOld;" primitive_type (pointer_declarator "*pOld" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "Fts3SegReader *pFVar6;" type_identifier (pointer_declarator "*pFVar6" * identifier) ;) (declaration "int nSuspect;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "char *in_stack_ffffff88;" primitive_type (pointer_declarator "*in_stack_ffffff88" * identifier) ;) (declaration "char *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "char **in_stack_ffffff8c;" primitive_type (pointer_declarator "**in_stack_ffffff8c" * (pointer_declarator "*in_stack_ffffff8c" * identifier)) ;) (declaration "int *in_stack_ffffff90;" primitive_type (pointer_declarator "*in_stack_ffffff90" * identifier) ;) (declaration "_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "char *pList;" primitive_type (pointer_declarator "*pList" * identifier) ;) (declaration "int nList;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar7 = __x86_get_pc_thunk_di();" (assignment_expression "uVar7 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar5 = (int *)((ulonglong)uVar7 >> 0x20);" (assignment_expression "piVar5 = (int *)((ulonglong)uVar7 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar7 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "nSegment = piVar5[2];" (assignment_expression "nSegment = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5beb7);" (assignment_expression "local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5beb7)" identifier = (cast_expression "(_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5beb7)" ( (type_descriptor "_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x5beb7)" ( (binary_expression "unaff_EDI + -0x5beb7" identifier + number_literal) )))) ;) (if_statement "if (*(char *)((int)uVar7 + 0xeb) == '\0') {\n    local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37);\n  }" if (parenthesized_expression "(*(char *)((int)uVar7 + 0xeb) == '\0')" ( (binary_expression "*(char *)((int)uVar7 + 0xeb) == '\0'" (pointer_expression "*(char *)((int)uVar7 + 0xeb)" * (cast_expression "(char *)((int)uVar7 + 0xeb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar7 + 0xeb)" ( (binary_expression "(int)uVar7 + 0xeb" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37);\n  }" { (expression_statement "local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37);" (assignment_expression "local_4c = (_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37)" identifier = (cast_expression "(_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *)(unaff_EDI + -0x5bf37)" ( (type_descriptor "_func_int_Fts3SegReader_ptr_Fts3SegReader_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x5bf37)" ( (binary_expression "unaff_EDI + -0x5bf37" identifier + number_literal) )))) ;) })) (if_statement "if (nSegment != 0) {\n    piVar1 = (int *)*piVar5;\n    pFVar6 = (Fts3SegReader *)*piVar1;\n    if (pFVar6->pOffsetList != (char *)0x0) {\n      pTab = (Fts3Table *)((int)uVar7 + 0xeb);\n      do {\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      } while( true );\n    }\n  }" if (parenthesized_expression "(nSegment != 0)" ( (binary_expression "nSegment != 0" identifier != number_literal) )) (compound_statement "{\n    piVar1 = (int *)*piVar5;\n    pFVar6 = (Fts3SegReader *)*piVar1;\n    if (pFVar6->pOffsetList != (char *)0x0) {\n      pTab = (Fts3Table *)((int)uVar7 + 0xeb);\n      do {\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      } while( true );\n    }\n  }" { (expression_statement "piVar1 = (int *)*piVar5;" (assignment_expression "piVar1 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (expression_statement "pFVar6 = (Fts3SegReader *)*piVar1;" (assignment_expression "pFVar6 = (Fts3SegReader *)*piVar1" identifier = (cast_expression "(Fts3SegReader *)*piVar1" ( (type_descriptor "Fts3SegReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) ;) (if_statement "if (pFVar6->pOffsetList != (char *)0x0) {\n      pTab = (Fts3Table *)((int)uVar7 + 0xeb);\n      do {\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      } while( true );\n    }" if (parenthesized_expression "(pFVar6->pOffsetList != (char *)0x0)" ( (binary_expression "pFVar6->pOffsetList != (char *)0x0" (field_expression "pFVar6->pOffsetList" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pTab = (Fts3Table *)((int)uVar7 + 0xeb);\n      do {\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      } while( true );\n    }" { (expression_statement "pTab = (Fts3Table *)((int)uVar7 + 0xeb);" (assignment_expression "pTab = (Fts3Table *)((int)uVar7 + 0xeb)" identifier = (cast_expression "(Fts3Table *)((int)uVar7 + 0xeb)" ( (type_descriptor "Fts3Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar7 + 0xeb)" ( (binary_expression "(int)uVar7 + 0xeb" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (do_statement "do {\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      } while( true );" do (compound_statement "{\n        iVar2 = (int)pFVar6->iDocid;\n        iVar3 = *(int *)((int)&pFVar6->iDocid + 4);\n        iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);\n        if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);\n        __src = pList;\n        if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;\n      }" { (expression_statement "iVar2 = (int)pFVar6->iDocid;" (assignment_expression "iVar2 = (int)pFVar6->iDocid" identifier = (cast_expression "(int)pFVar6->iDocid" ( (type_descriptor "int" primitive_type) ) (field_expression "pFVar6->iDocid" identifier -> field_identifier))) ;) (expression_statement "iVar3 = *(int *)((int)&pFVar6->iDocid + 4);" (assignment_expression "iVar3 = *(int *)((int)&pFVar6->iDocid + 4)" identifier = (pointer_expression "*(int *)((int)&pFVar6->iDocid + 4)" * (cast_expression "(int *)((int)&pFVar6->iDocid + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar6->iDocid + 4)" ( (binary_expression "(int)&pFVar6->iDocid + 4" (cast_expression "(int)&pFVar6->iDocid" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar6->iDocid" & (field_expression "pFVar6->iDocid" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList);" (assignment_expression "iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList)" identifier = (call_expression "fts3SegReaderNextDocid(pTab,pFVar6,&pList,&nList)" identifier (argument_list "(pTab,pFVar6,&pList,&nList)" ( identifier , identifier , (pointer_expression "&pList" & identifier) , (pointer_expression "&nList" & identifier) )))) ;) (if_statement "if ((iVar4 == 0) && (1 < nSegment)) {\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }\n        else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" if (parenthesized_expression "((iVar4 == 0) && (1 < nSegment))" ( (binary_expression "(iVar4 == 0) && (1 < nSegment)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < nSegment)" ( (binary_expression "1 < nSegment" number_literal < identifier) ))) )) (compound_statement "{\n          pFVar6 = (Fts3SegReader *)piVar1[1];\n          if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }\n        }" { (expression_statement "pFVar6 = (Fts3SegReader *)piVar1[1];" (assignment_expression "pFVar6 = (Fts3SegReader *)piVar1[1]" identifier = (cast_expression "(Fts3SegReader *)piVar1[1]" ( (type_descriptor "Fts3SegReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[1]" identifier [ number_literal ]))) ;) (if_statement "if (pFVar6->pOffsetList == (char *)0x0) {\n            nSuspect = 1;\n          }\n          else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }" if (parenthesized_expression "(pFVar6->pOffsetList == (char *)0x0)" ( (binary_expression "pFVar6->pOffsetList == (char *)0x0" (field_expression "pFVar6->pOffsetList" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            nSuspect = 1;\n          }" { (expression_statement "nSuspect = 1;" (assignment_expression "nSuspect = 1" identifier = number_literal) ;) }) (else_clause "else {\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }" else (compound_statement "{\n            nSuspect = 1;\n            if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }\n          }" { (expression_statement "nSuspect = 1;" (assignment_expression "nSuspect = 1" identifier = number_literal) ;) (if_statement "if (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2) {\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }" if (parenthesized_expression "(*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2)" ( (binary_expression "*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2" (binary_expression "*(int *)((int)&pFVar6->iDocid + 4) == iVar3" (pointer_expression "*(int *)((int)&pFVar6->iDocid + 4)" * (cast_expression "(int *)((int)&pFVar6->iDocid + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar6->iDocid + 4)" ( (binary_expression "(int)&pFVar6->iDocid + 4" (cast_expression "(int)&pFVar6->iDocid" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar6->iDocid" & (field_expression "pFVar6->iDocid" identifier -> field_identifier))) + number_literal) )))) == identifier) && (binary_expression "(int)pFVar6->iDocid == iVar2" (cast_expression "(int)pFVar6->iDocid" ( (type_descriptor "int" primitive_type) ) (field_expression "pFVar6->iDocid" identifier -> field_identifier)) == identifier)) )) (compound_statement "{\n              do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;\n            }" { (do_statement "do {\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              } while ((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))\n              ;" do (compound_statement "{\n                nSuspect = nSuspect + 1;\n                iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);\n                if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;\n                pFVar6 = (Fts3SegReader *)piVar1[nSuspect];\n              }" { (expression_statement "nSuspect = nSuspect + 1;" (assignment_expression "nSuspect = nSuspect + 1" identifier = (binary_expression "nSuspect + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0);" (assignment_expression "iVar4 = fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0)" identifier = (call_expression "fts3SegReaderNextDocid(pTab,pFVar6,(char **)0x0,(int *)0x0)" identifier (argument_list "(pTab,pFVar6,(char **)0x0,(int *)0x0)" ( identifier , identifier , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if ((iVar4 != 0) || (nSegment <= nSuspect)) goto LAB_0008f1c0;" if (parenthesized_expression "((iVar4 != 0) || (nSegment <= nSuspect))" ( (binary_expression "(iVar4 != 0) || (nSegment <= nSuspect)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) || (parenthesized_expression "(nSegment <= nSuspect)" ( (binary_expression "nSegment <= nSuspect" identifier <= identifier) ))) )) (goto_statement "goto LAB_0008f1c0;" goto statement_identifier ;)) (expression_statement "pFVar6 = (Fts3SegReader *)piVar1[nSuspect];" (assignment_expression "pFVar6 = (Fts3SegReader *)piVar1[nSuspect]" identifier = (cast_expression "(Fts3SegReader *)piVar1[nSuspect]" ( (type_descriptor "Fts3SegReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[nSuspect]" identifier [ identifier ]))) ;) }) while (parenthesized_expression "((pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2))" ( (binary_expression "(pFVar6->pOffsetList != (char *)0x0) &&\n                      (*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2)" (parenthesized_expression "(pFVar6->pOffsetList != (char *)0x0)" ( (binary_expression "pFVar6->pOffsetList != (char *)0x0" (field_expression "pFVar6->pOffsetList" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2)" ( (binary_expression "*(int *)((int)&pFVar6->iDocid + 4) == iVar3 && (int)pFVar6->iDocid == iVar2" (binary_expression "*(int *)((int)&pFVar6->iDocid + 4) == iVar3" (pointer_expression "*(int *)((int)&pFVar6->iDocid + 4)" * (cast_expression "(int *)((int)&pFVar6->iDocid + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar6->iDocid + 4)" ( (binary_expression "(int)&pFVar6->iDocid + 4" (cast_expression "(int)&pFVar6->iDocid" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar6->iDocid" & (field_expression "pFVar6->iDocid" identifier -> field_identifier))) + number_literal) )))) == identifier) && (binary_expression "(int)pFVar6->iDocid == iVar2" (cast_expression "(int)pFVar6->iDocid" ( (type_descriptor "int" primitive_type) ) (field_expression "pFVar6->iDocid" identifier -> field_identifier)) == identifier)) ))) )) ;) })) }))) }) (else_clause "else {\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" else (compound_statement "{\n          nSuspect = 1;\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" { (expression_statement "nSuspect = 1;" (assignment_expression "nSuspect = 1" identifier = number_literal) ;) (labeled_statement "LAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;" statement_identifier : (if_statement "if (iVar4 != 0) goto LAB_0008f19e;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;))) }))) (expression_statement "fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c);" (call_expression "fts3SegReaderSort((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c)" identifier (argument_list "((Fts3SegReader **)*piVar5,nSegment,nSuspect,local_4c)" ( (cast_expression "(Fts3SegReader **)*piVar5" ( (type_descriptor "Fts3SegReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar5" * identifier)) , identifier , identifier , identifier ))) ;) (expression_statement "__src = pList;" (assignment_expression "__src = pList" identifier = identifier) ;) (if_statement "if (0 < nList) {\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }" if (parenthesized_expression "(0 < nList)" ( (binary_expression "0 < nList" number_literal < identifier) )) (compound_statement "{\n          if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          (p->base).pModule = (sqlite3_module *)pList;\n          *extraout_ECX = iVar2;\n          extraout_ECX[1] = iVar3;\n          pMsr->apSegment = (Fts3SegReader **)nList;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }" { (if_statement "if (*(int *)(*piVar1 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" if (parenthesized_expression "(*(int *)(*piVar1 + 0x38) == 0)" ( (binary_expression "*(int *)(*piVar1 + 0x38) == 0" (pointer_expression "*(int *)(*piVar1 + 0x38)" * (cast_expression "(int *)(*piVar1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar1 + 0x38)" ( (binary_expression "*piVar1 + 0x38" (pointer_expression "*piVar1" * identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }" { (if_statement "if (-1 < piVar5[6]) goto LAB_0008f15b;" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (goto_statement "goto LAB_0008f15b;" goto statement_identifier ;)) }) (else_clause "else {\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" else (compound_statement "{\n            in_stack_ffffff8c = (char **)(nList + 1);\n            pOld = (void *)piVar5[4];\n            if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }\n            memcpy(pOld,__src,(size_t)in_stack_ffffff8c);\n            pList = (char *)piVar5[4];\n            in_stack_ffffff88 = __src;\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }\n            if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" { (expression_statement "in_stack_ffffff8c = (char **)(nList + 1);" (assignment_expression "in_stack_ffffff8c = (char **)(nList + 1)" identifier = (cast_expression "(char **)(nList + 1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(nList + 1)" ( (binary_expression "nList + 1" identifier + number_literal) )))) ;) (expression_statement "pOld = (void *)piVar5[4];" (assignment_expression "pOld = (void *)piVar5[4]" identifier = (cast_expression "(void *)piVar5[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[4]" identifier [ number_literal ]))) ;) (if_statement "if (piVar5[5] < (int)in_stack_ffffff8c) {\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }" if (parenthesized_expression "(piVar5[5] < (int)in_stack_ffffff8c)" ( (binary_expression "piVar5[5] < (int)in_stack_ffffff8c" (subscript_expression "piVar5[5]" identifier [ number_literal ]) < (cast_expression "(int)in_stack_ffffff8c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              piVar5[5] = (int)in_stack_ffffff8c * 2;\n              pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);\n              if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)pOld;\n            }" { (expression_statement "piVar5[5] = (int)in_stack_ffffff8c * 2;" (assignment_expression "piVar5[5] = (int)in_stack_ffffff8c * 2" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (binary_expression "(int)in_stack_ffffff8c * 2" (cast_expression "(int)in_stack_ffffff8c" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2);" (assignment_expression "pOld = sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2)" identifier = (call_expression "sqlite3_realloc(pOld,(int)in_stack_ffffff8c * 2)" identifier (argument_list "(pOld,(int)in_stack_ffffff8c * 2)" ( identifier , (binary_expression "(int)in_stack_ffffff8c * 2" (cast_expression "(int)in_stack_ffffff8c" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if (pOld == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }" if (parenthesized_expression "(pOld == (void *)0x0)" ( (binary_expression "pOld == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }" { (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;) })) (expression_statement "piVar5[4] = (int)pOld;" (assignment_expression "piVar5[4] = (int)pOld" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = (cast_expression "(int)pOld" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "memcpy(pOld,__src,(size_t)in_stack_ffffff8c);" (call_expression "memcpy(pOld,__src,(size_t)in_stack_ffffff8c)" identifier (argument_list "(pOld,__src,(size_t)in_stack_ffffff8c)" ( identifier , identifier , (cast_expression "(size_t)in_stack_ffffff8c" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "pList = (char *)piVar5[4];" (assignment_expression "pList = (char *)piVar5[4]" identifier = (cast_expression "(char *)piVar5[4]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[4]" identifier [ number_literal ]))) ;) (expression_statement "in_stack_ffffff88 = __src;" (assignment_expression "in_stack_ffffff88 = __src" identifier = identifier) ;) (if_statement "if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);\n            }" { (labeled_statement "LAB_0008f15b:\n              fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);" statement_identifier : (expression_statement "fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90);" (call_expression "fts3ColumnFilter((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90)" identifier (argument_list "((int)&nList,(int)in_stack_ffffff88,in_stack_ffffff8c,\n                               in_stack_ffffff90)" ( (cast_expression "(int)&nList" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&nList" & identifier)) , (cast_expression "(int)in_stack_ffffff88" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;)) })) (if_statement "if (nList < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }" if (parenthesized_expression "(nList < 1)" ( (binary_expression "nList < 1" identifier < number_literal) )) (compound_statement "{\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }" { (if_statement "if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;" if (parenthesized_expression "(*(int *)(*(int *)*piVar5 + 0x50) != 0)" ( (binary_expression "*(int *)(*(int *)*piVar5 + 0x50) != 0" (pointer_expression "*(int *)(*(int *)*piVar5 + 0x50)" * (cast_expression "(int *)(*(int *)*piVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar5 + 0x50)" ( (binary_expression "*(int *)*piVar5 + 0x50" (pointer_expression "*(int *)*piVar5" * (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0008f140;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }))) (expression_statement "(p->base).pModule = (sqlite3_module *)pList;" (assignment_expression "(p->base).pModule = (sqlite3_module *)pList" (field_expression "(p->base).pModule" (parenthesized_expression "(p->base)" ( (field_expression "p->base" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(sqlite3_module *)pList" ( (type_descriptor "sqlite3_module *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*extraout_ECX = iVar2;" (assignment_expression "*extraout_ECX = iVar2" (pointer_expression "*extraout_ECX" * identifier) = identifier) ;) (expression_statement "extraout_ECX[1] = iVar3;" (assignment_expression "extraout_ECX[1] = iVar3" (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pMsr->apSegment = (Fts3SegReader **)nList;" (assignment_expression "pMsr->apSegment = (Fts3SegReader **)nList" (field_expression "pMsr->apSegment" identifier -> field_identifier) = (cast_expression "(Fts3SegReader **)nList" ( (type_descriptor "Fts3SegReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;) })) (if_statement "if (-1 < piVar5[6]) goto LAB_0008f15b;" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (goto_statement "goto LAB_0008f15b;" goto statement_identifier ;)) (if_statement "if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;" if (parenthesized_expression "(*(int *)(*(int *)*piVar5 + 0x50) == 0)" ( (binary_expression "*(int *)(*(int *)*piVar5 + 0x50) == 0" (pointer_expression "*(int *)(*(int *)*piVar5 + 0x50)" * (cast_expression "(int *)(*(int *)*piVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar5 + 0x50)" ( (binary_expression "*(int *)*piVar5 + 0x50" (pointer_expression "*(int *)*piVar5" * (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) + number_literal) )))) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0008f140:\n        pFVar6 = (Fts3SegReader *)*piVar1;" statement_identifier : (expression_statement "pFVar6 = (Fts3SegReader *)*piVar1;" (assignment_expression "pFVar6 = (Fts3SegReader *)*piVar1" identifier = (cast_expression "(Fts3SegReader *)*piVar1" ( (type_descriptor "Fts3SegReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "(p->base).pModule = (sqlite3_module *)0x0;" (assignment_expression "(p->base).pModule = (sqlite3_module *)0x0" (field_expression "(p->base).pModule" (parenthesized_expression "(p->base)" ( (field_expression "p->base" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(sqlite3_module *)0x0" ( (type_descriptor "sqlite3_module *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "int FUN_0008ef40(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  int iVar4;\n  void *__dest;\n  int *extraout_ECX;\n  int *piVar5;\n  int iVar6;\n  size_t __n;\n  int iVar7;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar8;\n  int local_4c;\n  void *local_28;\n  int local_24;\n  int local_20;\n  \n  uVar8 = FUN_0001af1a();\n  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = piVar5[2];\n  local_4c = unaff_EDI + -0x5beb7;\n  if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }\n  if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }\n  *param_1 = 0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar4;\n}\n\n" (function_definition "int FUN_0008ef40(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  int iVar4;\n  void *__dest;\n  int *extraout_ECX;\n  int *piVar5;\n  int iVar6;\n  size_t __n;\n  int iVar7;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar8;\n  int local_4c;\n  void *local_28;\n  int local_24;\n  int local_20;\n  \n  uVar8 = FUN_0001af1a();\n  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = piVar5[2];\n  local_4c = unaff_EDI + -0x5beb7;\n  if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }\n  if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }\n  *param_1 = 0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar4;\n}" primitive_type (function_declarator "FUN_0008ef40(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  int iVar4;\n  void *__dest;\n  int *extraout_ECX;\n  int *piVar5;\n  int iVar6;\n  size_t __n;\n  int iVar7;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar8;\n  int local_4c;\n  void *local_28;\n  int local_24;\n  int local_20;\n  \n  uVar8 = FUN_0001af1a();\n  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = piVar5[2];\n  local_4c = unaff_EDI + -0x5beb7;\n  if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }\n  if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }\n  *param_1 = 0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "void *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar8 = FUN_0001af1a();" (assignment_expression "uVar8 = FUN_0001af1a()" identifier = (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar5 = (int *)((ulonglong)uVar8 >> 0x20);" (assignment_expression "piVar5 = (int *)((ulonglong)uVar8 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar8 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar8 >> 0x20)" ( (binary_expression "(ulonglong)uVar8 >> 0x20" (cast_expression "(ulonglong)uVar8" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = piVar5[2];" (assignment_expression "iVar1 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_4c = unaff_EDI + -0x5beb7;" (assignment_expression "local_4c = unaff_EDI + -0x5beb7" identifier = (binary_expression "unaff_EDI + -0x5beb7" identifier + number_literal)) ;) (if_statement "if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }" if (parenthesized_expression "(*(char *)((int)uVar8 + 0xeb) == '\0')" ( (binary_expression "*(char *)((int)uVar8 + 0xeb) == '\0'" (pointer_expression "*(char *)((int)uVar8 + 0xeb)" * (cast_expression "(char *)((int)uVar8 + 0xeb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar8 + 0xeb)" ( (binary_expression "(int)uVar8 + 0xeb" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_4c = unaff_EDI + -0x5bf37;\n  }" { (expression_statement "local_4c = unaff_EDI + -0x5bf37;" (assignment_expression "local_4c = unaff_EDI + -0x5bf37" identifier = (binary_expression "unaff_EDI + -0x5bf37" identifier + number_literal)) ;) })) (if_statement "if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }" { (expression_statement "piVar2 = (int *)*piVar5;" (assignment_expression "piVar2 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (expression_statement "iVar6 = *piVar2;" (assignment_expression "iVar6 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }" if (parenthesized_expression "(*(int *)(iVar6 + 0x50) != 0)" ( (binary_expression "*(int *)(iVar6 + 0x50) != 0" (pointer_expression "*(int *)(iVar6 + 0x50)" * (cast_expression "(int *)(iVar6 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x50)" ( (binary_expression "iVar6 + 0x50" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }" { (do_statement "do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );" do (compound_statement "{\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      }" { (expression_statement "iVar3 = *(int *)(iVar6 + 0x58);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x58)" identifier = (pointer_expression "*(int *)(iVar6 + 0x58)" * (cast_expression "(int *)(iVar6 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x58)" ( (binary_expression "iVar6 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar6 + 0x5c);" (assignment_expression "iVar6 = *(int *)(iVar6 + 0x5c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x5c)" * (cast_expression "(int *)(iVar6 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x5c)" ( (binary_expression "iVar6 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = FUN_0008ed50(&local_24);" (assignment_expression "iVar4 = FUN_0008ed50(&local_24)" identifier = (call_expression "FUN_0008ed50(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) )))) ;) (if_statement "if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" if (parenthesized_expression "((iVar4 == 0) && (1 < iVar1))" ( (binary_expression "(iVar4 == 0) && (1 < iVar1)" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < iVar1)" ( (binary_expression "1 < iVar1" number_literal < identifier) ))) )) (compound_statement "{\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }" { (expression_statement "iVar4 = piVar2[1];" (assignment_expression "iVar4 = piVar2[1]" identifier = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (if_statement "if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }" if (parenthesized_expression "((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3))" ( (binary_expression "(*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" (parenthesized_expression "(*(int *)(iVar4 + 0x50) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x50) != 0" (pointer_expression "*(int *)(iVar4 + 0x50)" * (cast_expression "(int *)(iVar4 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x50)" ( (binary_expression "iVar4 + 0x50" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" ( (comma_expression "iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (assignment_expression "iVar7 = 1" identifier = number_literal) , (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6" (pointer_expression "*(int *)(iVar4 + 0x5c)" * (cast_expression "(int *)(iVar4 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x5c)" ( (binary_expression "iVar4 + 0x5c" identifier + number_literal) )))) == identifier) && (binary_expression "*(int *)(iVar4 + 0x58) == iVar3" (pointer_expression "*(int *)(iVar4 + 0x58)" * (cast_expression "(int *)(iVar4 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x58)" ( (binary_expression "iVar4 + 0x58" identifier + number_literal) )))) == identifier))) ))) )) (compound_statement "{\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }" { (do_statement "do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));" do (compound_statement "{\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_0008ed50(0);" (assignment_expression "iVar4 = FUN_0008ed50(0)" identifier = (call_expression "FUN_0008ed50(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;" if (parenthesized_expression "((iVar4 != 0) || (iVar1 <= iVar7))" ( (binary_expression "(iVar4 != 0) || (iVar1 <= iVar7)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar1 <= iVar7)" ( (binary_expression "iVar1 <= iVar7" identifier <= identifier) ))) )) (goto_statement "goto LAB_0008f1c0;" goto statement_identifier ;)) (expression_statement "iVar4 = piVar2[iVar7];" (assignment_expression "iVar4 = piVar2[iVar7]" identifier = (subscript_expression "piVar2[iVar7]" identifier [ identifier ])) ;) }) while (parenthesized_expression "((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3))" ( (binary_expression "(*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" (parenthesized_expression "(*(int *)(iVar4 + 0x50) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x50) != 0" (pointer_expression "*(int *)(iVar4 + 0x50)" * (cast_expression "(int *)(iVar4 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x50)" ( (binary_expression "iVar4 + 0x50" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" ( (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6" (pointer_expression "*(int *)(iVar4 + 0x5c)" * (cast_expression "(int *)(iVar4 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x5c)" ( (binary_expression "iVar4 + 0x5c" identifier + number_literal) )))) == identifier) && (binary_expression "*(int *)(iVar4 + 0x58) == iVar3" (pointer_expression "*(int *)(iVar4 + 0x58)" * (cast_expression "(int *)(iVar4 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x58)" ( (binary_expression "iVar4 + 0x58" identifier + number_literal) )))) == identifier)) ))) )) ;) })) }) (else_clause "else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" else (compound_statement "{\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" { (labeled_statement "LAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;" statement_identifier : (if_statement "if (iVar4 != 0) goto LAB_0008f19e;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;))) }))) (expression_statement "FUN_00020420(local_4c);" (call_expression "FUN_00020420(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) (if_statement "if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }" if (parenthesized_expression "(0 < local_24)" ( (binary_expression "0 < local_24" number_literal < identifier) )) (compound_statement "{\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }" { (if_statement "if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" if (parenthesized_expression "(*(int *)(*piVar2 + 0x38) == 0)" ( (binary_expression "*(int *)(*piVar2 + 0x38) == 0" (pointer_expression "*(int *)(*piVar2 + 0x38)" * (cast_expression "(int *)(*piVar2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 0x38)" ( (binary_expression "*piVar2 + 0x38" (pointer_expression "*piVar2" * identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }" { (if_statement "if (-1 < piVar5[6]) goto LAB_0008f15b;" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (goto_statement "goto LAB_0008f15b;" goto statement_identifier ;)) }) (else_clause "else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" else (compound_statement "{\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" { (expression_statement "__n = local_24 + 1;" (assignment_expression "__n = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) (expression_statement "__dest = (void *)piVar5[4];" (assignment_expression "__dest = (void *)piVar5[4]" identifier = (cast_expression "(void *)piVar5[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[4]" identifier [ number_literal ]))) ;) (if_statement "if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }" if (parenthesized_expression "(piVar5[5] < (int)__n)" ( (binary_expression "piVar5[5] < (int)__n" (subscript_expression "piVar5[5]" identifier [ number_literal ]) < (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }" { (expression_statement "piVar5[5] = __n * 2;" (assignment_expression "piVar5[5] = __n * 2" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (binary_expression "__n * 2" identifier * number_literal)) ;) (expression_statement "__dest = (void *)FUN_000439a0(__dest,__n * 2);" (assignment_expression "__dest = (void *)FUN_000439a0(__dest,__n * 2)" identifier = (cast_expression "(void *)FUN_000439a0(__dest,__n * 2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000439a0(__dest,__n * 2)" identifier (argument_list "(__dest,__n * 2)" ( identifier , (binary_expression "__n * 2" identifier * number_literal) ))))) ;) (if_statement "if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }" if (parenthesized_expression "(__dest == (void *)0x0)" ( (binary_expression "__dest == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }" { (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;) })) (expression_statement "piVar5[4] = (int)__dest;" (assignment_expression "piVar5[4] = (int)__dest" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "memcpy(__dest,local_28,__n);" (call_expression "memcpy(__dest,local_28,__n)" identifier (argument_list "(__dest,local_28,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_28 = (void *)piVar5[4];" (assignment_expression "local_28 = (void *)piVar5[4]" identifier = (cast_expression "(void *)piVar5[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[4]" identifier [ number_literal ]))) ;) (if_statement "if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (compound_statement "{\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }" { (labeled_statement "LAB_0008f15b:\n              FUN_000222d0(&local_24);" statement_identifier : (expression_statement "FUN_000222d0(&local_24);" (call_expression "FUN_000222d0(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) ))) ;)) })) (if_statement "if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }" if (parenthesized_expression "(local_24 < 1)" ( (binary_expression "local_24 < 1" identifier < number_literal) )) (compound_statement "{\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }" { (if_statement "if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;" if (parenthesized_expression "(*(int *)(*(int *)*piVar5 + 0x50) != 0)" ( (binary_expression "*(int *)(*(int *)*piVar5 + 0x50) != 0" (pointer_expression "*(int *)(*(int *)*piVar5 + 0x50)" * (cast_expression "(int *)(*(int *)*piVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar5 + 0x50)" ( (binary_expression "*(int *)*piVar5 + 0x50" (pointer_expression "*(int *)*piVar5" * (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0008f140;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }))) (expression_statement "*param_1 = (int)local_28;" (assignment_expression "*param_1 = (int)local_28" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*extraout_ECX = iVar3;" (assignment_expression "*extraout_ECX = iVar3" (pointer_expression "*extraout_ECX" * identifier) = identifier) ;) (expression_statement "extraout_ECX[1] = iVar6;" (assignment_expression "extraout_ECX[1] = iVar6" (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_2 = local_24;" (assignment_expression "*param_2 = local_24" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0008f19e;" goto statement_identifier ;) })) (if_statement "if (-1 < piVar5[6]) goto LAB_0008f15b;" if (parenthesized_expression "(-1 < piVar5[6])" ( (binary_expression "-1 < piVar5[6]" number_literal < (subscript_expression "piVar5[6]" identifier [ number_literal ])) )) (goto_statement "goto LAB_0008f15b;" goto statement_identifier ;)) (if_statement "if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;" if (parenthesized_expression "(*(int *)(*(int *)*piVar5 + 0x50) == 0)" ( (binary_expression "*(int *)(*(int *)*piVar5 + 0x50) == 0" (pointer_expression "*(int *)(*(int *)*piVar5 + 0x50)" * (cast_expression "(int *)(*(int *)*piVar5 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)*piVar5 + 0x50)" ( (binary_expression "*(int *)*piVar5 + 0x50" (pointer_expression "*(int *)*piVar5" * (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) + number_literal) )))) == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0008f140:\n        iVar6 = *piVar2;" statement_identifier : (expression_statement "iVar6 = *piVar2;" (assignment_expression "iVar6 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" { (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (do_statement do (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) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT)) ))) )) ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT * LIT) ))))) ;) (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) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) )))) == LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) }) while (parenthesized_expression ( BOOL )) ;) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_0008ef40(int *param_1,int *param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  int iVar4;\n  void *__dest;\n  int *extraout_ECX;\n  int *piVar5;\n  int iVar6;\n  size_t __n;\n  int iVar7;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar8;\n  int local_4c;\n  void *local_28;\n  int local_24;\n  int local_20;\n  \n  uVar8 = FUN_0001af1a();\n  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = piVar5[2];\n  local_4c = unaff_EDI + -0x5beb7;\n  if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }\n  if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }\n  *param_1 = 0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar4;\n}" (primitive_type "int") (function_declarator "FUN_0008ef40(int *param_1,int *param_2)" (identifier "FUN_0008ef40") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  int iVar4;\n  void *__dest;\n  int *extraout_ECX;\n  int *piVar5;\n  int iVar6;\n  size_t __n;\n  int iVar7;\n  int unaff_EDI;\n  int in_GS_OFFSET;\n  undefined8 uVar8;\n  int local_4c;\n  void *local_28;\n  int local_24;\n  int local_20;\n  \n  uVar8 = FUN_0001af1a();\n  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar1 = piVar5[2];\n  local_4c = unaff_EDI + -0x5beb7;\n  if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }\n  if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }\n  *param_1 = 0;\n  iVar4 = 0;\nLAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return iVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "int *extraout_ECX;" (primitive_type "int") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "void *local_28;" (primitive_type "void") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "uVar8 = FUN_0001af1a();" (assignment_expression "uVar8 = FUN_0001af1a()" (identifier "uVar8") (= "=") (call_expression "FUN_0001af1a()" (identifier "FUN_0001af1a") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar5 = (int *)((ulonglong)uVar8 >> 0x20);" (assignment_expression "piVar5 = (int *)((ulonglong)uVar8 >> 0x20)" (identifier "piVar5") (= "=") (cast_expression "(int *)((ulonglong)uVar8 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar8 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar8 >> 0x20" (cast_expression "(ulonglong)uVar8" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar1 = piVar5[2];" (assignment_expression "iVar1 = piVar5[2]" (identifier "iVar1") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_4c = unaff_EDI + -0x5beb7;" (assignment_expression "local_4c = unaff_EDI + -0x5beb7" (identifier "local_4c") (= "=") (binary_expression "unaff_EDI + -0x5beb7" (identifier "unaff_EDI") (+ "+") (number_literal "-0x5beb7"))) (; ";")) (if_statement "if (*(char *)((int)uVar8 + 0xeb) == '\0') {\n    local_4c = unaff_EDI + -0x5bf37;\n  }" (if "if") (parenthesized_expression "(*(char *)((int)uVar8 + 0xeb) == '\0')" (( "(") (binary_expression "*(char *)((int)uVar8 + 0xeb) == '\0'" (pointer_expression "*(char *)((int)uVar8 + 0xeb)" (* "*") (cast_expression "(char *)((int)uVar8 + 0xeb)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)uVar8 + 0xeb)" (( "(") (binary_expression "(int)uVar8 + 0xeb" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (+ "+") (number_literal "0xeb")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_4c = unaff_EDI + -0x5bf37;\n  }" ({ "{") (expression_statement "local_4c = unaff_EDI + -0x5bf37;" (assignment_expression "local_4c = unaff_EDI + -0x5bf37" (identifier "local_4c") (= "=") (binary_expression "unaff_EDI + -0x5bf37" (identifier "unaff_EDI") (+ "+") (number_literal "-0x5bf37"))) (; ";")) (} "}"))) (if_statement "if (iVar1 != 0) {\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar2 = (int *)*piVar5;\n    iVar6 = *piVar2;\n    if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }\n  }" ({ "{") (expression_statement "piVar2 = (int *)*piVar5;" (assignment_expression "piVar2 = (int *)*piVar5" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";")) (expression_statement "iVar6 = *piVar2;" (assignment_expression "iVar6 = *piVar2" (identifier "iVar6") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (if_statement "if (*(int *)(iVar6 + 0x50) != 0) {\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar6 + 0x50) != 0)" (( "(") (binary_expression "*(int *)(iVar6 + 0x50) != 0" (pointer_expression "*(int *)(iVar6 + 0x50)" (* "*") (cast_expression "(int *)(iVar6 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x50)" (( "(") (binary_expression "iVar6 + 0x50" (identifier "iVar6") (+ "+") (number_literal "0x50")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );\n    }" ({ "{") (do_statement "do {\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      } while( true );" (do "do") (compound_statement "{\n        iVar3 = *(int *)(iVar6 + 0x58);\n        iVar6 = *(int *)(iVar6 + 0x5c);\n        iVar4 = FUN_0008ed50(&local_24);\n        if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }\n        FUN_00020420(local_4c);\n        if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }\n        if (-1 < piVar5[6]) goto LAB_0008f15b;\n        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;\nLAB_0008f140:\n        iVar6 = *piVar2;\n      }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar6 + 0x58);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x58)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar6 + 0x58)" (* "*") (cast_expression "(int *)(iVar6 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x58)" (( "(") (binary_expression "iVar6 + 0x58" (identifier "iVar6") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar6 + 0x5c);" (assignment_expression "iVar6 = *(int *)(iVar6 + 0x5c)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar6 + 0x5c)" (* "*") (cast_expression "(int *)(iVar6 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x5c)" (( "(") (binary_expression "iVar6 + 0x5c" (identifier "iVar6") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "iVar4 = FUN_0008ed50(&local_24);" (assignment_expression "iVar4 = FUN_0008ed50(&local_24)" (identifier "iVar4") (= "=") (call_expression "FUN_0008ed50(&local_24)" (identifier "FUN_0008ed50") (argument_list "(&local_24)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")")))) (; ";")) (if_statement "if ((iVar4 == 0) && (1 < iVar1)) {\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }\n        else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" (if "if") (parenthesized_expression "((iVar4 == 0) && (1 < iVar1))" (( "(") (binary_expression "(iVar4 == 0) && (1 < iVar1)" (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(1 < iVar1)" (( "(") (binary_expression "1 < iVar1" (number_literal "1") (< "<") (identifier "iVar1")) () ")"))) () ")")) (compound_statement "{\n          iVar4 = piVar2[1];\n          if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }\n        }" ({ "{") (expression_statement "iVar4 = piVar2[1];" (assignment_expression "iVar4 = piVar2[1]" (identifier "iVar4") (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }" (if "if") (parenthesized_expression "((*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3))" (( "(") (binary_expression "(*(int *)(iVar4 + 0x50) != 0) &&\n             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" (parenthesized_expression "(*(int *)(iVar4 + 0x50) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x50) != 0" (pointer_expression "*(int *)(iVar4 + 0x50)" (* "*") (cast_expression "(int *)(iVar4 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x50)" (( "(") (binary_expression "iVar4 + 0x50" (identifier "iVar4") (+ "+") (number_literal "0x50")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" (( "(") (comma_expression "iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (, ",") (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6" (pointer_expression "*(int *)(iVar4 + 0x5c)" (* "*") (cast_expression "(int *)(iVar4 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x5c)" (( "(") (binary_expression "iVar4 + 0x5c" (identifier "iVar4") (+ "+") (number_literal "0x5c")) () ")")))) (== "==") (identifier "iVar6")) (&& "&&") (binary_expression "*(int *)(iVar4 + 0x58) == iVar3" (pointer_expression "*(int *)(iVar4 + 0x58)" (* "*") (cast_expression "(int *)(iVar4 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x58)" (( "(") (binary_expression "iVar4 + 0x58" (identifier "iVar4") (+ "+") (number_literal "0x58")) () ")")))) (== "==") (identifier "iVar3")))) () ")"))) () ")")) (compound_statement "{\n            do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));\n          }" ({ "{") (do_statement "do {\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            } while ((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));" (do "do") (compound_statement "{\n              iVar7 = iVar7 + 1;\n              iVar4 = FUN_0008ed50(0);\n              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;\n              iVar4 = piVar2[iVar7];\n            }" ({ "{") (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = FUN_0008ed50(0);" (assignment_expression "iVar4 = FUN_0008ed50(0)" (identifier "iVar4") (= "=") (call_expression "FUN_0008ed50(0)" (identifier "FUN_0008ed50") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;" (if "if") (parenthesized_expression "((iVar4 != 0) || (iVar1 <= iVar7))" (( "(") (binary_expression "(iVar4 != 0) || (iVar1 <= iVar7)" (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar1 <= iVar7)" (( "(") (binary_expression "iVar1 <= iVar7" (identifier "iVar1") (<= "<=") (identifier "iVar7")) () ")"))) () ")")) (goto_statement "goto LAB_0008f1c0;" (goto "goto") (statement_identifier "LAB_0008f1c0") (; ";"))) (expression_statement "iVar4 = piVar2[iVar7];" (assignment_expression "iVar4 = piVar2[iVar7]" (identifier "iVar4") (= "=") (subscript_expression "piVar2[iVar7]" (identifier "piVar2") ([ "[") (identifier "iVar7") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3))" (( "(") (binary_expression "(*(int *)(iVar4 + 0x50) != 0) &&\n                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" (parenthesized_expression "(*(int *)(iVar4 + 0x50) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x50) != 0" (pointer_expression "*(int *)(iVar4 + 0x50)" (* "*") (cast_expression "(int *)(iVar4 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x50)" (( "(") (binary_expression "iVar4 + 0x50" (identifier "iVar4") (+ "+") (number_literal "0x50")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)" (( "(") (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3" (binary_expression "*(int *)(iVar4 + 0x5c) == iVar6" (pointer_expression "*(int *)(iVar4 + 0x5c)" (* "*") (cast_expression "(int *)(iVar4 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x5c)" (( "(") (binary_expression "iVar4 + 0x5c" (identifier "iVar4") (+ "+") (number_literal "0x5c")) () ")")))) (== "==") (identifier "iVar6")) (&& "&&") (binary_expression "*(int *)(iVar4 + 0x58) == iVar3" (pointer_expression "*(int *)(iVar4 + 0x58)" (* "*") (cast_expression "(int *)(iVar4 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x58)" (( "(") (binary_expression "iVar4 + 0x58" (identifier "iVar4") (+ "+") (number_literal "0x58")) () ")")))) (== "==") (identifier "iVar3"))) () ")"))) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" (else "else") (compound_statement "{\nLAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;\n        }" ({ "{") (labeled_statement "LAB_0008f1c0:\n          if (iVar4 != 0) goto LAB_0008f19e;" (statement_identifier "LAB_0008f1c0") (: ":") (if_statement "if (iVar4 != 0) goto LAB_0008f19e;" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008f19e;" (goto "goto") (statement_identifier "LAB_0008f19e") (; ";")))) (} "}")))) (expression_statement "FUN_00020420(local_4c);" (call_expression "FUN_00020420(local_4c)" (identifier "FUN_00020420") (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")"))) (; ";")) (if_statement "if (0 < local_24) {\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }" (if "if") (parenthesized_expression "(0 < local_24)" (( "(") (binary_expression "0 < local_24" (number_literal "0") (< "<") (identifier "local_24")) () ")")) (compound_statement "{\n          if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }\n          *param_1 = (int)local_28;\n          *extraout_ECX = iVar3;\n          extraout_ECX[1] = iVar6;\n          *param_2 = local_24;\n          iVar4 = 0;\n          goto LAB_0008f19e;\n        }" ({ "{") (if_statement "if (*(int *)(*piVar2 + 0x38) == 0) {\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }\n          else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(*piVar2 + 0x38) == 0)" (( "(") (binary_expression "*(int *)(*piVar2 + 0x38) == 0" (pointer_expression "*(int *)(*piVar2 + 0x38)" (* "*") (cast_expression "(int *)(*piVar2 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar2 + 0x38)" (( "(") (binary_expression "*piVar2 + 0x38" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (-1 < piVar5[6]) goto LAB_0008f15b;\n          }" ({ "{") (if_statement "if (-1 < piVar5[6]) goto LAB_0008f15b;" (if "if") (parenthesized_expression "(-1 < piVar5[6])" (( "(") (binary_expression "-1 < piVar5[6]" (number_literal "-1") (< "<") (subscript_expression "piVar5[6]" (identifier "piVar5") ([ "[") (number_literal "6") (] "]"))) () ")")) (goto_statement "goto LAB_0008f15b;" (goto "goto") (statement_identifier "LAB_0008f15b") (; ";"))) (} "}")) (else_clause "else {\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" (else "else") (compound_statement "{\n            __n = local_24 + 1;\n            __dest = (void *)piVar5[4];\n            if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }\n            memcpy(__dest,local_28,__n);\n            local_28 = (void *)piVar5[4];\n            if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }\n            if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }\n          }" ({ "{") (expression_statement "__n = local_24 + 1;" (assignment_expression "__n = local_24 + 1" (identifier "__n") (= "=") (binary_expression "local_24 + 1" (identifier "local_24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__dest = (void *)piVar5[4];" (assignment_expression "__dest = (void *)piVar5[4]" (identifier "__dest") (= "=") (cast_expression "(void *)piVar5[4]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (piVar5[5] < (int)__n) {\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }" (if "if") (parenthesized_expression "(piVar5[5] < (int)__n)" (( "(") (binary_expression "piVar5[5] < (int)__n" (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]")) (< "<") (cast_expression "(int)__n" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__n"))) () ")")) (compound_statement "{\n              piVar5[5] = __n * 2;\n              __dest = (void *)FUN_000439a0(__dest,__n * 2);\n              if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }\n              piVar5[4] = (int)__dest;\n            }" ({ "{") (expression_statement "piVar5[5] = __n * 2;" (assignment_expression "piVar5[5] = __n * 2" (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "__n * 2" (identifier "__n") (* "*") (number_literal "2"))) (; ";")) (expression_statement "__dest = (void *)FUN_000439a0(__dest,__n * 2);" (assignment_expression "__dest = (void *)FUN_000439a0(__dest,__n * 2)" (identifier "__dest") (= "=") (cast_expression "(void *)FUN_000439a0(__dest,__n * 2)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000439a0(__dest,__n * 2)" (identifier "FUN_000439a0") (argument_list "(__dest,__n * 2)" (( "(") (identifier "__dest") (, ",") (binary_expression "__n * 2" (identifier "__n") (* "*") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (__dest == (void *)0x0) {\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }" (if "if") (parenthesized_expression "(__dest == (void *)0x0)" (( "(") (binary_expression "__dest == (void *)0x0" (identifier "__dest") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                iVar4 = 7;\n                goto LAB_0008f19e;\n              }" ({ "{") (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" (identifier "iVar4") (= "=") (number_literal "7")) (; ";")) (goto_statement "goto LAB_0008f19e;" (goto "goto") (statement_identifier "LAB_0008f19e") (; ";")) (} "}"))) (expression_statement "piVar5[4] = (int)__dest;" (assignment_expression "piVar5[4] = (int)__dest" (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest"))) (; ";")) (} "}"))) (expression_statement "memcpy(__dest,local_28,__n);" (call_expression "memcpy(__dest,local_28,__n)" (identifier "memcpy") (argument_list "(__dest,local_28,__n)" (( "(") (identifier "__dest") (, ",") (identifier "local_28") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "local_28 = (void *)piVar5[4];" (assignment_expression "local_28 = (void *)piVar5[4]" (identifier "local_28") (= "=") (cast_expression "(void *)piVar5[4]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (-1 < piVar5[6]) {\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }" (if "if") (parenthesized_expression "(-1 < piVar5[6])" (( "(") (binary_expression "-1 < piVar5[6]" (number_literal "-1") (< "<") (subscript_expression "piVar5[6]" (identifier "piVar5") ([ "[") (number_literal "6") (] "]"))) () ")")) (compound_statement "{\nLAB_0008f15b:\n              FUN_000222d0(&local_24);\n            }" ({ "{") (labeled_statement "LAB_0008f15b:\n              FUN_000222d0(&local_24);" (statement_identifier "LAB_0008f15b") (: ":") (expression_statement "FUN_000222d0(&local_24);" (call_expression "FUN_000222d0(&local_24)" (identifier "FUN_000222d0") (argument_list "(&local_24)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")"))) (; ";"))) (} "}"))) (if_statement "if (local_24 < 1) {\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }" (if "if") (parenthesized_expression "(local_24 < 1)" (( "(") (binary_expression "local_24 < 1" (identifier "local_24") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;\n              break;\n            }" ({ "{") (if_statement "if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;" (if "if") (parenthesized_expression "(*(int *)(*(int *)*piVar5 + 0x50) != 0)" (( "(") (binary_expression "*(int *)(*(int *)*piVar5 + 0x50) != 0" (pointer_expression "*(int *)(*(int *)*piVar5 + 0x50)" (* "*") (cast_expression "(int *)(*(int *)*piVar5 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)*piVar5 + 0x50)" (( "(") (binary_expression "*(int *)*piVar5 + 0x50" (pointer_expression "*(int *)*piVar5" (* "*") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (+ "+") (number_literal "0x50")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008f140;" (goto "goto") (statement_identifier "LAB_0008f140") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}")))) (expression_statement "*param_1 = (int)local_28;" (assignment_expression "*param_1 = (int)local_28" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)local_28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_28"))) (; ";")) (expression_statement "*extraout_ECX = iVar3;" (assignment_expression "*extraout_ECX = iVar3" (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "extraout_ECX[1] = iVar6;" (assignment_expression "extraout_ECX[1] = iVar6" (subscript_expression "extraout_ECX[1]" (identifier "extraout_ECX") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*param_2 = local_24;" (assignment_expression "*param_2 = local_24" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0008f19e;" (goto "goto") (statement_identifier "LAB_0008f19e") (; ";")) (} "}"))) (if_statement "if (-1 < piVar5[6]) goto LAB_0008f15b;" (if "if") (parenthesized_expression "(-1 < piVar5[6])" (( "(") (binary_expression "-1 < piVar5[6]" (number_literal "-1") (< "<") (subscript_expression "piVar5[6]" (identifier "piVar5") ([ "[") (number_literal "6") (] "]"))) () ")")) (goto_statement "goto LAB_0008f15b;" (goto "goto") (statement_identifier "LAB_0008f15b") (; ";"))) (if_statement "if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;" (if "if") (parenthesized_expression "(*(int *)(*(int *)*piVar5 + 0x50) == 0)" (( "(") (binary_expression "*(int *)(*(int *)*piVar5 + 0x50) == 0" (pointer_expression "*(int *)(*(int *)*piVar5 + 0x50)" (* "*") (cast_expression "(int *)(*(int *)*piVar5 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)*piVar5 + 0x50)" (( "(") (binary_expression "*(int *)*piVar5 + 0x50" (pointer_expression "*(int *)*piVar5" (* "*") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (+ "+") (number_literal "0x50")) () ")")))) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_0008f140:\n        iVar6 = *piVar2;" (statement_identifier "LAB_0008f140") (: ":") (expression_statement "iVar6 = *piVar2;" (assignment_expression "iVar6 = *piVar2" (identifier "iVar6") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0008f19e:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (statement_identifier "LAB_0008f19e") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" ({ "{") (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" (identifier "FUN_000f6410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}")))

int function_1
              (type_1 *p,type_2 *pMsr,type_3 *piDocid,char **paPoslist,
              int *pnPoslist)

{
  int var_4;
  int *piVar1;
  int var_8;
  int var_7;
  type_1 *pTab;
  int var_6;
  void *var_13;
  int *extraout_ECX;
  int *piVar5;
  type_4 *pFVar6;
  int var_9;
  int var_3;
  int var_2;
  type_5 uVar7;
  char *in_stack_ffffff88;
  char *__src;
  char **in_stack_ffffff8c;
  int *in_stack_ffffff90;
  type_6 *local_4c;
  char *pList;
  int var_11;
  int var_16;
  
  uVar7 = var_1();
  piVar5 = (int *)((type_7)uVar7 >> 0x20);
  var_16 = *(int *)(var_2 + 0x14);
  var_4 = piVar5[2];
  local_4c = (type_6 *)(var_3 + -0x5beb7);
  if (*(char *)((int)uVar7 + 0xeb) == '\0') {
    local_4c = (type_6 *)(var_3 + -0x5bf37);
  }
  if (var_4 != 0) {
    piVar1 = (int *)*piVar5;
    pFVar6 = (type_4 *)*piVar1;
    if (pFVar6->pOffsetList != (char *)0x0) {
      pTab = (type_1 *)((int)uVar7 + 0xeb);
      do {
        var_8 = (int)pFVar6->iDocid;
        var_7 = *(int *)((int)&pFVar6->iDocid + 4);
        var_6 = var_5(pTab,pFVar6,&pList,&var_11);
        if ((var_6 == 0) && (1 < var_4)) {
          pFVar6 = (type_4 *)piVar1[1];
          if (pFVar6->pOffsetList == (char *)0x0) {
            var_9 = 1;
          }
          else {
            var_9 = 1;
            if (*(int *)((int)&pFVar6->iDocid + 4) == var_7 && (int)pFVar6->iDocid == var_8) {
              do {
                var_9 = var_9 + 1;
                var_6 = var_5(pTab,pFVar6,(char **)0x0,(int *)0x0);
                if ((var_6 != 0) || (var_4 <= var_9)) goto LAB_0008f1c0;
                pFVar6 = (type_4 *)piVar1[var_9];
              } while ((pFVar6->pOffsetList != (char *)0x0) &&
                      (*(int *)((int)&pFVar6->iDocid + 4) == var_7 && (int)pFVar6->iDocid == var_8))
              ;
            }
          }
        }
        else {
          var_9 = 1;
LAB_0008f1c0:
          if (var_6 != 0) goto LAB_0008f19e;
        }
        var_10((type_4 **)*piVar5,var_4,var_9,local_4c);
        __src = pList;
        if (0 < var_11) {
          if (*(int *)(*piVar1 + 0x38) == 0) {
            if (-1 < piVar5[6]) goto LAB_0008f15b;
          }
          else {
            in_stack_ffffff8c = (char **)(var_11 + 1);
            var_13 = (void *)piVar5[4];
            if (piVar5[5] < (int)in_stack_ffffff8c) {
              piVar5[5] = (int)in_stack_ffffff8c * 2;
              var_13 = var_12(var_13,(int)in_stack_ffffff8c * 2);
              if (var_13 == (void *)0x0) {
                var_6 = 7;
                goto LAB_0008f19e;
              }
              piVar5[4] = (int)var_13;
            }
            var_14(var_13,__src,(size_t)in_stack_ffffff8c);
            pList = (char *)piVar5[4];
            in_stack_ffffff88 = __src;
            if (-1 < piVar5[6]) {
LAB_0008f15b:
              var_15((int)&var_11,(int)in_stack_ffffff88,in_stack_ffffff8c,
                               in_stack_ffffff90);
            }
            if (var_11 < 1) {
              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;
              break;
            }
          }
          (p->base).pModule = (type_8 *)pList;
          *extraout_ECX = var_8;
          extraout_ECX[1] = var_7;
          pMsr->apSegment = (type_4 **)var_11;
          var_6 = 0;
          goto LAB_0008f19e;
        }
        if (-1 < piVar5[6]) goto LAB_0008f15b;
        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;
LAB_0008f140:
        pFVar6 = (type_4 *)*piVar1;
      } while( true );
    }
  }
  (p->base).pModule = (type_8 *)0x0;
  var_6 = 0;
LAB_0008f19e:
  if (var_16 != *(int *)(var_2 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_17();
  }
  return var_6;
}


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

int MASKED(int *param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  void *__dest;
  int *extraout_ECX;
  int *piVar5;
  int iVar6;
  size_t __n;
  int iVar7;
  int unaff_EDI;
  int in_GS_OFFSET;
  undefined8 uVar8;
  int local_4c;
  void *local_28;
  int local_24;
  int local_20;
  
  uVar8 = FUN_0001af1a();
  piVar5 = (int *)((ulonglong)uVar8 >> 0x20);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar1 = piVar5[2];
  local_4c = unaff_EDI + -0x5beb7;
  if (*(char *)((int)uVar8 + 0xeb) == '\0') {
    local_4c = unaff_EDI + -0x5bf37;
  }
  if (iVar1 != 0) {
    piVar2 = (int *)*piVar5;
    iVar6 = *piVar2;
    if (*(int *)(iVar6 + 0x50) != 0) {
      do {
        iVar3 = *(int *)(iVar6 + 0x58);
        iVar6 = *(int *)(iVar6 + 0x5c);
        iVar4 = FUN_0008ed50(&local_24);
        if ((iVar4 == 0) && (1 < iVar1)) {
          iVar4 = piVar2[1];
          if ((*(int *)(iVar4 + 0x50) != 0) &&
             (iVar7 = 1, *(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3)) {
            do {
              iVar7 = iVar7 + 1;
              iVar4 = FUN_0008ed50(0);
              if ((iVar4 != 0) || (iVar1 <= iVar7)) goto LAB_0008f1c0;
              iVar4 = piVar2[iVar7];
            } while ((*(int *)(iVar4 + 0x50) != 0) &&
                    (*(int *)(iVar4 + 0x5c) == iVar6 && *(int *)(iVar4 + 0x58) == iVar3));
          }
        }
        else {
LAB_0008f1c0:
          if (iVar4 != 0) goto LAB_0008f19e;
        }
        FUN_00020420(local_4c);
        if (0 < local_24) {
          if (*(int *)(*piVar2 + 0x38) == 0) {
            if (-1 < piVar5[6]) goto LAB_0008f15b;
          }
          else {
            __n = local_24 + 1;
            __dest = (void *)piVar5[4];
            if (piVar5[5] < (int)__n) {
              piVar5[5] = __n * 2;
              __dest = (void *)FUN_000439a0(__dest,__n * 2);
              if (__dest == (void *)0x0) {
                iVar4 = 7;
                goto LAB_0008f19e;
              }
              piVar5[4] = (int)__dest;
            }
            memcpy(__dest,local_28,__n);
            local_28 = (void *)piVar5[4];
            if (-1 < piVar5[6]) {
LAB_0008f15b:
              FUN_000222d0(&local_24);
            }
            if (local_24 < 1) {
              if (*(int *)(*(int *)*piVar5 + 0x50) != 0) goto LAB_0008f140;
              break;
            }
          }
          *param_1 = (int)local_28;
          *extraout_ECX = iVar3;
          extraout_ECX[1] = iVar6;
          *param_2 = local_24;
          iVar4 = 0;
          goto LAB_0008f19e;
        }
        if (-1 < piVar5[6]) goto LAB_0008f15b;
        if (*(int *)(*(int *)*piVar5 + 0x50) == 0) break;
LAB_0008f140:
        iVar6 = *piVar2;
      } while( true );
    }
  }
  *param_1 = 0;
  iVar4 = 0;
LAB_0008f19e:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return iVar4;
}

