
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */

int __regparm3 fts3SegReaderNext(Fts3Table *p,Fts3SegReader *pReader,int bIncr)

{
  size_t __n;
  Fts3HashElem *pFVar1;
  uint uVar2;
  int iVar3;
  char *pcVar4;
  uint uVar5;
  uint uVar6;
  int *piVar7;
  byte *pbVar8;
  int iVar9;
  int in_GS_OFFSET;
  undefined4 in_stack_ffffffc4;
  int nPrefix;
  int nSuffix;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (pReader->aDoclist == (char *)0x0) {
    pbVar8 = (byte *)pReader->aNode;
  }
  else {
    pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist);
  }
  if ((pbVar8 == (byte *)0x0) || (pReader->aNode + pReader->nNode <= pbVar8)) {
    if (pReader->ppNextElem == (Fts3HashElem **)0x0) {
      fts3SegReaderSetEof(pReader);
      iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);
      uVar6 = (uint)pReader->iCurrentBlock;
      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);
      uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);
      iVar9 = iVar3 - *piVar7;
      if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {
        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));
        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);
        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;
        iVar3 = sqlite3Fts3ReadBlock
                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,
                           (int *)0x0);
        if (iVar3 != 0) goto LAB_001019a5;
        pbVar8 = (byte *)pReader->aNode;
        goto LAB_001017a6;
      }
    }
    else {
      pFVar1 = *pReader->ppNextElem;
      sqlite3_free(pReader->aNode);
      pReader->aNode = (char *)0x0;
      if (pFVar1 != (Fts3HashElem *)0x0) {
        piVar7 = (int *)pFVar1->data;
        __n = *piVar7 + 1;
        pReader->zTerm = (char *)pFVar1->pKey;
        pReader->nTerm = pFVar1->nKey;
        pcVar4 = (char *)sqlite3_malloc(__n);
        if (pcVar4 != (char *)0x0) {
          memcpy(pcVar4,(void *)piVar7[1],__n);
          pReader->ppNextElem = pReader->ppNextElem + 1;
          pReader->nDoclist = __n;
          iVar3 = 0;
          pReader->nNode = __n;
          pReader->aDoclist = pcVar4;
          pReader->aNode = pcVar4;
          goto LAB_001019a5;
        }
        goto LAB_00101a30;
      }
    }
LAB_00101910:
    iVar3 = 0;
  }
  else {
LAB_001017a6:
    iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);
    if (iVar3 != 0) goto LAB_001019a5;
    if ((char)*pbVar8 < '\0') {
      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);
    }
    else {
      iVar3 = 1;
      nPrefix = (uint)*pbVar8;
    }
    pbVar8 = pbVar8 + iVar3;
    if ((char)*pbVar8 < '\0') {
      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);
    }
    else {
      nSuffix = (int)*pbVar8;
      iVar3 = 1;
    }
    pbVar8 = pbVar8 + iVar3;
    if ((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))) {
      uVar6 = pReader->nTermAlloc;
      if (nPrefix <= (int)uVar6) {
        uVar5 = nSuffix + nPrefix;
        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);
        uVar2 = (uint)(uVar6 < uVar5);
        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;
        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=
            (int)(iVar3 - uVar2) < 0) {
          pcVar4 = pReader->zTerm;
          iVar3 = sqlite3_initialize();
          if (iVar3 == 0) {
            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));
            if (pcVar4 != (char *)0x0) {
              pReader->zTerm = pcVar4;
              pReader->nTermAlloc = uVar5 * 2;
              goto LAB_00101888;
            }
          }
LAB_00101a30:
          iVar3 = 7;
          goto LAB_001019a5;
        }
LAB_00101888:
        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);
        if (iVar3 != 0) goto LAB_001019a5;
        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);
        pbVar8 = pbVar8 + nSuffix;
        pReader->nTerm = nPrefix + nSuffix;
        uVar6 = (uint)*pbVar8;
        if ((char)*pbVar8 < '\0') {
          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);
          uVar6 = pReader->nDoclist;
        }
        else {
          pReader->nDoclist = uVar6;
          iVar3 = 1;
        }
        pbVar8 = pbVar8 + iVar3;
        pReader->pOffsetList = (char *)0x0;
        pReader->aDoclist = (char *)pbVar8;
        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&
           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;
      }
    }
    iVar3 = 0x10b;
  }
LAB_001019a5:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar3;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



int FUN_00101760(void)

{
  size_t __n;
  int iVar1;
  byte bVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  void *__dest;
  int extraout_EDX;
  uint uVar7;
  byte *pbVar8;
  int in_GS_OFFSET;
  uint local_28;
  size_t local_24;
  
  FUN_00036ac9();
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (*(int *)(extraout_EDX + 0x48) == 0) {
    pbVar8 = *(byte **)(extraout_EDX + 0x28);
  }
  else {
    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));
  }
  if ((pbVar8 == (byte *)0x0) ||
     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {
    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {
      FUN_000aad90();
      iVar5 = *(int *)(extraout_EDX + 0x24);
      uVar7 = *(uint *)(extraout_EDX + 0x20);
      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));
      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);
      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=
          (int)(iVar6 - uVar4) < 0) {
        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;
        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);
        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);
        if (iVar5 != 0) goto LAB_001019a5;
        pbVar8 = *(byte **)(extraout_EDX + 0x28);
        goto LAB_001017a6;
      }
    }
    else {
      iVar5 = **(int **)(extraout_EDX + 0x38);
      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));
      *(undefined4 *)(extraout_EDX + 0x28) = 0;
      if (iVar5 != 0) {
        piVar3 = *(int **)(iVar5 + 8);
        __n = *piVar3 + 1;
        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);
        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);
        __dest = (void *)FUN_0005bfa0(__n);
        if (__dest != (void *)0x0) {
          memcpy(__dest,(void *)piVar3[1],__n);
          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;
          *(size_t *)(extraout_EDX + 0x4c) = __n;
          iVar5 = 0;
          *(size_t *)(extraout_EDX + 0x2c) = __n;
          *(void **)(extraout_EDX + 0x48) = __dest;
          *(void **)(extraout_EDX + 0x28) = __dest;
          goto LAB_001019a5;
        }
        goto LAB_00101a30;
      }
    }
LAB_00101910:
    iVar5 = 0;
  }
  else {
LAB_001017a6:
    iVar5 = FUN_000ab570();
    if (iVar5 != 0) goto LAB_001019a5;
    if ((char)*pbVar8 < '\0') {
      iVar5 = FUN_0003b030();
    }
    else {
      iVar5 = 1;
      local_28 = (uint)*pbVar8;
    }
    bVar2 = pbVar8[iVar5];
    if ((char)bVar2 < '\0') {
      iVar6 = FUN_0003b030();
    }
    else {
      local_24 = (size_t)bVar2;
      iVar6 = 1;
    }
    pbVar8 = pbVar8 + iVar5 + iVar6;
    if ((0 < (int)local_24) &&
       ((int)local_24 <=
        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {
      uVar7 = *(uint *)(extraout_EDX + 0x44);
      if ((int)local_28 <= (int)uVar7) {
        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);
        uVar4 = (uint)(uVar7 < local_24 + local_28);
        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;
        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=
            (int)(iVar5 - uVar4) < 0) {
          iVar5 = FUN_0005b490();
          if (iVar5 == 0) {
            iVar5 = FUN_00044180();
            if (iVar5 != 0) {
              *(int *)(extraout_EDX + 0x40) = iVar5;
              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;
              goto LAB_00101888;
            }
          }
LAB_00101a30:
          iVar5 = 7;
          goto LAB_001019a5;
        }
LAB_00101888:
        iVar5 = FUN_000ab570();
        if (iVar5 != 0) goto LAB_001019a5;
        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);
        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;
        bVar2 = pbVar8[local_24];
        uVar7 = (uint)bVar2;
        if ((char)bVar2 < '\0') {
          iVar5 = FUN_0003b030();
          uVar7 = *(uint *)(extraout_EDX + 0x4c);
        }
        else {
          *(uint *)(extraout_EDX + 0x4c) = uVar7;
          iVar5 = 1;
        }
        pbVar8 = pbVar8 + local_24 + iVar5;
        *(undefined4 *)(extraout_EDX + 0x50) = 0;
        *(byte **)(extraout_EDX + 0x48) = pbVar8;
        if (((int)uVar7 <=
             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&
           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;
      }
    }
    iVar5 = 0x10b;
  }
LAB_001019a5:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar5;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00116110();
}


PUSH EBP
CALL 0x00036ac9
ADD EBP,0x7a6c2
PUSH EDI
MOV EDI,EAX
PUSH ESI
MOV ESI,EDX
PUSH EBX
SUB ESP,0x2c
MOV EBX,dword ptr [EDX + 0x48]
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1c],EAX
XOR EAX,EAX
TEST EBX,EBX
JZ 0x001019c0
ADD EBX,dword ptr [EDX + 0x4c]
TEST EBX,EBX
JZ 0x00101920
MOV EAX,dword ptr [ESI + 0x2c]
ADD EAX,dword ptr [ESI + 0x28]
CMP EBX,EAX
JNC 0x00101920
MOV ECX,0x14
MOV EDX,EBX
MOV EAX,ESI
CALL 0x000ab570
TEST EAX,EAX
JNZ 0x001019a5
MOVZX EAX,byte ptr [EBX]
TEST AL,AL
JS 0x00101a58
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,0x1
ADD EBX,EAX
MOVZX ECX,byte ptr [EBX]
TEST CL,CL
JS 0x00101a40
MOVZX EDI,CL
MOV EAX,0x1
MOV dword ptr [ESP + 0x18],EDI
ADD EAX,EBX
MOV dword ptr [ESP + 0x4],EAX
TEST EDI,EDI
JLE 0x00101a20
MOV EAX,dword ptr [ESI + 0x2c]
ADD EAX,dword ptr [ESI + 0x28]
SUB EAX,dword ptr [ESP + 0x4]
CMP EAX,EDI
JL 0x00101a20
MOV EAX,dword ptr [ESI + 0x44]
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x8],ECX
CMP ECX,EAX
JL 0x00101a20
MOV ECX,EDI
MOV EBX,EDI
CDQ
SAR EBX,0x1f
ADD ECX,EAX
MOV EAX,dword ptr [ESP + 0x8]
ADC EBX,EDX
CDQ
CMP dword ptr [ESP + 0x8],ECX
MOV dword ptr [ESP + 0xc],EBX
MOV EAX,EDX
MOV dword ptr [ESP + 0x8],ECX
SBB EAX,EBX
JGE 0x00101888
MOV EDI,dword ptr [ESI + 0x40]
CALL 0x0005b490
TEST EAX,EAX
JNZ 0x00101a30
MOV ECX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [ESP + 0xc]
MOV EAX,EDI
SHLD EBX,ECX,0x1
ADD ECX,ECX
MOV dword ptr [ESP + 0x8],ECX
MOV EDX,ECX
MOV ECX,EBX
MOV dword ptr [ESP + 0xc],EBX
CALL 0x00044180
TEST EAX,EAX
JZ 0x00101a30
MOV dword ptr [ESI + 0x40],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [ESP + 0x18]
MOV dword ptr [ESI + 0x44],EAX
LEA ECX,[EDI + 0xa]
MOV EDI,dword ptr [ESP + 0x4]
MOV EAX,ESI
MOV EDX,EDI
CALL 0x000ab570
TEST EAX,EAX
JNZ 0x001019a5
MOV EAX,dword ptr [ESP + 0x14]
SUB ESP,0x4
ADD EAX,dword ptr [ESI + 0x40]
MOV EBX,EBP
PUSH dword ptr [ESP + 0x1c]
PUSH EDI
PUSH EAX
CALL 0x00015130
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x24]
ADD ESP,0x10
ADD EDX,EAX
ADD EDI,EAX
MOV dword ptr [ESI + 0x3c],EDX
MOVZX EDX,byte ptr [EDI]
MOV EBX,EDI
TEST DL,DL
JS 0x00101a70
MOV dword ptr [ESI + 0x4c],EDX
MOV EAX,0x1
ADD EAX,EBX
MOV EDI,dword ptr [ESI + 0x2c]
MOV dword ptr [ESI + 0x50],0x0
MOV ECX,EAX
SUB ECX,dword ptr [ESI + 0x28]
MOV dword ptr [ESI + 0x48],EAX
SUB EDI,ECX
CMP EDX,EDI
JG 0x00101a20
MOV ECX,dword ptr [ESI + 0x30]
TEST ECX,ECX
JNZ 0x00101910
CMP byte ptr [EAX + EDX*0x1 + -0x1],0x0
JNZ 0x00101a20
NOP
XOR EAX,EAX
JMP 0x001019a5
MOV EAX,dword ptr [ESI + 0x38]
TEST EAX,EAX
JZ 0x001019d0
SUB ESP,0xc
MOV EBX,dword ptr [EAX]
PUSH dword ptr [ESI + 0x28]
CALL 0x00042800
MOV dword ptr [ESI + 0x28],0x0
ADD ESP,0x10
TEST EBX,EBX
JZ 0x00101910
MOV ECX,dword ptr [EBX + 0x8]
SUB ESP,0xc
MOV EAX,dword ptr [ECX]
MOV dword ptr [ESP + 0x10],ECX
LEA EDI,[EAX + 0x1]
MOV EAX,dword ptr [EBX + 0xc]
MOV dword ptr [ESI + 0x40],EAX
MOV EAX,dword ptr [EBX + 0x10]
PUSH EDI
MOV dword ptr [ESI + 0x3c],EAX
CALL 0x0005bfa0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x4]
TEST EAX,EAX
MOV EDX,EAX
JZ 0x00101a30
MOV EAX,dword ptr [ECX + 0x4]
SUB ESP,0x4
MOV EBX,EBP
PUSH EDI
PUSH EAX
PUSH EDX
MOV dword ptr [ESP + 0x14],EDX
CALL 0x00015130
MOV EDX,dword ptr [ESP + 0x14]
ADD dword ptr [ESI + 0x38],0x4
ADD ESP,0x10
MOV dword ptr [ESI + 0x4c],EDI
XOR EAX,EAX
MOV dword ptr [ESI + 0x2c],EDI
MOV dword ptr [ESI + 0x48],EDX
MOV dword ptr [ESI + 0x28],EDX
MOV EDI,dword ptr [ESP + 0x1c]
XOR EDI,dword ptr GS:[0x14]
JNZ 0x00101a82
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,dword ptr [EDX + 0x28]
JMP 0x00101790
MOV EAX,ESI
CALL 0x000aad90
MOV EDX,dword ptr [ESI + 0x24]
MOV EAX,dword ptr [ESI + 0x20]
CMP EAX,dword ptr [ESI + 0x10]
MOV ECX,EDX
SBB ECX,dword ptr [ESI + 0x14]
JGE 0x00101910
ADD EAX,0x1
ADC EDX,0x0
MOV dword ptr [ESI + 0x20],EAX
SUB ESP,0x4
MOV ECX,EDX
MOV EDX,EAX
LEA EAX,[ESI + 0x2c]
PUSH 0x0
PUSH EAX
LEA EAX,[ESI + 0x28]
PUSH EAX
MOV EAX,EDI
MOV dword ptr [ESI + 0x24],ECX
CALL 0x000f0270
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001019a5
MOV EBX,dword ptr [ESI + 0x28]
JMP 0x001017a6
MOV EAX,0x10b
JMP 0x001019a5
MOV EAX,0x7
JMP 0x001019a5
LEA EDX,[ESP + 0x18]
MOV EAX,EBX
CALL 0x0003b030
MOV EDI,dword ptr [ESP + 0x18]
JMP 0x001017e9
LEA EDX,[ESP + 0x14]
MOV EAX,EBX
CALL 0x0003b030
JMP 0x001017d0
LEA EDX,[ESI + 0x4c]
MOV EAX,EDI
CALL 0x0003b030
MOV EDX,dword ptr [ESI + 0x4c]
JMP 0x001018de
CALL 0x00116110
(translation_unit "int FUN_00101760(void)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  void *__dest;\n  int extraout_EDX;\n  uint uVar7;\n  byte *pbVar8;\n  int in_GS_OFFSET;\n  uint local_28;\n  size_t local_24;\n  \n  FUN_00036ac9();\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }\n  if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }\nLAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}\n\n" (function_definition "int FUN_00101760(void)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  void *__dest;\n  int extraout_EDX;\n  uint uVar7;\n  byte *pbVar8;\n  int in_GS_OFFSET;\n  uint local_28;\n  size_t local_24;\n  \n  FUN_00036ac9();\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }\n  if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }\nLAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}" primitive_type (function_declarator "FUN_00101760(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  void *__dest;\n  int extraout_EDX;\n  uint uVar7;\n  byte *pbVar8;\n  int in_GS_OFFSET;\n  uint local_28;\n  size_t local_24;\n  \n  FUN_00036ac9();\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }\n  if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }\nLAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "size_t local_24;" primitive_type identifier ;) (expression_statement "FUN_00036ac9();" (call_expression "FUN_00036ac9()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(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) ))))) ;) (if_statement "if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" if (parenthesized_expression "(*(int *)(extraout_EDX + 0x48) == 0)" ( (binary_expression "*(int *)(extraout_EDX + 0x48) == 0" (pointer_expression "*(int *)(extraout_EDX + 0x48)" * (cast_expression "(int *)(extraout_EDX + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x48)" ( (binary_expression "extraout_EDX + 0x48" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }" { (expression_statement "pbVar8 = *(byte **)(extraout_EDX + 0x28);" (assignment_expression "pbVar8 = *(byte **)(extraout_EDX + 0x28)" identifier = (pointer_expression "*(byte **)(extraout_EDX + 0x28)" * (cast_expression "(byte **)(extraout_EDX + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" else (compound_statement "{\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" { (expression_statement "pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));" (assignment_expression "pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" identifier = (cast_expression "(byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" ( (binary_expression "*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c)" (pointer_expression "*(int *)(extraout_EDX + 0x48)" * (cast_expression "(int *)(extraout_EDX + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x48)" ( (binary_expression "extraout_EDX + 0x48" identifier + number_literal) )))) + (pointer_expression "*(int *)(extraout_EDX + 0x4c)" * (cast_expression "(int *)(extraout_EDX + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x4c)" ( (binary_expression "extraout_EDX + 0x4c" identifier + number_literal) ))))) )))) ;) }))) (if_statement "if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" if (parenthesized_expression "((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8))" ( (binary_expression "(pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)" (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)" ( (binary_expression "(byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8" (cast_expression "(byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" ( (binary_expression "*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" * (cast_expression "(int *)(extraout_EDX + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x2c)" ( (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) )))) + (pointer_expression "*(int *)(extraout_EDX + 0x28)" * (cast_expression "(int *)(extraout_EDX + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) ))) <= identifier) ))) )) (compound_statement "{\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }" { (if_statement "if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" if (parenthesized_expression "(*(int **)(extraout_EDX + 0x38) == (int *)0x0)" ( (binary_expression "*(int **)(extraout_EDX + 0x38) == (int *)0x0" (pointer_expression "*(int **)(extraout_EDX + 0x38)" * (cast_expression "(int **)(extraout_EDX + 0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x38)" ( (binary_expression "extraout_EDX + 0x38" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }" { (expression_statement "FUN_000aad90();" (call_expression "FUN_000aad90()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = *(int *)(extraout_EDX + 0x24);" (assignment_expression "iVar5 = *(int *)(extraout_EDX + 0x24)" identifier = (pointer_expression "*(int *)(extraout_EDX + 0x24)" * (cast_expression "(int *)(extraout_EDX + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x24)" ( (binary_expression "extraout_EDX + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x20);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x20)" identifier = (pointer_expression "*(uint *)(extraout_EDX + 0x20)" * (cast_expression "(uint *)(extraout_EDX + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x20)" ( (binary_expression "extraout_EDX + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));" (assignment_expression "uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10))" identifier = (call_expression "(uint)(uVar7 < *(uint *)(extraout_EDX + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < *(uint *)(extraout_EDX + 0x10))" ( (binary_expression "uVar7 < *(uint *)(extraout_EDX + 0x10)" identifier < (pointer_expression "*(uint *)(extraout_EDX + 0x10)" * (cast_expression "(uint *)(extraout_EDX + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x10)" ( (binary_expression "extraout_EDX + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);" (assignment_expression "iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14)" identifier = (binary_expression "iVar5 - *(int *)(extraout_EDX + 0x14)" identifier - (pointer_expression "*(int *)(extraout_EDX + 0x14)" * (cast_expression "(int *)(extraout_EDX + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x14)" ( (binary_expression "extraout_EDX + 0x14" identifier + number_literal) )))))) ;) (if_statement "if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }" if (parenthesized_expression "((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0)" ( (binary_expression "(SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0" (parenthesized_expression "(SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4))" ( (binary_expression "SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)" (call_expression "SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14))" identifier (argument_list "(iVar5,*(int *)(extraout_EDX + 0x14))" ( identifier , (pointer_expression "*(int *)(extraout_EDX + 0x14)" * (cast_expression "(int *)(extraout_EDX + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x14)" ( (binary_expression "extraout_EDX + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar6,uVar4)" identifier (argument_list "(iVar6,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar6 - uVar4) < 0" (cast_expression "(int)(iVar6 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 - uVar4)" ( (binary_expression "iVar6 - uVar4" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }" { (expression_statement "*(uint *)(extraout_EDX + 0x20) = uVar7 + 1;" (assignment_expression "*(uint *)(extraout_EDX + 0x20) = uVar7 + 1" (pointer_expression "*(uint *)(extraout_EDX + 0x20)" * (cast_expression "(uint *)(extraout_EDX + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x20)" ( (binary_expression "extraout_EDX + 0x20" identifier + number_literal) )))) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);" (assignment_expression "*(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7)" (pointer_expression "*(uint *)(extraout_EDX + 0x24)" * (cast_expression "(uint *)(extraout_EDX + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x24)" ( (binary_expression "extraout_EDX + 0x24" identifier + number_literal) )))) = (binary_expression "iVar5 + (uint)(0xfffffffe < uVar7)" identifier + (call_expression "(uint)(0xfffffffe < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar7)" ( (binary_expression "0xfffffffe < uVar7" number_literal < identifier) ))))) ;) (expression_statement "iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);" (assignment_expression "iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" identifier = (call_expression "FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" identifier (argument_list "(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) , (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (expression_statement "pbVar8 = *(byte **)(extraout_EDX + 0x28);" (assignment_expression "pbVar8 = *(byte **)(extraout_EDX + 0x28)" identifier = (pointer_expression "*(byte **)(extraout_EDX + 0x28)" * (cast_expression "(byte **)(extraout_EDX + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_001017a6;" goto statement_identifier ;) })) }) (else_clause "else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" else (compound_statement "{\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" { (expression_statement "iVar5 = **(int **)(extraout_EDX + 0x38);" (assignment_expression "iVar5 = **(int **)(extraout_EDX + 0x38)" identifier = (pointer_expression "**(int **)(extraout_EDX + 0x38)" * (pointer_expression "*(int **)(extraout_EDX + 0x38)" * (cast_expression "(int **)(extraout_EDX + 0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x38)" ( (binary_expression "extraout_EDX + 0x38" identifier + number_literal) )))))) ;) (expression_statement "FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));" (call_expression "FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28))" identifier (argument_list "(*(undefined4 *)(extraout_EDX + 0x28))" ( (pointer_expression "*(undefined4 *)(extraout_EDX + 0x28)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(extraout_EDX + 0x28) = 0;" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x28) = 0" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x28)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }" { (expression_statement "piVar3 = *(int **)(iVar5 + 8);" (assignment_expression "piVar3 = *(int **)(iVar5 + 8)" identifier = (pointer_expression "*(int **)(iVar5 + 8)" * (cast_expression "(int **)(iVar5 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "__n = *piVar3 + 1;" (assignment_expression "__n = *piVar3 + 1" identifier = (binary_expression "*piVar3 + 1" (pointer_expression "*piVar3" * identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc)" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x40)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x40)" ( (binary_expression "extraout_EDX + 0x40" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" * (cast_expression "(undefined4 *)(iVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10)" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x3c)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x3c)" ( (binary_expression "extraout_EDX + 0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "__dest = (void *)FUN_0005bfa0(__n);" (assignment_expression "__dest = (void *)FUN_0005bfa0(__n)" identifier = (cast_expression "(void *)FUN_0005bfa0(__n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005bfa0(__n)" identifier (argument_list "(__n)" ( identifier ))))) ;) (if_statement "if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\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          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }" { (expression_statement "memcpy(__dest,(void *)piVar3[1],__n);" (call_expression "memcpy(__dest,(void *)piVar3[1],__n)" identifier (argument_list "(__dest,(void *)piVar3[1],__n)" ( identifier , (cast_expression "(void *)piVar3[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "*(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;" (assignment_expression "*(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4" (pointer_expression "*(int *)(extraout_EDX + 0x38)" * (cast_expression "(int *)(extraout_EDX + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x38)" ( (binary_expression "extraout_EDX + 0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(extraout_EDX + 0x38) + 4" (pointer_expression "*(int *)(extraout_EDX + 0x38)" * (cast_expression "(int *)(extraout_EDX + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x38)" ( (binary_expression "extraout_EDX + 0x38" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(size_t *)(extraout_EDX + 0x4c) = __n;" (assignment_expression "*(size_t *)(extraout_EDX + 0x4c) = __n" (pointer_expression "*(size_t *)(extraout_EDX + 0x4c)" * (cast_expression "(size_t *)(extraout_EDX + 0x4c)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x4c)" ( (binary_expression "extraout_EDX + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "*(size_t *)(extraout_EDX + 0x2c) = __n;" (assignment_expression "*(size_t *)(extraout_EDX + 0x2c) = __n" (pointer_expression "*(size_t *)(extraout_EDX + 0x2c)" * (cast_expression "(size_t *)(extraout_EDX + 0x2c)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x2c)" ( (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(void **)(extraout_EDX + 0x48) = __dest;" (assignment_expression "*(void **)(extraout_EDX + 0x48) = __dest" (pointer_expression "*(void **)(extraout_EDX + 0x48)" * (cast_expression "(void **)(extraout_EDX + 0x48)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x48)" ( (binary_expression "extraout_EDX + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(void **)(extraout_EDX + 0x28) = __dest;" (assignment_expression "*(void **)(extraout_EDX + 0x28) = __dest" (pointer_expression "*(void **)(extraout_EDX + 0x28)" * (cast_expression "(void **)(extraout_EDX + 0x28)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;) })) (goto_statement "goto LAB_00101a30;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00101910:\n    iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" else (compound_statement "{\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" { (labeled_statement "LAB_001017a6:\n    iVar5 = FUN_000ab570();" statement_identifier : (expression_statement "iVar5 = FUN_000ab570();" (assignment_expression "iVar5 = FUN_000ab570()" identifier = (call_expression "FUN_000ab570()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (if_statement "if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" if (parenthesized_expression "((char)*pbVar8 < '\0')" ( (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar8" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar5 = FUN_0003b030();\n    }" { (expression_statement "iVar5 = FUN_0003b030();" (assignment_expression "iVar5 = FUN_0003b030()" identifier = (call_expression "FUN_0003b030()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" else (compound_statement "{\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "local_28 = (uint)*pbVar8;" (assignment_expression "local_28 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }))) (expression_statement "bVar2 = pbVar8[iVar5];" (assignment_expression "bVar2 = pbVar8[iVar5]" identifier = (subscript_expression "pbVar8[iVar5]" identifier [ identifier ])) ;) (if_statement "if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar6 = FUN_0003b030();\n    }" { (expression_statement "iVar6 = FUN_0003b030();" (assignment_expression "iVar6 = FUN_0003b030()" identifier = (call_expression "FUN_0003b030()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" else (compound_statement "{\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" { (expression_statement "local_24 = (size_t)bVar2;" (assignment_expression "local_24 = (size_t)bVar2" identifier = (cast_expression "(size_t)bVar2" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) }))) (expression_statement "pbVar8 = pbVar8 + iVar5 + iVar6;" (assignment_expression "pbVar8 = pbVar8 + iVar5 + iVar6" identifier = (binary_expression "pbVar8 + iVar5 + iVar6" (binary_expression "pbVar8 + iVar5" identifier + identifier) + identifier)) ;) (if_statement "if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }" if (parenthesized_expression "((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8))" ( (binary_expression "(0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)" (parenthesized_expression "(0 < (int)local_24)" ( (binary_expression "0 < (int)local_24" number_literal < (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)" ( (binary_expression "(int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8" (parenthesized_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" ( (binary_expression "*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" * (cast_expression "(int *)(extraout_EDX + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x2c)" ( (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) )))) + (pointer_expression "*(int *)(extraout_EDX + 0x28)" * (cast_expression "(int *)(extraout_EDX + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) )) - (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }" { (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x44);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x44)" identifier = (pointer_expression "*(uint *)(extraout_EDX + 0x44)" * (cast_expression "(uint *)(extraout_EDX + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x44)" ( (binary_expression "extraout_EDX + 0x44" identifier + number_literal) ))))) ;) (if_statement "if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }" if (parenthesized_expression "((int)local_28 <= (int)uVar7)" ( (binary_expression "(int)local_28 <= (int)uVar7" (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }" { (expression_statement "iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);" (assignment_expression "iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28)" identifier = (binary_expression "((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28)" (binary_expression "((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f)" (parenthesized_expression "((int)local_24 >> 0x1f)" ( (binary_expression "(int)local_24 >> 0x1f" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (parenthesized_expression "((int)local_28 >> 0x1f)" ( (binary_expression "(int)local_28 >> 0x1f" (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(local_24,local_28)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_24,local_28)" identifier (argument_list "(local_24,local_28)" ( identifier , identifier )))))) ;) (expression_statement "uVar4 = (uint)(uVar7 < local_24 + local_28);" (assignment_expression "uVar4 = (uint)(uVar7 < local_24 + local_28)" identifier = (call_expression "(uint)(uVar7 < local_24 + local_28)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_24 + local_28)" ( (binary_expression "uVar7 < local_24 + local_28" identifier < (binary_expression "local_24 + local_28" identifier + identifier)) )))) ;) (expression_statement "iVar5 = ((int)uVar7 >> 0x1f) - iVar6;" (assignment_expression "iVar5 = ((int)uVar7 >> 0x1f) - iVar6" identifier = (binary_expression "((int)uVar7 >> 0x1f) - iVar6" (parenthesized_expression "((int)uVar7 >> 0x1f)" ( (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - identifier)) ;) (if_statement "if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }" if (parenthesized_expression "((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0)" ( (binary_expression "(SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0" (parenthesized_expression "(SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4))" ( (binary_expression "SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)" (call_expression "SBORROW4((int)uVar7 >> 0x1f,iVar6)" identifier (argument_list "((int)uVar7 >> 0x1f,iVar6)" ( (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier ))) != (call_expression "SBORROW4(iVar5,uVar4)" identifier (argument_list "(iVar5,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar5 - uVar4) < 0" (cast_expression "(int)(iVar5 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar5 - uVar4)" ( (binary_expression "iVar5 - uVar4" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }" { (expression_statement "iVar5 = FUN_0005b490();" (assignment_expression "iVar5 = FUN_0005b490()" identifier = (call_expression "FUN_0005b490()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }" { (expression_statement "iVar5 = FUN_00044180();" (assignment_expression "iVar5 = FUN_00044180()" identifier = (call_expression "FUN_00044180()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }" { (expression_statement "*(int *)(extraout_EDX + 0x40) = iVar5;" (assignment_expression "*(int *)(extraout_EDX + 0x40) = iVar5" (pointer_expression "*(int *)(extraout_EDX + 0x40)" * (cast_expression "(int *)(extraout_EDX + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x40)" ( (binary_expression "extraout_EDX + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;" (assignment_expression "*(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2" (pointer_expression "*(size_t *)(extraout_EDX + 0x44)" * (cast_expression "(size_t *)(extraout_EDX + 0x44)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x44)" ( (binary_expression "extraout_EDX + 0x44" identifier + number_literal) )))) = (binary_expression "(local_24 + local_28) * 2" (parenthesized_expression "(local_24 + local_28)" ( (binary_expression "local_24 + local_28" identifier + identifier) )) * number_literal)) ;) (goto_statement "goto LAB_00101888;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00101a30:\n          iVar5 = 7;" statement_identifier : (expression_statement "iVar5 = 7;" (assignment_expression "iVar5 = 7" identifier = number_literal) ;)) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;) })) (labeled_statement "LAB_00101888:\n        iVar5 = FUN_000ab570();" statement_identifier : (expression_statement "iVar5 = FUN_000ab570();" (assignment_expression "iVar5 = FUN_000ab570()" identifier = (call_expression "FUN_000ab570()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (expression_statement "memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);" (call_expression "memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24)" identifier (argument_list "((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24)" ( (cast_expression "(void *)(local_28 + *(int *)(extraout_EDX + 0x40))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(extraout_EDX + 0x40))" ( (binary_expression "local_28 + *(int *)(extraout_EDX + 0x40)" identifier + (pointer_expression "*(int *)(extraout_EDX + 0x40)" * (cast_expression "(int *)(extraout_EDX + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x40)" ( (binary_expression "extraout_EDX + 0x40" identifier + number_literal) ))))) ))) , identifier , identifier ))) ;) (expression_statement "*(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;" (assignment_expression "*(uint *)(extraout_EDX + 0x3c) = local_28 + local_24" (pointer_expression "*(uint *)(extraout_EDX + 0x3c)" * (cast_expression "(uint *)(extraout_EDX + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x3c)" ( (binary_expression "extraout_EDX + 0x3c" identifier + number_literal) )))) = (binary_expression "local_28 + local_24" identifier + identifier)) ;) (expression_statement "bVar2 = pbVar8[local_24];" (assignment_expression "bVar2 = pbVar8[local_24]" identifier = (subscript_expression "pbVar8[local_24]" identifier [ identifier ])) ;) (expression_statement "uVar7 = (uint)bVar2;" (assignment_expression "uVar7 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }" { (expression_statement "iVar5 = FUN_0003b030();" (assignment_expression "iVar5 = FUN_0003b030()" identifier = (call_expression "FUN_0003b030()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x4c);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x4c)" identifier = (pointer_expression "*(uint *)(extraout_EDX + 0x4c)" * (cast_expression "(uint *)(extraout_EDX + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x4c)" ( (binary_expression "extraout_EDX + 0x4c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" else (compound_statement "{\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" { (expression_statement "*(uint *)(extraout_EDX + 0x4c) = uVar7;" (assignment_expression "*(uint *)(extraout_EDX + 0x4c) = uVar7" (pointer_expression "*(uint *)(extraout_EDX + 0x4c)" * (cast_expression "(uint *)(extraout_EDX + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x4c)" ( (binary_expression "extraout_EDX + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) }))) (expression_statement "pbVar8 = pbVar8 + local_24 + iVar5;" (assignment_expression "pbVar8 = pbVar8 + local_24 + iVar5" identifier = (binary_expression "pbVar8 + local_24 + iVar5" (binary_expression "pbVar8 + local_24" identifier + identifier) + identifier)) ;) (expression_statement "*(undefined4 *)(extraout_EDX + 0x50) = 0;" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x50) = 0" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x50)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x50)" ( (binary_expression "extraout_EDX + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte **)(extraout_EDX + 0x48) = pbVar8;" (assignment_expression "*(byte **)(extraout_EDX + 0x48) = pbVar8" (pointer_expression "*(byte **)(extraout_EDX + 0x48)" * (cast_expression "(byte **)(extraout_EDX + 0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x48)" ( (binary_expression "extraout_EDX + 0x48" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;" if (parenthesized_expression "(((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0))))" ( (binary_expression "((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))" (parenthesized_expression "((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28)))" ( (binary_expression "(int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "*(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" * (cast_expression "(int *)(extraout_EDX + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x2c)" ( (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) )))) - (parenthesized_expression "((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" ( (binary_expression "(int)pbVar8 - *(int *)(extraout_EDX + 0x28)" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(extraout_EDX + 0x28)" * (cast_expression "(int *)(extraout_EDX + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) )))) )) && (parenthesized_expression "((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))" ( (parenthesized_expression "(*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0))" ( (binary_expression "*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)" (binary_expression "*(int *)(extraout_EDX + 0x30) != 0" (pointer_expression "*(int *)(extraout_EDX + 0x30)" * (cast_expression "(int *)(extraout_EDX + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x30)" ( (binary_expression "extraout_EDX + 0x30" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(pbVar8[uVar7 - 1] == 0)" ( (binary_expression "pbVar8[uVar7 - 1] == 0" (subscript_expression "pbVar8[uVar7 - 1]" identifier [ (binary_expression "uVar7 - 1" identifier - number_literal) ]) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_00101910;" goto statement_identifier ;)) })) })) (expression_statement "iVar5 = 0x10b;" (assignment_expression "iVar5 = 0x10b" identifier = number_literal) ;) }))) (labeled_statement "LAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(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    return iVar5;\n  }" { (return_statement "return iVar5;" return identifier ;) }))) comment (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n\nint __regparm3 fts3SegReaderNext(Fts3Table *p,Fts3SegReader *pReader,int bIncr)\n\n{\n  size_t __n;\n  Fts3HashElem *pFVar1;\n  uint uVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  undefined4 in_stack_ffffffc4;\n  int nPrefix;\n  int nSuffix;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (pReader->aDoclist == (char *)0x0) {\n    pbVar8 = (byte *)pReader->aNode;\n  }\n  else {\n    pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist);\n  }\n  if ((pbVar8 == (byte *)0x0) || (pReader->aNode + pReader->nNode <= pbVar8)) {\n    if (pReader->ppNextElem == (Fts3HashElem **)0x0) {\n      fts3SegReaderSetEof(pReader);\n      iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);\n      uVar6 = (uint)pReader->iCurrentBlock;\n      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);\n      uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);\n      iVar9 = iVar3 - *piVar7;\n      if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      pFVar1 = *pReader->ppNextElem;\n      sqlite3_free(pReader->aNode);\n      pReader->aNode = (char *)0x0;\n      if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar3 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);\n    if (iVar3 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);\n    }\n    else {\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);\n    }\n    else {\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))) {\n      uVar6 = pReader->nTermAlloc;\n      if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar3 = 0x10b;\n  }\nLAB_001019a5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment (function_definition "int __regparm3 fts3SegReaderNext(Fts3Table *p,Fts3SegReader *pReader,int bIncr)\n\n{\n  size_t __n;\n  Fts3HashElem *pFVar1;\n  uint uVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  undefined4 in_stack_ffffffc4;\n  int nPrefix;\n  int nSuffix;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (pReader->aDoclist == (char *)0x0) {\n    pbVar8 = (byte *)pReader->aNode;\n  }\n  else {\n    pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist);\n  }\n  if ((pbVar8 == (byte *)0x0) || (pReader->aNode + pReader->nNode <= pbVar8)) {\n    if (pReader->ppNextElem == (Fts3HashElem **)0x0) {\n      fts3SegReaderSetEof(pReader);\n      iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);\n      uVar6 = (uint)pReader->iCurrentBlock;\n      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);\n      uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);\n      iVar9 = iVar3 - *piVar7;\n      if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      pFVar1 = *pReader->ppNextElem;\n      sqlite3_free(pReader->aNode);\n      pReader->aNode = (char *)0x0;\n      if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar3 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);\n    if (iVar3 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);\n    }\n    else {\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);\n    }\n    else {\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))) {\n      uVar6 = pReader->nTermAlloc;\n      if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar3 = 0x10b;\n  }\nLAB_001019a5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "fts3SegReaderNext(Fts3Table *p,Fts3SegReader *pReader,int bIncr)" identifier (parameter_list "(Fts3Table *p,Fts3SegReader *pReader,int bIncr)" ( (parameter_declaration "Fts3Table *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "Fts3SegReader *pReader" type_identifier (pointer_declarator "*pReader" * identifier)) , (parameter_declaration "int bIncr" primitive_type identifier) ))) (compound_statement "{\n  size_t __n;\n  Fts3HashElem *pFVar1;\n  uint uVar2;\n  int iVar3;\n  char *pcVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  undefined4 in_stack_ffffffc4;\n  int nPrefix;\n  int nSuffix;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (pReader->aDoclist == (char *)0x0) {\n    pbVar8 = (byte *)pReader->aNode;\n  }\n  else {\n    pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist);\n  }\n  if ((pbVar8 == (byte *)0x0) || (pReader->aNode + pReader->nNode <= pbVar8)) {\n    if (pReader->ppNextElem == (Fts3HashElem **)0x0) {\n      fts3SegReaderSetEof(pReader);\n      iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);\n      uVar6 = (uint)pReader->iCurrentBlock;\n      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);\n      uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);\n      iVar9 = iVar3 - *piVar7;\n      if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      pFVar1 = *pReader->ppNextElem;\n      sqlite3_free(pReader->aNode);\n      pReader->aNode = (char *)0x0;\n      if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar3 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);\n    if (iVar3 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);\n    }\n    else {\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);\n    }\n    else {\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))) {\n      uVar6 = pReader->nTermAlloc;\n      if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar3 = 0x10b;\n  }\nLAB_001019a5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar3;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "Fts3HashElem *pFVar1;" type_identifier (pointer_declarator "*pFVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 in_stack_ffffffc4;" type_identifier identifier ;) (declaration "int nPrefix;" primitive_type identifier ;) (declaration "int nSuffix;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (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) ))))) ;) (if_statement "if (pReader->aDoclist == (char *)0x0) {\n    pbVar8 = (byte *)pReader->aNode;\n  }\n  else {\n    pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist);\n  }" if (parenthesized_expression "(pReader->aDoclist == (char *)0x0)" ( (binary_expression "pReader->aDoclist == (char *)0x0" (field_expression "pReader->aDoclist" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pbVar8 = (byte *)pReader->aNode;\n  }" { (expression_statement "pbVar8 = (byte *)pReader->aNode;" (assignment_expression "pbVar8 = (byte *)pReader->aNode" identifier = (cast_expression "(byte *)pReader->aNode" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pReader->aNode" identifier -> field_identifier))) ;) }) (else_clause "else {\n    pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist);\n  }" else (compound_statement "{\n    pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist);\n  }" { (expression_statement "pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist);" (assignment_expression "pbVar8 = (byte *)(pReader->aDoclist + pReader->nDoclist)" identifier = (cast_expression "(byte *)(pReader->aDoclist + pReader->nDoclist)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pReader->aDoclist + pReader->nDoclist)" ( (binary_expression "pReader->aDoclist + pReader->nDoclist" (field_expression "pReader->aDoclist" identifier -> field_identifier) + (field_expression "pReader->nDoclist" identifier -> field_identifier)) )))) ;) }))) (if_statement "if ((pbVar8 == (byte *)0x0) || (pReader->aNode + pReader->nNode <= pbVar8)) {\n    if (pReader->ppNextElem == (Fts3HashElem **)0x0) {\n      fts3SegReaderSetEof(pReader);\n      iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);\n      uVar6 = (uint)pReader->iCurrentBlock;\n      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);\n      uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);\n      iVar9 = iVar3 - *piVar7;\n      if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      pFVar1 = *pReader->ppNextElem;\n      sqlite3_free(pReader->aNode);\n      pReader->aNode = (char *)0x0;\n      if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar3 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);\n    if (iVar3 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);\n    }\n    else {\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);\n    }\n    else {\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))) {\n      uVar6 = pReader->nTermAlloc;\n      if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar3 = 0x10b;\n  }" if (parenthesized_expression "((pbVar8 == (byte *)0x0) || (pReader->aNode + pReader->nNode <= pbVar8))" ( (binary_expression "(pbVar8 == (byte *)0x0) || (pReader->aNode + pReader->nNode <= pbVar8)" (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pReader->aNode + pReader->nNode <= pbVar8)" ( (binary_expression "pReader->aNode + pReader->nNode <= pbVar8" (binary_expression "pReader->aNode + pReader->nNode" (field_expression "pReader->aNode" identifier -> field_identifier) + (field_expression "pReader->nNode" identifier -> field_identifier)) <= identifier) ))) )) (compound_statement "{\n    if (pReader->ppNextElem == (Fts3HashElem **)0x0) {\n      fts3SegReaderSetEof(pReader);\n      iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);\n      uVar6 = (uint)pReader->iCurrentBlock;\n      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);\n      uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);\n      iVar9 = iVar3 - *piVar7;\n      if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      pFVar1 = *pReader->ppNextElem;\n      sqlite3_free(pReader->aNode);\n      pReader->aNode = (char *)0x0;\n      if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar3 = 0;\n  }" { (if_statement "if (pReader->ppNextElem == (Fts3HashElem **)0x0) {\n      fts3SegReaderSetEof(pReader);\n      iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);\n      uVar6 = (uint)pReader->iCurrentBlock;\n      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);\n      uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);\n      iVar9 = iVar3 - *piVar7;\n      if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      pFVar1 = *pReader->ppNextElem;\n      sqlite3_free(pReader->aNode);\n      pReader->aNode = (char *)0x0;\n      if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" if (parenthesized_expression "(pReader->ppNextElem == (Fts3HashElem **)0x0)" ( (binary_expression "pReader->ppNextElem == (Fts3HashElem **)0x0" (field_expression "pReader->ppNextElem" identifier -> field_identifier) == (cast_expression "(Fts3HashElem **)0x0" ( (type_descriptor "Fts3HashElem **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      fts3SegReaderSetEof(pReader);\n      iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);\n      uVar6 = (uint)pReader->iCurrentBlock;\n      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);\n      uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);\n      iVar9 = iVar3 - *piVar7;\n      if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }\n    }" { (expression_statement "fts3SegReaderSetEof(pReader);" (call_expression "fts3SegReaderSetEof(pReader)" identifier (argument_list "(pReader)" ( identifier ))) ;) (expression_statement "iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4);" (assignment_expression "iVar3 = *(int *)((int)&pReader->iCurrentBlock + 4)" identifier = (pointer_expression "*(int *)((int)&pReader->iCurrentBlock + 4)" * (cast_expression "(int *)((int)&pReader->iCurrentBlock + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pReader->iCurrentBlock + 4)" ( (binary_expression "(int)&pReader->iCurrentBlock + 4" (cast_expression "(int)&pReader->iCurrentBlock" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pReader->iCurrentBlock" & (field_expression "pReader->iCurrentBlock" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar6 = (uint)pReader->iCurrentBlock;" (assignment_expression "uVar6 = (uint)pReader->iCurrentBlock" identifier = (cast_expression "(uint)pReader->iCurrentBlock" ( (type_descriptor "uint" type_identifier) ) (field_expression "pReader->iCurrentBlock" identifier -> field_identifier))) ;) (expression_statement "piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);" (assignment_expression "piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4)" identifier = (cast_expression "(int *)((int)&pReader->iLeafEndBlock + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pReader->iLeafEndBlock + 4)" ( (binary_expression "(int)&pReader->iLeafEndBlock + 4" (cast_expression "(int)&pReader->iLeafEndBlock" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pReader->iLeafEndBlock" & (field_expression "pReader->iLeafEndBlock" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock);" (assignment_expression "uVar2 = (uint)(uVar6 < (uint)pReader->iLeafEndBlock)" identifier = (call_expression "(uint)(uVar6 < (uint)pReader->iLeafEndBlock)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < (uint)pReader->iLeafEndBlock)" ( (binary_expression "uVar6 < (uint)pReader->iLeafEndBlock" identifier < (cast_expression "(uint)pReader->iLeafEndBlock" ( (type_descriptor "uint" type_identifier) ) (field_expression "pReader->iLeafEndBlock" identifier -> field_identifier))) )))) ;) (expression_statement "iVar9 = iVar3 - *piVar7;" (assignment_expression "iVar9 = iVar3 - *piVar7" identifier = (binary_expression "iVar3 - *piVar7" identifier - (pointer_expression "*piVar7" * identifier))) ;) (if_statement "if ((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0) {\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }" if (parenthesized_expression "((SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0)" ( (binary_expression "(SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)) != (int)(iVar9 - uVar2) < 0" (parenthesized_expression "(SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2))" ( (binary_expression "SBORROW4(iVar3,*piVar7) != SBORROW4(iVar9,uVar2)" (call_expression "SBORROW4(iVar3,*piVar7)" identifier (argument_list "(iVar3,*piVar7)" ( identifier , (pointer_expression "*piVar7" * identifier) ))) != (call_expression "SBORROW4(iVar9,uVar2)" identifier (argument_list "(iVar9,uVar2)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar9 - uVar2) < 0" (cast_expression "(int)(iVar9 - uVar2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar9 - uVar2)" ( (binary_expression "iVar9 - uVar2" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n        piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));\n        *(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);\n        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;\n        iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);\n        if (iVar3 != 0) goto LAB_001019a5;\n        pbVar8 = (byte *)pReader->aNode;\n        goto LAB_001017a6;\n      }" { (expression_statement "piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6));" (assignment_expression "piVar7 = (int *)(iVar3 + (uint)(0xfffffffe < uVar6))" identifier = (cast_expression "(int *)(iVar3 + (uint)(0xfffffffe < uVar6))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (uint)(0xfffffffe < uVar6))" ( (binary_expression "iVar3 + (uint)(0xfffffffe < uVar6)" identifier + (call_expression "(uint)(0xfffffffe < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar6)" ( (binary_expression "0xfffffffe < uVar6" number_literal < identifier) )))) )))) ;) (expression_statement "*(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1);" (assignment_expression "*(char ***)&pReader->iCurrentBlock = (char **)(uVar6 + 1)" (pointer_expression "*(char ***)&pReader->iCurrentBlock" * (cast_expression "(char ***)&pReader->iCurrentBlock" ( (type_descriptor "char ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (pointer_expression "&pReader->iCurrentBlock" & (field_expression "pReader->iCurrentBlock" identifier -> field_identifier)))) = (cast_expression "(char **)(uVar6 + 1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar6 + 1)" ( (binary_expression "uVar6 + 1" identifier + number_literal) )))) ;) (expression_statement "*(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;" (assignment_expression "*(int **)((int)&pReader->iCurrentBlock + 4) = piVar7" (pointer_expression "*(int **)((int)&pReader->iCurrentBlock + 4)" * (cast_expression "(int **)((int)&pReader->iCurrentBlock + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pReader->iCurrentBlock + 4)" ( (binary_expression "(int)&pReader->iCurrentBlock + 4" (cast_expression "(int)&pReader->iCurrentBlock" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pReader->iCurrentBlock" & (field_expression "pReader->iCurrentBlock" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0);" (assignment_expression "iVar3 = sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0)" identifier = (call_expression "sqlite3Fts3ReadBlock\n                          (p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0)" identifier (argument_list "(p,CONCAT44(&pReader->nNode,&pReader->aNode),(char **)(uVar6 + 1),piVar7,\n                           (int *)0x0)" ( identifier , (call_expression "CONCAT44(&pReader->nNode,&pReader->aNode)" identifier (argument_list "(&pReader->nNode,&pReader->aNode)" ( (pointer_expression "&pReader->nNode" & (field_expression "pReader->nNode" identifier -> field_identifier)) , (pointer_expression "&pReader->aNode" & (field_expression "pReader->aNode" identifier -> field_identifier)) ))) , (cast_expression "(char **)(uVar6 + 1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar6 + 1)" ( (binary_expression "uVar6 + 1" identifier + number_literal) ))) , identifier , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (expression_statement "pbVar8 = (byte *)pReader->aNode;" (assignment_expression "pbVar8 = (byte *)pReader->aNode" identifier = (cast_expression "(byte *)pReader->aNode" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pReader->aNode" identifier -> field_identifier))) ;) (goto_statement "goto LAB_001017a6;" goto statement_identifier ;) })) }) (else_clause "else {\n      pFVar1 = *pReader->ppNextElem;\n      sqlite3_free(pReader->aNode);\n      pReader->aNode = (char *)0x0;\n      if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" else (compound_statement "{\n      pFVar1 = *pReader->ppNextElem;\n      sqlite3_free(pReader->aNode);\n      pReader->aNode = (char *)0x0;\n      if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" { (expression_statement "pFVar1 = *pReader->ppNextElem;" (assignment_expression "pFVar1 = *pReader->ppNextElem" identifier = (pointer_expression "*pReader->ppNextElem" * (field_expression "pReader->ppNextElem" identifier -> field_identifier))) ;) (expression_statement "sqlite3_free(pReader->aNode);" (call_expression "sqlite3_free(pReader->aNode)" identifier (argument_list "(pReader->aNode)" ( (field_expression "pReader->aNode" identifier -> field_identifier) ))) ;) (expression_statement "pReader->aNode = (char *)0x0;" (assignment_expression "pReader->aNode = (char *)0x0" (field_expression "pReader->aNode" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pFVar1 != (Fts3HashElem *)0x0) {\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }" if (parenthesized_expression "(pFVar1 != (Fts3HashElem *)0x0)" ( (binary_expression "pFVar1 != (Fts3HashElem *)0x0" identifier != (cast_expression "(Fts3HashElem *)0x0" ( (type_descriptor "Fts3HashElem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar7 = (int *)pFVar1->data;\n        __n = *piVar7 + 1;\n        pReader->zTerm = (char *)pFVar1->pKey;\n        pReader->nTerm = pFVar1->nKey;\n        pcVar4 = (char *)sqlite3_malloc(__n);\n        if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }" { (expression_statement "piVar7 = (int *)pFVar1->data;" (assignment_expression "piVar7 = (int *)pFVar1->data" identifier = (cast_expression "(int *)pFVar1->data" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar1->data" identifier -> field_identifier))) ;) (expression_statement "__n = *piVar7 + 1;" (assignment_expression "__n = *piVar7 + 1" identifier = (binary_expression "*piVar7 + 1" (pointer_expression "*piVar7" * identifier) + number_literal)) ;) (expression_statement "pReader->zTerm = (char *)pFVar1->pKey;" (assignment_expression "pReader->zTerm = (char *)pFVar1->pKey" (field_expression "pReader->zTerm" identifier -> field_identifier) = (cast_expression "(char *)pFVar1->pKey" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pFVar1->pKey" identifier -> field_identifier))) ;) (expression_statement "pReader->nTerm = pFVar1->nKey;" (assignment_expression "pReader->nTerm = pFVar1->nKey" (field_expression "pReader->nTerm" identifier -> field_identifier) = (field_expression "pFVar1->nKey" identifier -> field_identifier)) ;) (expression_statement "pcVar4 = (char *)sqlite3_malloc(__n);" (assignment_expression "pcVar4 = (char *)sqlite3_malloc(__n)" identifier = (cast_expression "(char *)sqlite3_malloc(__n)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_malloc(__n)" identifier (argument_list "(__n)" ( identifier ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(pcVar4,(void *)piVar7[1],__n);\n          pReader->ppNextElem = pReader->ppNextElem + 1;\n          pReader->nDoclist = __n;\n          iVar3 = 0;\n          pReader->nNode = __n;\n          pReader->aDoclist = pcVar4;\n          pReader->aNode = pcVar4;\n          goto LAB_001019a5;\n        }" { (expression_statement "memcpy(pcVar4,(void *)piVar7[1],__n);" (call_expression "memcpy(pcVar4,(void *)piVar7[1],__n)" identifier (argument_list "(pcVar4,(void *)piVar7[1],__n)" ( identifier , (cast_expression "(void *)piVar7[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[1]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "pReader->ppNextElem = pReader->ppNextElem + 1;" (assignment_expression "pReader->ppNextElem = pReader->ppNextElem + 1" (field_expression "pReader->ppNextElem" identifier -> field_identifier) = (binary_expression "pReader->ppNextElem + 1" (field_expression "pReader->ppNextElem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pReader->nDoclist = __n;" (assignment_expression "pReader->nDoclist = __n" (field_expression "pReader->nDoclist" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "pReader->nNode = __n;" (assignment_expression "pReader->nNode = __n" (field_expression "pReader->nNode" identifier -> field_identifier) = identifier) ;) (expression_statement "pReader->aDoclist = pcVar4;" (assignment_expression "pReader->aDoclist = pcVar4" (field_expression "pReader->aDoclist" identifier -> field_identifier) = identifier) ;) (expression_statement "pReader->aNode = pcVar4;" (assignment_expression "pReader->aNode = pcVar4" (field_expression "pReader->aNode" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;) })) (goto_statement "goto LAB_00101a30;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00101910:\n    iVar3 = 0;" statement_identifier : (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_001017a6:\n    iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);\n    if (iVar3 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);\n    }\n    else {\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);\n    }\n    else {\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))) {\n      uVar6 = pReader->nTermAlloc;\n      if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar3 = 0x10b;\n  }" else (compound_statement "{\nLAB_001017a6:\n    iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);\n    if (iVar3 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);\n    }\n    else {\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);\n    }\n    else {\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }\n    pbVar8 = pbVar8 + iVar3;\n    if ((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))) {\n      uVar6 = pReader->nTermAlloc;\n      if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar3 = 0x10b;\n  }" { (labeled_statement "LAB_001017a6:\n    iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);" statement_identifier : (expression_statement "iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14);" (assignment_expression "iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,0x14)" identifier = (call_expression "fts3SegReaderRequire(pReader,(char *)pbVar8,0x14)" identifier (argument_list "(pReader,(char *)pbVar8,0x14)" ( identifier , (cast_expression "(char *)pbVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;)) (if_statement "if (iVar3 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (if_statement "if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);\n    }\n    else {\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }" if (parenthesized_expression "((char)*pbVar8 < '\0')" ( (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar8" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);\n    }" { (expression_statement "iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix);" (assignment_expression "iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix)" identifier = (call_expression "sqlite3Fts3GetVarint32((char *)pbVar8,&nPrefix)" identifier (argument_list "((char *)pbVar8,&nPrefix)" ( (cast_expression "(char *)pbVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&nPrefix" & identifier) )))) ;) }) (else_clause "else {\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }" else (compound_statement "{\n      iVar3 = 1;\n      nPrefix = (uint)*pbVar8;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "nPrefix = (uint)*pbVar8;" (assignment_expression "nPrefix = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }))) (expression_statement "pbVar8 = pbVar8 + iVar3;" (assignment_expression "pbVar8 = pbVar8 + iVar3" identifier = (binary_expression "pbVar8 + iVar3" identifier + identifier)) ;) (if_statement "if ((char)*pbVar8 < '\0') {\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);\n    }\n    else {\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }" if (parenthesized_expression "((char)*pbVar8 < '\0')" ( (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar8" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);\n    }" { (expression_statement "iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix);" (assignment_expression "iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix)" identifier = (call_expression "sqlite3Fts3GetVarint32((char *)pbVar8,&nSuffix)" identifier (argument_list "((char *)pbVar8,&nSuffix)" ( (cast_expression "(char *)pbVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&nSuffix" & identifier) )))) ;) }) (else_clause "else {\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }" else (compound_statement "{\n      nSuffix = (int)*pbVar8;\n      iVar3 = 1;\n    }" { (expression_statement "nSuffix = (int)*pbVar8;" (assignment_expression "nSuffix = (int)*pbVar8" identifier = (cast_expression "(int)*pbVar8" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) }))) (expression_statement "pbVar8 = pbVar8 + iVar3;" (assignment_expression "pbVar8 = pbVar8 + iVar3" identifier = (binary_expression "pbVar8 + iVar3" identifier + identifier)) ;) (if_statement "if ((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))) {\n      uVar6 = pReader->nTermAlloc;\n      if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }\n    }" if (parenthesized_expression "((0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8))))" ( (binary_expression "(0 < nSuffix) && (nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))" (parenthesized_expression "(0 < nSuffix)" ( (binary_expression "0 < nSuffix" number_literal < identifier) )) && (parenthesized_expression "(nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8)))" ( (binary_expression "nSuffix <= (int)(pReader->aNode + (pReader->nNode - (int)pbVar8))" identifier <= (cast_expression "(int)(pReader->aNode + (pReader->nNode - (int)pbVar8))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pReader->aNode + (pReader->nNode - (int)pbVar8))" ( (binary_expression "pReader->aNode + (pReader->nNode - (int)pbVar8)" (field_expression "pReader->aNode" identifier -> field_identifier) + (parenthesized_expression "(pReader->nNode - (int)pbVar8)" ( (binary_expression "pReader->nNode - (int)pbVar8" (field_expression "pReader->nNode" identifier -> field_identifier) - (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ))) )) (compound_statement "{\n      uVar6 = pReader->nTermAlloc;\n      if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }\n    }" { (expression_statement "uVar6 = pReader->nTermAlloc;" (assignment_expression "uVar6 = pReader->nTermAlloc" identifier = (field_expression "pReader->nTermAlloc" identifier -> field_identifier)) ;) (if_statement "if (nPrefix <= (int)uVar6) {\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }" if (parenthesized_expression "(nPrefix <= (int)uVar6)" ( (binary_expression "nPrefix <= (int)uVar6" identifier <= (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar5 = nSuffix + nPrefix;\n        iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);\n        uVar2 = (uint)(uVar6 < uVar5);\n        iVar3 = ((int)uVar6 >> 0x1f) - iVar9;\n        if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);\n        if (iVar3 != 0) goto LAB_001019a5;\n        memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);\n        pbVar8 = pbVar8 + nSuffix;\n        pReader->nTerm = nPrefix + nSuffix;\n        uVar6 = (uint)*pbVar8;\n        if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }\n        pbVar8 = pbVar8 + iVar3;\n        pReader->pOffsetList = (char *)0x0;\n        pReader->aDoclist = (char *)pbVar8;\n        if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;\n      }" { (expression_statement "uVar5 = nSuffix + nPrefix;" (assignment_expression "uVar5 = nSuffix + nPrefix" identifier = (binary_expression "nSuffix + nPrefix" identifier + identifier)) ;) (expression_statement "iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix);" (assignment_expression "iVar9 = (nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix)" identifier = (binary_expression "(nSuffix >> 0x1f) + (nPrefix >> 0x1f) + (uint)CARRY4(nSuffix,nPrefix)" (binary_expression "(nSuffix >> 0x1f) + (nPrefix >> 0x1f)" (parenthesized_expression "(nSuffix >> 0x1f)" ( (binary_expression "nSuffix >> 0x1f" identifier >> number_literal) )) + (parenthesized_expression "(nPrefix >> 0x1f)" ( (binary_expression "nPrefix >> 0x1f" identifier >> number_literal) ))) + (cast_expression "(uint)CARRY4(nSuffix,nPrefix)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(nSuffix,nPrefix)" identifier (argument_list "(nSuffix,nPrefix)" ( identifier , identifier )))))) ;) (expression_statement "uVar2 = (uint)(uVar6 < uVar5);" (assignment_expression "uVar2 = (uint)(uVar6 < uVar5)" identifier = (call_expression "(uint)(uVar6 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) )))) ;) (expression_statement "iVar3 = ((int)uVar6 >> 0x1f) - iVar9;" (assignment_expression "iVar3 = ((int)uVar6 >> 0x1f) - iVar9" identifier = (binary_expression "((int)uVar6 >> 0x1f) - iVar9" (parenthesized_expression "((int)uVar6 >> 0x1f)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - identifier)) ;) (if_statement "if ((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0) {\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }" if (parenthesized_expression "((SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0)" ( (binary_expression "(SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)) !=\n            (int)(iVar3 - uVar2) < 0" (parenthesized_expression "(SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2))" ( (binary_expression "SBORROW4((int)uVar6 >> 0x1f,iVar9) != SBORROW4(iVar3,uVar2)" (call_expression "SBORROW4((int)uVar6 >> 0x1f,iVar9)" identifier (argument_list "((int)uVar6 >> 0x1f,iVar9)" ( (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier ))) != (call_expression "SBORROW4(iVar3,uVar2)" identifier (argument_list "(iVar3,uVar2)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar3 - uVar2) < 0" (cast_expression "(int)(iVar3 - uVar2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar3 - uVar2)" ( (binary_expression "iVar3 - uVar2" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n          pcVar4 = pReader->zTerm;\n          iVar3 = sqlite3_initialize();\n          if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar3 = 7;\n          goto LAB_001019a5;\n        }" { (expression_statement "pcVar4 = pReader->zTerm;" (assignment_expression "pcVar4 = pReader->zTerm" identifier = (field_expression "pReader->zTerm" identifier -> field_identifier)) ;) (expression_statement "iVar3 = sqlite3_initialize();" (assignment_expression "iVar3 = sqlite3_initialize()" identifier = (call_expression "sqlite3_initialize()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));\n            if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }\n          }" { (expression_statement "pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4));" (assignment_expression "pcVar4 = (char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4))" identifier = (cast_expression "(char *)sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Realloc(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4))" identifier (argument_list "(pcVar4,CONCAT44(pbVar8,in_stack_ffffffc4))" ( identifier , (call_expression "CONCAT44(pbVar8,in_stack_ffffffc4)" identifier (argument_list "(pbVar8,in_stack_ffffffc4)" ( identifier , identifier ))) ))))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pReader->zTerm = pcVar4;\n              pReader->nTermAlloc = uVar5 * 2;\n              goto LAB_00101888;\n            }" { (expression_statement "pReader->zTerm = pcVar4;" (assignment_expression "pReader->zTerm = pcVar4" (field_expression "pReader->zTerm" identifier -> field_identifier) = identifier) ;) (expression_statement "pReader->nTermAlloc = uVar5 * 2;" (assignment_expression "pReader->nTermAlloc = uVar5 * 2" (field_expression "pReader->nTermAlloc" identifier -> field_identifier) = (binary_expression "uVar5 * 2" identifier * number_literal)) ;) (goto_statement "goto LAB_00101888;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00101a30:\n          iVar3 = 7;" statement_identifier : (expression_statement "iVar3 = 7;" (assignment_expression "iVar3 = 7" identifier = number_literal) ;)) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;) })) (labeled_statement "LAB_00101888:\n        iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);" statement_identifier : (expression_statement "iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10);" (assignment_expression "iVar3 = fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10)" identifier = (call_expression "fts3SegReaderRequire(pReader,(char *)pbVar8,nSuffix + 10)" identifier (argument_list "(pReader,(char *)pbVar8,nSuffix + 10)" ( identifier , (cast_expression "(char *)pbVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "nSuffix + 10" identifier + number_literal) )))) ;)) (if_statement "if (iVar3 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (expression_statement "memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix);" (call_expression "memcpy(pReader->zTerm + nPrefix,pbVar8,nSuffix)" identifier (argument_list "(pReader->zTerm + nPrefix,pbVar8,nSuffix)" ( (binary_expression "pReader->zTerm + nPrefix" (field_expression "pReader->zTerm" identifier -> field_identifier) + identifier) , identifier , identifier ))) ;) (expression_statement "pbVar8 = pbVar8 + nSuffix;" (assignment_expression "pbVar8 = pbVar8 + nSuffix" identifier = (binary_expression "pbVar8 + nSuffix" identifier + identifier)) ;) (expression_statement "pReader->nTerm = nPrefix + nSuffix;" (assignment_expression "pReader->nTerm = nPrefix + nSuffix" (field_expression "pReader->nTerm" identifier -> field_identifier) = (binary_expression "nPrefix + nSuffix" identifier + identifier)) ;) (expression_statement "uVar6 = (uint)*pbVar8;" (assignment_expression "uVar6 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((char)*pbVar8 < '\0') {\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }\n        else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }" if (parenthesized_expression "((char)*pbVar8 < '\0')" ( (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar8" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);\n          uVar6 = pReader->nDoclist;\n        }" { (expression_statement "iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist);" (assignment_expression "iVar3 = sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist)" identifier = (call_expression "sqlite3Fts3GetVarint32((char *)pbVar8,&pReader->nDoclist)" identifier (argument_list "((char *)pbVar8,&pReader->nDoclist)" ( (cast_expression "(char *)pbVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&pReader->nDoclist" & (field_expression "pReader->nDoclist" identifier -> field_identifier)) )))) ;) (expression_statement "uVar6 = pReader->nDoclist;" (assignment_expression "uVar6 = pReader->nDoclist" identifier = (field_expression "pReader->nDoclist" identifier -> field_identifier)) ;) }) (else_clause "else {\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }" else (compound_statement "{\n          pReader->nDoclist = uVar6;\n          iVar3 = 1;\n        }" { (expression_statement "pReader->nDoclist = uVar6;" (assignment_expression "pReader->nDoclist = uVar6" (field_expression "pReader->nDoclist" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) }))) (expression_statement "pbVar8 = pbVar8 + iVar3;" (assignment_expression "pbVar8 = pbVar8 + iVar3" identifier = (binary_expression "pbVar8 + iVar3" identifier + identifier)) ;) (expression_statement "pReader->pOffsetList = (char *)0x0;" (assignment_expression "pReader->pOffsetList = (char *)0x0" (field_expression "pReader->pOffsetList" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pReader->aDoclist = (char *)pbVar8;" (assignment_expression "pReader->aDoclist = (char *)pbVar8" (field_expression "pReader->aDoclist" identifier -> field_identifier) = (cast_expression "(char *)pbVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))) goto LAB_00101910;" if (parenthesized_expression "(((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0))))" ( (binary_expression "((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)) &&\n           ((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))" (parenthesized_expression "((int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode))" ( (binary_expression "(int)uVar6 <= pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "pReader->nNode - ((int)pbVar8 - (int)pReader->aNode)" (field_expression "pReader->nNode" identifier -> field_identifier) - (parenthesized_expression "((int)pbVar8 - (int)pReader->aNode)" ( (binary_expression "(int)pbVar8 - (int)pReader->aNode" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pReader->aNode" ( (type_descriptor "int" primitive_type) ) (field_expression "pReader->aNode" identifier -> field_identifier))) )))) )) && (parenthesized_expression "((pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)))" ( (parenthesized_expression "(pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0))" ( (binary_expression "pReader->nPopulate != 0 || (pbVar8[uVar6 - 1] == 0)" (binary_expression "pReader->nPopulate != 0" (field_expression "pReader->nPopulate" identifier -> field_identifier) != number_literal) || (parenthesized_expression "(pbVar8[uVar6 - 1] == 0)" ( (binary_expression "pbVar8[uVar6 - 1] == 0" (subscript_expression "pbVar8[uVar6 - 1]" identifier [ (binary_expression "uVar6 - 1" identifier - number_literal) ]) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_00101910;" goto statement_identifier ;)) })) })) (expression_statement "iVar3 = 0x10b;" (assignment_expression "iVar3 = 0x10b" identifier = number_literal) ;) }))) (labeled_statement "LAB_001019a5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar3;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar3;\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    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int FUN_00101760(void)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  void *__dest;\n  int extraout_EDX;\n  uint uVar7;\n  byte *pbVar8;\n  int in_GS_OFFSET;\n  uint local_28;\n  size_t local_24;\n  \n  FUN_00036ac9();\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }\n  if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }\nLAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    \n  FUN_00116110();\n}\n\n" (function_definition "int FUN_00101760(void)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  void *__dest;\n  int extraout_EDX;\n  uint uVar7;\n  byte *pbVar8;\n  int in_GS_OFFSET;\n  uint local_28;\n  size_t local_24;\n  \n  FUN_00036ac9();\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }\n  if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }\nLAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    \n  FUN_00116110();\n}" primitive_type (function_declarator "FUN_00101760(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  void *__dest;\n  int extraout_EDX;\n  uint uVar7;\n  byte *pbVar8;\n  int in_GS_OFFSET;\n  uint local_28;\n  size_t local_24;\n  \n  FUN_00036ac9();\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }\n  if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }\nLAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    \n  FUN_00116110();\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "size_t local_24;" primitive_type identifier ;) (expression_statement "FUN_00036ac9();" (call_expression "FUN_00036ac9()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(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) ))))) ;) (if_statement "if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" if (parenthesized_expression "(*(int *)(extraout_EDX + 0x48) == 0)" ( (binary_expression "*(int *)(extraout_EDX + 0x48) == 0" (pointer_expression "*(int *)(extraout_EDX + 0x48)" * (cast_expression "(int *)(extraout_EDX + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x48)" ( (binary_expression "extraout_EDX + 0x48" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }" { (expression_statement "pbVar8 = *(byte **)(extraout_EDX + 0x28);" (assignment_expression "pbVar8 = *(byte **)(extraout_EDX + 0x28)" identifier = (pointer_expression "*(byte **)(extraout_EDX + 0x28)" * (cast_expression "(byte **)(extraout_EDX + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" else (compound_statement "{\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" { (expression_statement "pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));" (assignment_expression "pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" identifier = (cast_expression "(byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" ( (binary_expression "*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c)" (pointer_expression "*(int *)(extraout_EDX + 0x48)" * (cast_expression "(int *)(extraout_EDX + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x48)" ( (binary_expression "extraout_EDX + 0x48" identifier + number_literal) )))) + (pointer_expression "*(int *)(extraout_EDX + 0x4c)" * (cast_expression "(int *)(extraout_EDX + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x4c)" ( (binary_expression "extraout_EDX + 0x4c" identifier + number_literal) ))))) )))) ;) }))) (if_statement "if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" if (parenthesized_expression "((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8))" ( (binary_expression "(pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)" (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)" ( (binary_expression "(byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8" (cast_expression "(byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" ( (binary_expression "*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" * (cast_expression "(int *)(extraout_EDX + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x2c)" ( (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) )))) + (pointer_expression "*(int *)(extraout_EDX + 0x28)" * (cast_expression "(int *)(extraout_EDX + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) ))) <= identifier) ))) )) (compound_statement "{\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }" { (if_statement "if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" if (parenthesized_expression "(*(int **)(extraout_EDX + 0x38) == (int *)0x0)" ( (binary_expression "*(int **)(extraout_EDX + 0x38) == (int *)0x0" (pointer_expression "*(int **)(extraout_EDX + 0x38)" * (cast_expression "(int **)(extraout_EDX + 0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x38)" ( (binary_expression "extraout_EDX + 0x38" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }" { (expression_statement "FUN_000aad90();" (call_expression "FUN_000aad90()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = *(int *)(extraout_EDX + 0x24);" (assignment_expression "iVar5 = *(int *)(extraout_EDX + 0x24)" identifier = (pointer_expression "*(int *)(extraout_EDX + 0x24)" * (cast_expression "(int *)(extraout_EDX + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x24)" ( (binary_expression "extraout_EDX + 0x24" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x20);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x20)" identifier = (pointer_expression "*(uint *)(extraout_EDX + 0x20)" * (cast_expression "(uint *)(extraout_EDX + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x20)" ( (binary_expression "extraout_EDX + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));" (assignment_expression "uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10))" identifier = (call_expression "(uint)(uVar7 < *(uint *)(extraout_EDX + 0x10))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < *(uint *)(extraout_EDX + 0x10))" ( (binary_expression "uVar7 < *(uint *)(extraout_EDX + 0x10)" identifier < (pointer_expression "*(uint *)(extraout_EDX + 0x10)" * (cast_expression "(uint *)(extraout_EDX + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x10)" ( (binary_expression "extraout_EDX + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);" (assignment_expression "iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14)" identifier = (binary_expression "iVar5 - *(int *)(extraout_EDX + 0x14)" identifier - (pointer_expression "*(int *)(extraout_EDX + 0x14)" * (cast_expression "(int *)(extraout_EDX + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x14)" ( (binary_expression "extraout_EDX + 0x14" identifier + number_literal) )))))) ;) (if_statement "if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }" if (parenthesized_expression "((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0)" ( (binary_expression "(SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0" (parenthesized_expression "(SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4))" ( (binary_expression "SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)" (call_expression "SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14))" identifier (argument_list "(iVar5,*(int *)(extraout_EDX + 0x14))" ( identifier , (pointer_expression "*(int *)(extraout_EDX + 0x14)" * (cast_expression "(int *)(extraout_EDX + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x14)" ( (binary_expression "extraout_EDX + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar6,uVar4)" identifier (argument_list "(iVar6,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar6 - uVar4) < 0" (cast_expression "(int)(iVar6 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 - uVar4)" ( (binary_expression "iVar6 - uVar4" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }" { (expression_statement "*(uint *)(extraout_EDX + 0x20) = uVar7 + 1;" (assignment_expression "*(uint *)(extraout_EDX + 0x20) = uVar7 + 1" (pointer_expression "*(uint *)(extraout_EDX + 0x20)" * (cast_expression "(uint *)(extraout_EDX + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x20)" ( (binary_expression "extraout_EDX + 0x20" identifier + number_literal) )))) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);" (assignment_expression "*(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7)" (pointer_expression "*(uint *)(extraout_EDX + 0x24)" * (cast_expression "(uint *)(extraout_EDX + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x24)" ( (binary_expression "extraout_EDX + 0x24" identifier + number_literal) )))) = (binary_expression "iVar5 + (uint)(0xfffffffe < uVar7)" identifier + (call_expression "(uint)(0xfffffffe < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar7)" ( (binary_expression "0xfffffffe < uVar7" number_literal < identifier) ))))) ;) (expression_statement "iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);" (assignment_expression "iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" identifier = (call_expression "FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" identifier (argument_list "(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) , (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (expression_statement "pbVar8 = *(byte **)(extraout_EDX + 0x28);" (assignment_expression "pbVar8 = *(byte **)(extraout_EDX + 0x28)" identifier = (pointer_expression "*(byte **)(extraout_EDX + 0x28)" * (cast_expression "(byte **)(extraout_EDX + 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_001017a6;" goto statement_identifier ;) })) }) (else_clause "else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" else (compound_statement "{\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" { (expression_statement "iVar5 = **(int **)(extraout_EDX + 0x38);" (assignment_expression "iVar5 = **(int **)(extraout_EDX + 0x38)" identifier = (pointer_expression "**(int **)(extraout_EDX + 0x38)" * (pointer_expression "*(int **)(extraout_EDX + 0x38)" * (cast_expression "(int **)(extraout_EDX + 0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x38)" ( (binary_expression "extraout_EDX + 0x38" identifier + number_literal) )))))) ;) (expression_statement "FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));" (call_expression "FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28))" identifier (argument_list "(*(undefined4 *)(extraout_EDX + 0x28))" ( (pointer_expression "*(undefined4 *)(extraout_EDX + 0x28)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(extraout_EDX + 0x28) = 0;" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x28) = 0" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x28)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }" { (expression_statement "piVar3 = *(int **)(iVar5 + 8);" (assignment_expression "piVar3 = *(int **)(iVar5 + 8)" identifier = (pointer_expression "*(int **)(iVar5 + 8)" * (cast_expression "(int **)(iVar5 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "__n = *piVar3 + 1;" (assignment_expression "__n = *piVar3 + 1" identifier = (binary_expression "*piVar3 + 1" (pointer_expression "*piVar3" * identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc)" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x40)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x40)" ( (binary_expression "extraout_EDX + 0x40" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" * (cast_expression "(undefined4 *)(iVar5 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10)" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x3c)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x3c)" ( (binary_expression "extraout_EDX + 0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" * (cast_expression "(undefined4 *)(iVar5 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "__dest = (void *)FUN_0005bfa0(__n);" (assignment_expression "__dest = (void *)FUN_0005bfa0(__n)" identifier = (cast_expression "(void *)FUN_0005bfa0(__n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005bfa0(__n)" identifier (argument_list "(__n)" ( identifier ))))) ;) (if_statement "if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\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          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }" { (expression_statement "memcpy(__dest,(void *)piVar3[1],__n);" (call_expression "memcpy(__dest,(void *)piVar3[1],__n)" identifier (argument_list "(__dest,(void *)piVar3[1],__n)" ( identifier , (cast_expression "(void *)piVar3[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[1]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "*(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;" (assignment_expression "*(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4" (pointer_expression "*(int *)(extraout_EDX + 0x38)" * (cast_expression "(int *)(extraout_EDX + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x38)" ( (binary_expression "extraout_EDX + 0x38" identifier + number_literal) )))) = (binary_expression "*(int *)(extraout_EDX + 0x38) + 4" (pointer_expression "*(int *)(extraout_EDX + 0x38)" * (cast_expression "(int *)(extraout_EDX + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x38)" ( (binary_expression "extraout_EDX + 0x38" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(size_t *)(extraout_EDX + 0x4c) = __n;" (assignment_expression "*(size_t *)(extraout_EDX + 0x4c) = __n" (pointer_expression "*(size_t *)(extraout_EDX + 0x4c)" * (cast_expression "(size_t *)(extraout_EDX + 0x4c)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x4c)" ( (binary_expression "extraout_EDX + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "*(size_t *)(extraout_EDX + 0x2c) = __n;" (assignment_expression "*(size_t *)(extraout_EDX + 0x2c) = __n" (pointer_expression "*(size_t *)(extraout_EDX + 0x2c)" * (cast_expression "(size_t *)(extraout_EDX + 0x2c)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x2c)" ( (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(void **)(extraout_EDX + 0x48) = __dest;" (assignment_expression "*(void **)(extraout_EDX + 0x48) = __dest" (pointer_expression "*(void **)(extraout_EDX + 0x48)" * (cast_expression "(void **)(extraout_EDX + 0x48)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x48)" ( (binary_expression "extraout_EDX + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(void **)(extraout_EDX + 0x28) = __dest;" (assignment_expression "*(void **)(extraout_EDX + 0x28) = __dest" (pointer_expression "*(void **)(extraout_EDX + 0x28)" * (cast_expression "(void **)(extraout_EDX + 0x28)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;) })) (goto_statement "goto LAB_00101a30;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00101910:\n    iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" else (compound_statement "{\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" { (labeled_statement "LAB_001017a6:\n    iVar5 = FUN_000ab570();" statement_identifier : (expression_statement "iVar5 = FUN_000ab570();" (assignment_expression "iVar5 = FUN_000ab570()" identifier = (call_expression "FUN_000ab570()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (if_statement "if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" if (parenthesized_expression "((char)*pbVar8 < '\0')" ( (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar8" * identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar5 = FUN_0003b030();\n    }" { (expression_statement "iVar5 = FUN_0003b030();" (assignment_expression "iVar5 = FUN_0003b030()" identifier = (call_expression "FUN_0003b030()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" else (compound_statement "{\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (expression_statement "local_28 = (uint)*pbVar8;" (assignment_expression "local_28 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }))) (expression_statement "bVar2 = pbVar8[iVar5];" (assignment_expression "bVar2 = pbVar8[iVar5]" identifier = (subscript_expression "pbVar8[iVar5]" identifier [ identifier ])) ;) (if_statement "if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar6 = FUN_0003b030();\n    }" { (expression_statement "iVar6 = FUN_0003b030();" (assignment_expression "iVar6 = FUN_0003b030()" identifier = (call_expression "FUN_0003b030()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" else (compound_statement "{\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" { (expression_statement "local_24 = (size_t)bVar2;" (assignment_expression "local_24 = (size_t)bVar2" identifier = (cast_expression "(size_t)bVar2" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) }))) (expression_statement "pbVar8 = pbVar8 + iVar5 + iVar6;" (assignment_expression "pbVar8 = pbVar8 + iVar5 + iVar6" identifier = (binary_expression "pbVar8 + iVar5 + iVar6" (binary_expression "pbVar8 + iVar5" identifier + identifier) + identifier)) ;) (if_statement "if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }" if (parenthesized_expression "((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8))" ( (binary_expression "(0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)" (parenthesized_expression "(0 < (int)local_24)" ( (binary_expression "0 < (int)local_24" number_literal < (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)" ( (binary_expression "(int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8" (parenthesized_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" ( (binary_expression "*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" * (cast_expression "(int *)(extraout_EDX + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x2c)" ( (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) )))) + (pointer_expression "*(int *)(extraout_EDX + 0x28)" * (cast_expression "(int *)(extraout_EDX + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) )) - (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }" { (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x44);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x44)" identifier = (pointer_expression "*(uint *)(extraout_EDX + 0x44)" * (cast_expression "(uint *)(extraout_EDX + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x44)" ( (binary_expression "extraout_EDX + 0x44" identifier + number_literal) ))))) ;) (if_statement "if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }" if (parenthesized_expression "((int)local_28 <= (int)uVar7)" ( (binary_expression "(int)local_28 <= (int)uVar7" (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }" { (expression_statement "iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);" (assignment_expression "iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28)" identifier = (binary_expression "((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28)" (binary_expression "((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f)" (parenthesized_expression "((int)local_24 >> 0x1f)" ( (binary_expression "(int)local_24 >> 0x1f" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (parenthesized_expression "((int)local_28 >> 0x1f)" ( (binary_expression "(int)local_28 >> 0x1f" (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(local_24,local_28)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_24,local_28)" identifier (argument_list "(local_24,local_28)" ( identifier , identifier )))))) ;) (expression_statement "uVar4 = (uint)(uVar7 < local_24 + local_28);" (assignment_expression "uVar4 = (uint)(uVar7 < local_24 + local_28)" identifier = (call_expression "(uint)(uVar7 < local_24 + local_28)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < local_24 + local_28)" ( (binary_expression "uVar7 < local_24 + local_28" identifier < (binary_expression "local_24 + local_28" identifier + identifier)) )))) ;) (expression_statement "iVar5 = ((int)uVar7 >> 0x1f) - iVar6;" (assignment_expression "iVar5 = ((int)uVar7 >> 0x1f) - iVar6" identifier = (binary_expression "((int)uVar7 >> 0x1f) - iVar6" (parenthesized_expression "((int)uVar7 >> 0x1f)" ( (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - identifier)) ;) (if_statement "if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }" if (parenthesized_expression "((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0)" ( (binary_expression "(SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0" (parenthesized_expression "(SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4))" ( (binary_expression "SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)" (call_expression "SBORROW4((int)uVar7 >> 0x1f,iVar6)" identifier (argument_list "((int)uVar7 >> 0x1f,iVar6)" ( (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier ))) != (call_expression "SBORROW4(iVar5,uVar4)" identifier (argument_list "(iVar5,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar5 - uVar4) < 0" (cast_expression "(int)(iVar5 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar5 - uVar4)" ( (binary_expression "iVar5 - uVar4" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }" { (expression_statement "iVar5 = FUN_0005b490();" (assignment_expression "iVar5 = FUN_0005b490()" identifier = (call_expression "FUN_0005b490()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }" { (expression_statement "iVar5 = FUN_00044180();" (assignment_expression "iVar5 = FUN_00044180()" identifier = (call_expression "FUN_00044180()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }" { (expression_statement "*(int *)(extraout_EDX + 0x40) = iVar5;" (assignment_expression "*(int *)(extraout_EDX + 0x40) = iVar5" (pointer_expression "*(int *)(extraout_EDX + 0x40)" * (cast_expression "(int *)(extraout_EDX + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x40)" ( (binary_expression "extraout_EDX + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;" (assignment_expression "*(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2" (pointer_expression "*(size_t *)(extraout_EDX + 0x44)" * (cast_expression "(size_t *)(extraout_EDX + 0x44)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x44)" ( (binary_expression "extraout_EDX + 0x44" identifier + number_literal) )))) = (binary_expression "(local_24 + local_28) * 2" (parenthesized_expression "(local_24 + local_28)" ( (binary_expression "local_24 + local_28" identifier + identifier) )) * number_literal)) ;) (goto_statement "goto LAB_00101888;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00101a30:\n          iVar5 = 7;" statement_identifier : (expression_statement "iVar5 = 7;" (assignment_expression "iVar5 = 7" identifier = number_literal) ;)) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;) })) (labeled_statement "LAB_00101888:\n        iVar5 = FUN_000ab570();" statement_identifier : (expression_statement "iVar5 = FUN_000ab570();" (assignment_expression "iVar5 = FUN_000ab570()" identifier = (call_expression "FUN_000ab570()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001019a5;" goto statement_identifier ;)) (expression_statement "memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);" (call_expression "memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24)" identifier (argument_list "((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24)" ( (cast_expression "(void *)(local_28 + *(int *)(extraout_EDX + 0x40))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + *(int *)(extraout_EDX + 0x40))" ( (binary_expression "local_28 + *(int *)(extraout_EDX + 0x40)" identifier + (pointer_expression "*(int *)(extraout_EDX + 0x40)" * (cast_expression "(int *)(extraout_EDX + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x40)" ( (binary_expression "extraout_EDX + 0x40" identifier + number_literal) ))))) ))) , identifier , identifier ))) ;) (expression_statement "*(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;" (assignment_expression "*(uint *)(extraout_EDX + 0x3c) = local_28 + local_24" (pointer_expression "*(uint *)(extraout_EDX + 0x3c)" * (cast_expression "(uint *)(extraout_EDX + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x3c)" ( (binary_expression "extraout_EDX + 0x3c" identifier + number_literal) )))) = (binary_expression "local_28 + local_24" identifier + identifier)) ;) (expression_statement "bVar2 = pbVar8[local_24];" (assignment_expression "bVar2 = pbVar8[local_24]" identifier = (subscript_expression "pbVar8[local_24]" identifier [ identifier ])) ;) (expression_statement "uVar7 = (uint)bVar2;" (assignment_expression "uVar7 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }" { (expression_statement "iVar5 = FUN_0003b030();" (assignment_expression "iVar5 = FUN_0003b030()" identifier = (call_expression "FUN_0003b030()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x4c);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x4c)" identifier = (pointer_expression "*(uint *)(extraout_EDX + 0x4c)" * (cast_expression "(uint *)(extraout_EDX + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x4c)" ( (binary_expression "extraout_EDX + 0x4c" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" else (compound_statement "{\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" { (expression_statement "*(uint *)(extraout_EDX + 0x4c) = uVar7;" (assignment_expression "*(uint *)(extraout_EDX + 0x4c) = uVar7" (pointer_expression "*(uint *)(extraout_EDX + 0x4c)" * (cast_expression "(uint *)(extraout_EDX + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x4c)" ( (binary_expression "extraout_EDX + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) }))) (expression_statement "pbVar8 = pbVar8 + local_24 + iVar5;" (assignment_expression "pbVar8 = pbVar8 + local_24 + iVar5" identifier = (binary_expression "pbVar8 + local_24 + iVar5" (binary_expression "pbVar8 + local_24" identifier + identifier) + identifier)) ;) (expression_statement "*(undefined4 *)(extraout_EDX + 0x50) = 0;" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x50) = 0" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x50)" * (cast_expression "(undefined4 *)(extraout_EDX + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x50)" ( (binary_expression "extraout_EDX + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte **)(extraout_EDX + 0x48) = pbVar8;" (assignment_expression "*(byte **)(extraout_EDX + 0x48) = pbVar8" (pointer_expression "*(byte **)(extraout_EDX + 0x48)" * (cast_expression "(byte **)(extraout_EDX + 0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(extraout_EDX + 0x48)" ( (binary_expression "extraout_EDX + 0x48" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;" if (parenthesized_expression "(((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0))))" ( (binary_expression "((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))" (parenthesized_expression "((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28)))" ( (binary_expression "(int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "*(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" * (cast_expression "(int *)(extraout_EDX + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x2c)" ( (binary_expression "extraout_EDX + 0x2c" identifier + number_literal) )))) - (parenthesized_expression "((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" ( (binary_expression "(int)pbVar8 - *(int *)(extraout_EDX + 0x28)" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(extraout_EDX + 0x28)" * (cast_expression "(int *)(extraout_EDX + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x28)" ( (binary_expression "extraout_EDX + 0x28" identifier + number_literal) ))))) )))) )) && (parenthesized_expression "((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))" ( (parenthesized_expression "(*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0))" ( (binary_expression "*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)" (binary_expression "*(int *)(extraout_EDX + 0x30) != 0" (pointer_expression "*(int *)(extraout_EDX + 0x30)" * (cast_expression "(int *)(extraout_EDX + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_EDX + 0x30)" ( (binary_expression "extraout_EDX + 0x30" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(pbVar8[uVar7 - 1] == 0)" ( (binary_expression "pbVar8[uVar7 - 1] == 0" (subscript_expression "pbVar8[uVar7 - 1]" identifier [ (binary_expression "uVar7 - 1" identifier - number_literal) ]) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_00101910;" goto statement_identifier ;)) })) })) (expression_statement "iVar5 = 0x10b;" (assignment_expression "iVar5 = 0x10b" identifier = number_literal) ;) }))) (labeled_statement "LAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(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    return iVar5;\n  }" { (return_statement "return iVar5;" return identifier ;) }))) (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) <= IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (binary_expression IDENT + IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) == LIT) ))) )) ))) )) (goto_statement goto statement_identifier ;)) })) })) (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 { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int FUN_00101760(void)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  void *__dest;\n  int extraout_EDX;\n  uint uVar7;\n  byte *pbVar8;\n  int in_GS_OFFSET;\n  uint local_28;\n  size_t local_24;\n  \n  FUN_00036ac9();\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }\n  if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }\nLAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    \n  FUN_00116110();\n}" (primitive_type "int") (function_declarator "FUN_00101760(void)" (identifier "FUN_00101760") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  void *__dest;\n  int extraout_EDX;\n  uint uVar7;\n  byte *pbVar8;\n  int in_GS_OFFSET;\n  uint local_28;\n  size_t local_24;\n  \n  FUN_00036ac9();\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }\n  if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }\nLAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    \n  FUN_00116110();\n}" ({ "{") (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "int extraout_EDX;" (primitive_type "int") (identifier "extraout_EDX") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (declaration "size_t local_24;" (primitive_type "size_t") (identifier "local_24") (; ";")) (expression_statement "FUN_00036ac9();" (call_expression "FUN_00036ac9()" (identifier "FUN_00036ac9") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (= "=") (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")) () ")"))))) (; ";")) (if_statement "if (*(int *)(extraout_EDX + 0x48) == 0) {\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }\n  else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" (if "if") (parenthesized_expression "(*(int *)(extraout_EDX + 0x48) == 0)" (( "(") (binary_expression "*(int *)(extraout_EDX + 0x48) == 0" (pointer_expression "*(int *)(extraout_EDX + 0x48)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x48)" (( "(") (binary_expression "extraout_EDX + 0x48" (identifier "extraout_EDX") (+ "+") (number_literal "0x48")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pbVar8 = *(byte **)(extraout_EDX + 0x28);\n  }" ({ "{") (expression_statement "pbVar8 = *(byte **)(extraout_EDX + 0x28);" (assignment_expression "pbVar8 = *(byte **)(extraout_EDX + 0x28)" (identifier "pbVar8") (= "=") (pointer_expression "*(byte **)(extraout_EDX + 0x28)" (* "*") (cast_expression "(byte **)(extraout_EDX + 0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(extraout_EDX + 0x28)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" (else "else") (compound_statement "{\n    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));\n  }" ({ "{") (expression_statement "pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));" (assignment_expression "pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c))" (( "(") (binary_expression "*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c)" (pointer_expression "*(int *)(extraout_EDX + 0x48)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x48)" (( "(") (binary_expression "extraout_EDX + 0x48" (identifier "extraout_EDX") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (pointer_expression "*(int *)(extraout_EDX + 0x4c)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x4c)" (( "(") (binary_expression "extraout_EDX + 0x4c" (identifier "extraout_EDX") (+ "+") (number_literal "0x4c")) () ")"))))) () ")")))) (; ";")) (} "}")))) (if_statement "if ((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }\n  else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" (if "if") (parenthesized_expression "((pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8))" (( "(") (binary_expression "(pbVar8 == (byte *)0x0) ||\n     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)" (parenthesized_expression "(pbVar8 == (byte *)0x0)" (( "(") (binary_expression "pbVar8 == (byte *)0x0" (identifier "pbVar8") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)" (( "(") (binary_expression "(byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8" (cast_expression "(byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" (( "(") (binary_expression "*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x2c)" (( "(") (binary_expression "extraout_EDX + 0x2c" (identifier "extraout_EDX") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (pointer_expression "*(int *)(extraout_EDX + 0x28)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x28)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) () ")"))))) () ")"))) (<= "<=") (identifier "pbVar8")) () ")"))) () ")")) (compound_statement "{\n    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }\nLAB_00101910:\n    iVar5 = 0;\n  }" ({ "{") (if_statement "if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }\n    else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" (if "if") (parenthesized_expression "(*(int **)(extraout_EDX + 0x38) == (int *)0x0)" (( "(") (binary_expression "*(int **)(extraout_EDX + 0x38) == (int *)0x0" (pointer_expression "*(int **)(extraout_EDX + 0x38)" (* "*") (cast_expression "(int **)(extraout_EDX + 0x38)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(extraout_EDX + 0x38)" (( "(") (binary_expression "extraout_EDX + 0x38" (identifier "extraout_EDX") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      FUN_000aad90();\n      iVar5 = *(int *)(extraout_EDX + 0x24);\n      uVar7 = *(uint *)(extraout_EDX + 0x20);\n      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));\n      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);\n      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }\n    }" ({ "{") (expression_statement "FUN_000aad90();" (call_expression "FUN_000aad90()" (identifier "FUN_000aad90") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(extraout_EDX + 0x24);" (assignment_expression "iVar5 = *(int *)(extraout_EDX + 0x24)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(extraout_EDX + 0x24)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x24)" (( "(") (binary_expression "extraout_EDX + 0x24" (identifier "extraout_EDX") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x20);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x20)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(extraout_EDX + 0x20)" (* "*") (cast_expression "(uint *)(extraout_EDX + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x20)" (( "(") (binary_expression "extraout_EDX + 0x20" (identifier "extraout_EDX") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));" (assignment_expression "uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10))" (identifier "uVar4") (= "=") (call_expression "(uint)(uVar7 < *(uint *)(extraout_EDX + 0x10))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < *(uint *)(extraout_EDX + 0x10))" (( "(") (binary_expression "uVar7 < *(uint *)(extraout_EDX + 0x10)" (identifier "uVar7") (< "<") (pointer_expression "*(uint *)(extraout_EDX + 0x10)" (* "*") (cast_expression "(uint *)(extraout_EDX + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x10)" (( "(") (binary_expression "extraout_EDX + 0x10" (identifier "extraout_EDX") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (expression_statement "iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);" (assignment_expression "iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14)" (identifier "iVar6") (= "=") (binary_expression "iVar5 - *(int *)(extraout_EDX + 0x14)" (identifier "iVar5") (- "-") (pointer_expression "*(int *)(extraout_EDX + 0x14)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x14)" (( "(") (binary_expression "extraout_EDX + 0x14" (identifier "extraout_EDX") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (if_statement "if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0) {\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }" (if "if") (parenthesized_expression "((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0)" (( "(") (binary_expression "(SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=\n          (int)(iVar6 - uVar4) < 0" (parenthesized_expression "(SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4))" (( "(") (binary_expression "SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)" (call_expression "SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14))" (identifier "SBORROW4") (argument_list "(iVar5,*(int *)(extraout_EDX + 0x14))" (( "(") (identifier "iVar5") (, ",") (pointer_expression "*(int *)(extraout_EDX + 0x14)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x14)" (( "(") (binary_expression "extraout_EDX + 0x14" (identifier "extraout_EDX") (+ "+") (number_literal "0x14")) () ")")))) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar6,uVar4)" (identifier "SBORROW4") (argument_list "(iVar6,uVar4)" (( "(") (identifier "iVar6") (, ",") (identifier "uVar4") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar6 - uVar4) < 0" (cast_expression "(int)(iVar6 - uVar4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar6 - uVar4)" (( "(") (binary_expression "iVar6 - uVar4" (identifier "iVar6") (- "-") (identifier "uVar4")) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;\n        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);\n        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);\n        if (iVar5 != 0) goto LAB_001019a5;\n        pbVar8 = *(byte **)(extraout_EDX + 0x28);\n        goto LAB_001017a6;\n      }" ({ "{") (expression_statement "*(uint *)(extraout_EDX + 0x20) = uVar7 + 1;" (assignment_expression "*(uint *)(extraout_EDX + 0x20) = uVar7 + 1" (pointer_expression "*(uint *)(extraout_EDX + 0x20)" (* "*") (cast_expression "(uint *)(extraout_EDX + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x20)" (( "(") (binary_expression "extraout_EDX + 0x20" (identifier "extraout_EDX") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);" (assignment_expression "*(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7)" (pointer_expression "*(uint *)(extraout_EDX + 0x24)" (* "*") (cast_expression "(uint *)(extraout_EDX + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x24)" (( "(") (binary_expression "extraout_EDX + 0x24" (identifier "extraout_EDX") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (binary_expression "iVar5 + (uint)(0xfffffffe < uVar7)" (identifier "iVar5") (+ "+") (call_expression "(uint)(0xfffffffe < uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffffe < uVar7)" (( "(") (binary_expression "0xfffffffe < uVar7" (number_literal "0xfffffffe") (< "<") (identifier "uVar7")) () ")"))))) (; ";")) (expression_statement "iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);" (assignment_expression "iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" (identifier "iVar5") (= "=") (call_expression "FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" (identifier "FUN_000f0270") (argument_list "(extraout_EDX + 0x28,extraout_EDX + 0x2c,0)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) (, ",") (binary_expression "extraout_EDX + 0x2c" (identifier "extraout_EDX") (+ "+") (number_literal "0x2c")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001019a5;" (goto "goto") (statement_identifier "LAB_001019a5") (; ";"))) (expression_statement "pbVar8 = *(byte **)(extraout_EDX + 0x28);" (assignment_expression "pbVar8 = *(byte **)(extraout_EDX + 0x28)" (identifier "pbVar8") (= "=") (pointer_expression "*(byte **)(extraout_EDX + 0x28)" (* "*") (cast_expression "(byte **)(extraout_EDX + 0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(extraout_EDX + 0x28)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (goto_statement "goto LAB_001017a6;" (goto "goto") (statement_identifier "LAB_001017a6") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" (else "else") (compound_statement "{\n      iVar5 = **(int **)(extraout_EDX + 0x38);\n      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));\n      *(undefined4 *)(extraout_EDX + 0x28) = 0;\n      if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }\n    }" ({ "{") (expression_statement "iVar5 = **(int **)(extraout_EDX + 0x38);" (assignment_expression "iVar5 = **(int **)(extraout_EDX + 0x38)" (identifier "iVar5") (= "=") (pointer_expression "**(int **)(extraout_EDX + 0x38)" (* "*") (pointer_expression "*(int **)(extraout_EDX + 0x38)" (* "*") (cast_expression "(int **)(extraout_EDX + 0x38)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(extraout_EDX + 0x38)" (( "(") (binary_expression "extraout_EDX + 0x38" (identifier "extraout_EDX") (+ "+") (number_literal "0x38")) () ")")))))) (; ";")) (expression_statement "FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));" (call_expression "FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28))" (identifier "FUN_00042800") (argument_list "(*(undefined4 *)(extraout_EDX + 0x28))" (( "(") (pointer_expression "*(undefined4 *)(extraout_EDX + 0x28)" (* "*") (cast_expression "(undefined4 *)(extraout_EDX + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x28)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(extraout_EDX + 0x28) = 0;" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x28) = 0" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x28)" (* "*") (cast_expression "(undefined4 *)(extraout_EDX + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x28)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar5 != 0) {\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        piVar3 = *(int **)(iVar5 + 8);\n        __n = *piVar3 + 1;\n        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);\n        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);\n        __dest = (void *)FUN_0005bfa0(__n);\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }\n        goto LAB_00101a30;\n      }" ({ "{") (expression_statement "piVar3 = *(int **)(iVar5 + 8);" (assignment_expression "piVar3 = *(int **)(iVar5 + 8)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(iVar5 + 8)" (* "*") (cast_expression "(int **)(iVar5 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "__n = *piVar3 + 1;" (assignment_expression "__n = *piVar3 + 1" (identifier "__n") (= "=") (binary_expression "*piVar3 + 1" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc)" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x40)" (* "*") (cast_expression "(undefined4 *)(extraout_EDX + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x40)" (( "(") (binary_expression "extraout_EDX + 0x40" (identifier "extraout_EDX") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10)" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x3c)" (* "*") (cast_expression "(undefined4 *)(extraout_EDX + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x3c)" (( "(") (binary_expression "extraout_EDX + 0x3c" (identifier "extraout_EDX") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar5 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "__dest = (void *)FUN_0005bfa0(__n);" (assignment_expression "__dest = (void *)FUN_0005bfa0(__n)" (identifier "__dest") (= "=") (cast_expression "(void *)FUN_0005bfa0(__n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0005bfa0(__n)" (identifier "FUN_0005bfa0") (argument_list "(__n)" (( "(") (identifier "__n") () ")"))))) (; ";")) (if_statement "if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\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          memcpy(__dest,(void *)piVar3[1],__n);\n          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;\n          *(size_t *)(extraout_EDX + 0x4c) = __n;\n          iVar5 = 0;\n          *(size_t *)(extraout_EDX + 0x2c) = __n;\n          *(void **)(extraout_EDX + 0x48) = __dest;\n          *(void **)(extraout_EDX + 0x28) = __dest;\n          goto LAB_001019a5;\n        }" ({ "{") (expression_statement "memcpy(__dest,(void *)piVar3[1],__n);" (call_expression "memcpy(__dest,(void *)piVar3[1],__n)" (identifier "memcpy") (argument_list "(__dest,(void *)piVar3[1],__n)" (( "(") (identifier "__dest") (, ",") (cast_expression "(void *)piVar3[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "*(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;" (assignment_expression "*(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4" (pointer_expression "*(int *)(extraout_EDX + 0x38)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x38)" (( "(") (binary_expression "extraout_EDX + 0x38" (identifier "extraout_EDX") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (binary_expression "*(int *)(extraout_EDX + 0x38) + 4" (pointer_expression "*(int *)(extraout_EDX + 0x38)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x38)" (( "(") (binary_expression "extraout_EDX + 0x38" (identifier "extraout_EDX") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(size_t *)(extraout_EDX + 0x4c) = __n;" (assignment_expression "*(size_t *)(extraout_EDX + 0x4c) = __n" (pointer_expression "*(size_t *)(extraout_EDX + 0x4c)" (* "*") (cast_expression "(size_t *)(extraout_EDX + 0x4c)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x4c)" (( "(") (binary_expression "extraout_EDX + 0x4c" (identifier "extraout_EDX") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "__n")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(size_t *)(extraout_EDX + 0x2c) = __n;" (assignment_expression "*(size_t *)(extraout_EDX + 0x2c) = __n" (pointer_expression "*(size_t *)(extraout_EDX + 0x2c)" (* "*") (cast_expression "(size_t *)(extraout_EDX + 0x2c)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x2c)" (( "(") (binary_expression "extraout_EDX + 0x2c" (identifier "extraout_EDX") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "__n")) (; ";")) (expression_statement "*(void **)(extraout_EDX + 0x48) = __dest;" (assignment_expression "*(void **)(extraout_EDX + 0x48) = __dest" (pointer_expression "*(void **)(extraout_EDX + 0x48)" (* "*") (cast_expression "(void **)(extraout_EDX + 0x48)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(extraout_EDX + 0x48)" (( "(") (binary_expression "extraout_EDX + 0x48" (identifier "extraout_EDX") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "__dest")) (; ";")) (expression_statement "*(void **)(extraout_EDX + 0x28) = __dest;" (assignment_expression "*(void **)(extraout_EDX + 0x28) = __dest" (pointer_expression "*(void **)(extraout_EDX + 0x28)" (* "*") (cast_expression "(void **)(extraout_EDX + 0x28)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(extraout_EDX + 0x28)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "__dest")) (; ";")) (goto_statement "goto LAB_001019a5;" (goto "goto") (statement_identifier "LAB_001019a5") (; ";")) (} "}"))) (goto_statement "goto LAB_00101a30;" (goto "goto") (statement_identifier "LAB_00101a30") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00101910:\n    iVar5 = 0;" (statement_identifier "LAB_00101910") (: ":") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" (else "else") (compound_statement "{\nLAB_001017a6:\n    iVar5 = FUN_000ab570();\n    if (iVar5 != 0) goto LAB_001019a5;\n    if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }\n    bVar2 = pbVar8[iVar5];\n    if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }\n    pbVar8 = pbVar8 + iVar5 + iVar6;\n    if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }\n    iVar5 = 0x10b;\n  }" ({ "{") (labeled_statement "LAB_001017a6:\n    iVar5 = FUN_000ab570();" (statement_identifier "LAB_001017a6") (: ":") (expression_statement "iVar5 = FUN_000ab570();" (assignment_expression "iVar5 = FUN_000ab570()" (identifier "iVar5") (= "=") (call_expression "FUN_000ab570()" (identifier "FUN_000ab570") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001019a5;" (goto "goto") (statement_identifier "LAB_001019a5") (; ";"))) (if_statement "if ((char)*pbVar8 < '\0') {\n      iVar5 = FUN_0003b030();\n    }\n    else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" (if "if") (parenthesized_expression "((char)*pbVar8 < '\0')" (( "(") (binary_expression "(char)*pbVar8 < '\0'" (cast_expression "(char)*pbVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar5 = FUN_0003b030();\n    }" ({ "{") (expression_statement "iVar5 = FUN_0003b030();" (assignment_expression "iVar5 = FUN_0003b030()" (identifier "iVar5") (= "=") (call_expression "FUN_0003b030()" (identifier "FUN_0003b030") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" (else "else") (compound_statement "{\n      iVar5 = 1;\n      local_28 = (uint)*pbVar8;\n    }" ({ "{") (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_28 = (uint)*pbVar8;" (assignment_expression "local_28 = (uint)*pbVar8" (identifier "local_28") (= "=") (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar8"))) (; ";")) (} "}")))) (expression_statement "bVar2 = pbVar8[iVar5];" (assignment_expression "bVar2 = pbVar8[iVar5]" (identifier "bVar2") (= "=") (subscript_expression "pbVar8[iVar5]" (identifier "pbVar8") ([ "[") (identifier "iVar5") (] "]"))) (; ";")) (if_statement "if ((char)bVar2 < '\0') {\n      iVar6 = FUN_0003b030();\n    }\n    else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" (if "if") (parenthesized_expression "((char)bVar2 < '\0')" (( "(") (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar2")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar6 = FUN_0003b030();\n    }" ({ "{") (expression_statement "iVar6 = FUN_0003b030();" (assignment_expression "iVar6 = FUN_0003b030()" (identifier "iVar6") (= "=") (call_expression "FUN_0003b030()" (identifier "FUN_0003b030") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" (else "else") (compound_statement "{\n      local_24 = (size_t)bVar2;\n      iVar6 = 1;\n    }" ({ "{") (expression_statement "local_24 = (size_t)bVar2;" (assignment_expression "local_24 = (size_t)bVar2" (identifier "local_24") (= "=") (cast_expression "(size_t)bVar2" (( "(") (type_descriptor "size_t" (primitive_type "size_t")) () ")") (identifier "bVar2"))) (; ";")) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "pbVar8 = pbVar8 + iVar5 + iVar6;" (assignment_expression "pbVar8 = pbVar8 + iVar5 + iVar6" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + iVar5 + iVar6" (binary_expression "pbVar8 + iVar5" (identifier "pbVar8") (+ "+") (identifier "iVar5")) (+ "+") (identifier "iVar6"))) (; ";")) (if_statement "if ((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }" (if "if") (parenthesized_expression "((0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8))" (( "(") (binary_expression "(0 < (int)local_24) &&\n       ((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)" (parenthesized_expression "(0 < (int)local_24)" (( "(") (binary_expression "0 < (int)local_24" (number_literal "0") (< "<") (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24"))) () ")")) (&& "&&") (parenthesized_expression "((int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)" (( "(") (binary_expression "(int)local_24 <=\n        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (<= "<=") (binary_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8" (parenthesized_expression "(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28))" (( "(") (binary_expression "*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x2c)" (( "(") (binary_expression "extraout_EDX + 0x2c" (identifier "extraout_EDX") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (pointer_expression "*(int *)(extraout_EDX + 0x28)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x28)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (- "-") (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8")))) () ")"))) () ")")) (compound_statement "{\n      uVar7 = *(uint *)(extraout_EDX + 0x44);\n      if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }\n    }" ({ "{") (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x44);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x44)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(extraout_EDX + 0x44)" (* "*") (cast_expression "(uint *)(extraout_EDX + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x44)" (( "(") (binary_expression "extraout_EDX + 0x44" (identifier "extraout_EDX") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (if_statement "if ((int)local_28 <= (int)uVar7) {\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }" (if "if") (parenthesized_expression "((int)local_28 <= (int)uVar7)" (( "(") (binary_expression "(int)local_28 <= (int)uVar7" (cast_expression "(int)local_28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_28")) (<= "<=") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7"))) () ")")) (compound_statement "{\n        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);\n        uVar4 = (uint)(uVar7 < local_24 + local_28);\n        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;\n        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }\nLAB_00101888:\n        iVar5 = FUN_000ab570();\n        if (iVar5 != 0) goto LAB_001019a5;\n        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);\n        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;\n        bVar2 = pbVar8[local_24];\n        uVar7 = (uint)bVar2;\n        if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }\n        pbVar8 = pbVar8 + local_24 + iVar5;\n        *(undefined4 *)(extraout_EDX + 0x50) = 0;\n        *(byte **)(extraout_EDX + 0x48) = pbVar8;\n        if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;\n      }" ({ "{") (expression_statement "iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);" (assignment_expression "iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28)" (identifier "iVar6") (= "=") (binary_expression "((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28)" (binary_expression "((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f)" (parenthesized_expression "((int)local_24 >> 0x1f)" (( "(") (binary_expression "(int)local_24 >> 0x1f" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (parenthesized_expression "((int)local_28 >> 0x1f)" (( "(") (binary_expression "(int)local_28 >> 0x1f" (cast_expression "(int)local_28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_28")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (cast_expression "(uint)CARRY4(local_24,local_28)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(local_24,local_28)" (identifier "CARRY4") (argument_list "(local_24,local_28)" (( "(") (identifier "local_24") (, ",") (identifier "local_28") () ")")))))) (; ";")) (expression_statement "uVar4 = (uint)(uVar7 < local_24 + local_28);" (assignment_expression "uVar4 = (uint)(uVar7 < local_24 + local_28)" (identifier "uVar4") (= "=") (call_expression "(uint)(uVar7 < local_24 + local_28)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < local_24 + local_28)" (( "(") (binary_expression "uVar7 < local_24 + local_28" (identifier "uVar7") (< "<") (binary_expression "local_24 + local_28" (identifier "local_24") (+ "+") (identifier "local_28"))) () ")")))) (; ";")) (expression_statement "iVar5 = ((int)uVar7 >> 0x1f) - iVar6;" (assignment_expression "iVar5 = ((int)uVar7 >> 0x1f) - iVar6" (identifier "iVar5") (= "=") (binary_expression "((int)uVar7 >> 0x1f) - iVar6" (parenthesized_expression "((int)uVar7 >> 0x1f)" (( "(") (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x1f")) () ")")) (- "-") (identifier "iVar6"))) (; ";")) (if_statement "if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0) {\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }" (if "if") (parenthesized_expression "((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0)" (( "(") (binary_expression "(SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=\n            (int)(iVar5 - uVar4) < 0" (parenthesized_expression "(SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4))" (( "(") (binary_expression "SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)" (call_expression "SBORROW4((int)uVar7 >> 0x1f,iVar6)" (identifier "SBORROW4") (argument_list "((int)uVar7 >> 0x1f,iVar6)" (( "(") (binary_expression "(int)uVar7 >> 0x1f" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x1f")) (, ",") (identifier "iVar6") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar5,uVar4)" (identifier "SBORROW4") (argument_list "(iVar5,uVar4)" (( "(") (identifier "iVar5") (, ",") (identifier "uVar4") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar5 - uVar4) < 0" (cast_expression "(int)(iVar5 - uVar4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar5 - uVar4)" (( "(") (binary_expression "iVar5 - uVar4" (identifier "iVar5") (- "-") (identifier "uVar4")) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n          iVar5 = FUN_0005b490();\n          if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }\nLAB_00101a30:\n          iVar5 = 7;\n          goto LAB_001019a5;\n        }" ({ "{") (expression_statement "iVar5 = FUN_0005b490();" (assignment_expression "iVar5 = FUN_0005b490()" (identifier "iVar5") (= "=") (call_expression "FUN_0005b490()" (identifier "FUN_0005b490") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar5 = FUN_00044180();\n            if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }\n          }" ({ "{") (expression_statement "iVar5 = FUN_00044180();" (assignment_expression "iVar5 = FUN_00044180()" (identifier "iVar5") (= "=") (call_expression "FUN_00044180()" (identifier "FUN_00044180") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(int *)(extraout_EDX + 0x40) = iVar5;\n              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;\n              goto LAB_00101888;\n            }" ({ "{") (expression_statement "*(int *)(extraout_EDX + 0x40) = iVar5;" (assignment_expression "*(int *)(extraout_EDX + 0x40) = iVar5" (pointer_expression "*(int *)(extraout_EDX + 0x40)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x40)" (( "(") (binary_expression "extraout_EDX + 0x40" (identifier "extraout_EDX") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;" (assignment_expression "*(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2" (pointer_expression "*(size_t *)(extraout_EDX + 0x44)" (* "*") (cast_expression "(size_t *)(extraout_EDX + 0x44)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x44)" (( "(") (binary_expression "extraout_EDX + 0x44" (identifier "extraout_EDX") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (binary_expression "(local_24 + local_28) * 2" (parenthesized_expression "(local_24 + local_28)" (( "(") (binary_expression "local_24 + local_28" (identifier "local_24") (+ "+") (identifier "local_28")) () ")")) (* "*") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_00101888;" (goto "goto") (statement_identifier "LAB_00101888") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00101a30:\n          iVar5 = 7;" (statement_identifier "LAB_00101a30") (: ":") (expression_statement "iVar5 = 7;" (assignment_expression "iVar5 = 7" (identifier "iVar5") (= "=") (number_literal "7")) (; ";"))) (goto_statement "goto LAB_001019a5;" (goto "goto") (statement_identifier "LAB_001019a5") (; ";")) (} "}"))) (labeled_statement "LAB_00101888:\n        iVar5 = FUN_000ab570();" (statement_identifier "LAB_00101888") (: ":") (expression_statement "iVar5 = FUN_000ab570();" (assignment_expression "iVar5 = FUN_000ab570()" (identifier "iVar5") (= "=") (call_expression "FUN_000ab570()" (identifier "FUN_000ab570") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if (iVar5 != 0) goto LAB_001019a5;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001019a5;" (goto "goto") (statement_identifier "LAB_001019a5") (; ";"))) (expression_statement "memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);" (call_expression "memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24)" (identifier "memcpy") (argument_list "((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24)" (( "(") (cast_expression "(void *)(local_28 + *(int *)(extraout_EDX + 0x40))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + *(int *)(extraout_EDX + 0x40))" (( "(") (binary_expression "local_28 + *(int *)(extraout_EDX + 0x40)" (identifier "local_28") (+ "+") (pointer_expression "*(int *)(extraout_EDX + 0x40)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x40)" (( "(") (binary_expression "extraout_EDX + 0x40" (identifier "extraout_EDX") (+ "+") (number_literal "0x40")) () ")"))))) () ")"))) (, ",") (identifier "pbVar8") (, ",") (identifier "local_24") () ")"))) (; ";")) (expression_statement "*(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;" (assignment_expression "*(uint *)(extraout_EDX + 0x3c) = local_28 + local_24" (pointer_expression "*(uint *)(extraout_EDX + 0x3c)" (* "*") (cast_expression "(uint *)(extraout_EDX + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x3c)" (( "(") (binary_expression "extraout_EDX + 0x3c" (identifier "extraout_EDX") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "local_28 + local_24" (identifier "local_28") (+ "+") (identifier "local_24"))) (; ";")) (expression_statement "bVar2 = pbVar8[local_24];" (assignment_expression "bVar2 = pbVar8[local_24]" (identifier "bVar2") (= "=") (subscript_expression "pbVar8[local_24]" (identifier "pbVar8") ([ "[") (identifier "local_24") (] "]"))) (; ";")) (expression_statement "uVar7 = (uint)bVar2;" (assignment_expression "uVar7 = (uint)bVar2" (identifier "uVar7") (= "=") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (; ";")) (if_statement "if ((char)bVar2 < '\0') {\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }\n        else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" (if "if") (parenthesized_expression "((char)bVar2 < '\0')" (( "(") (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar2")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          iVar5 = FUN_0003b030();\n          uVar7 = *(uint *)(extraout_EDX + 0x4c);\n        }" ({ "{") (expression_statement "iVar5 = FUN_0003b030();" (assignment_expression "iVar5 = FUN_0003b030()" (identifier "iVar5") (= "=") (call_expression "FUN_0003b030()" (identifier "FUN_0003b030") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar7 = *(uint *)(extraout_EDX + 0x4c);" (assignment_expression "uVar7 = *(uint *)(extraout_EDX + 0x4c)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(extraout_EDX + 0x4c)" (* "*") (cast_expression "(uint *)(extraout_EDX + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x4c)" (( "(") (binary_expression "extraout_EDX + 0x4c" (identifier "extraout_EDX") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" (else "else") (compound_statement "{\n          *(uint *)(extraout_EDX + 0x4c) = uVar7;\n          iVar5 = 1;\n        }" ({ "{") (expression_statement "*(uint *)(extraout_EDX + 0x4c) = uVar7;" (assignment_expression "*(uint *)(extraout_EDX + 0x4c) = uVar7" (pointer_expression "*(uint *)(extraout_EDX + 0x4c)" (* "*") (cast_expression "(uint *)(extraout_EDX + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x4c)" (( "(") (binary_expression "extraout_EDX + 0x4c" (identifier "extraout_EDX") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "pbVar8 = pbVar8 + local_24 + iVar5;" (assignment_expression "pbVar8 = pbVar8 + local_24 + iVar5" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + local_24 + iVar5" (binary_expression "pbVar8 + local_24" (identifier "pbVar8") (+ "+") (identifier "local_24")) (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "*(undefined4 *)(extraout_EDX + 0x50) = 0;" (assignment_expression "*(undefined4 *)(extraout_EDX + 0x50) = 0" (pointer_expression "*(undefined4 *)(extraout_EDX + 0x50)" (* "*") (cast_expression "(undefined4 *)(extraout_EDX + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x50)" (( "(") (binary_expression "extraout_EDX + 0x50" (identifier "extraout_EDX") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)(extraout_EDX + 0x48) = pbVar8;" (assignment_expression "*(byte **)(extraout_EDX + 0x48) = pbVar8" (pointer_expression "*(byte **)(extraout_EDX + 0x48)" (* "*") (cast_expression "(byte **)(extraout_EDX + 0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(extraout_EDX + 0x48)" (( "(") (binary_expression "extraout_EDX + 0x48" (identifier "extraout_EDX") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "pbVar8")) (; ";")) (if_statement "if (((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;" (if "if") (parenthesized_expression "(((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0))))" (( "(") (binary_expression "((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&\n           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))" (parenthesized_expression "((int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28)))" (( "(") (binary_expression "(int)uVar7 <=\n             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (<= "<=") (binary_expression "*(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" (pointer_expression "*(int *)(extraout_EDX + 0x2c)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x2c)" (( "(") (binary_expression "extraout_EDX + 0x2c" (identifier "extraout_EDX") (+ "+") (number_literal "0x2c")) () ")")))) (- "-") (parenthesized_expression "((int)pbVar8 - *(int *)(extraout_EDX + 0x28))" (( "(") (binary_expression "(int)pbVar8 - *(int *)(extraout_EDX + 0x28)" (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8")) (- "-") (pointer_expression "*(int *)(extraout_EDX + 0x28)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x28)" (( "(") (binary_expression "extraout_EDX + 0x28" (identifier "extraout_EDX") (+ "+") (number_literal "0x28")) () ")"))))) () ")")))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))" (( "(") (parenthesized_expression "(*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0))" (( "(") (binary_expression "*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)" (binary_expression "*(int *)(extraout_EDX + 0x30) != 0" (pointer_expression "*(int *)(extraout_EDX + 0x30)" (* "*") (cast_expression "(int *)(extraout_EDX + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_EDX + 0x30)" (( "(") (binary_expression "extraout_EDX + 0x30" (identifier "extraout_EDX") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(pbVar8[uVar7 - 1] == 0)" (( "(") (binary_expression "pbVar8[uVar7 - 1] == 0" (subscript_expression "pbVar8[uVar7 - 1]" (identifier "pbVar8") ([ "[") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")) (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00101910;" (goto "goto") (statement_identifier "LAB_00101910") (; ";"))) (} "}"))) (} "}"))) (expression_statement "iVar5 = 0x10b;" (assignment_expression "iVar5 = 0x10b" (identifier "iVar5") (= "=") (number_literal "0x10b")) (; ";")) (} "}")))) (labeled_statement "LAB_001019a5:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" (statement_identifier "LAB_001019a5") (: ":") (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" (if "if") (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (== "==") (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    return iVar5;\n  }" ({ "{") (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}")))) (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" (identifier "FUN_00116110") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */

int __regparm3 function_1(type_1 *p,type_2 *pReader,int bIncr)

{
  size_t __n;
  type_3 *var_12;
  type_4 var_8;
  int var_5;
  char *var_14;
  type_4 var_21;
  type_4 var_4;
  int *piVar7;
  type_5 *var_2;
  int var_7;
  int var_1;
  type_6 in_stack_ffffffc4;
  int var_19;
  int var_18;
  int var_24;
  
  var_24 = *(int *)(var_1 + 0x14);
  if (pReader->aDoclist == (char *)0x0) {
    var_2 = (type_5 *)pReader->aNode;
  }
  else {
    var_2 = (type_5 *)(pReader->aDoclist + pReader->nDoclist);
  }
  if ((var_2 == (type_5 *)0x0) || (pReader->aNode + pReader->nNode <= var_2)) {
    if (pReader->ppNextElem == (type_3 **)0x0) {
      var_3(pReader);
      var_5 = *(int *)((int)&pReader->iCurrentBlock + 4);
      var_4 = (type_4)pReader->iCurrentBlock;
      piVar7 = (int *)((int)&pReader->iLeafEndBlock + 4);
      var_8 = (type_4)(var_4 < (type_4)pReader->iLeafEndBlock);
      var_7 = var_5 - *piVar7;
      if ((var_6(var_5,*piVar7) != var_6(var_7,var_8)) != (int)(var_7 - var_8) < 0) {
        piVar7 = (int *)(var_5 + (type_4)(0xfffffffe < var_4));
        *(char ***)&pReader->iCurrentBlock = (char **)(var_4 + 1);
        *(int **)((int)&pReader->iCurrentBlock + 4) = piVar7;
        var_5 = var_9
                          (p,var_10(&pReader->nNode,&pReader->aNode),(char **)(var_4 + 1),piVar7,
                           (int *)0x0);
        if (var_5 != 0) goto LAB_001019a5;
        var_2 = (type_5 *)pReader->aNode;
        goto LAB_001017a6;
      }
    }
    else {
      var_12 = *pReader->ppNextElem;
      var_11(pReader->aNode);
      pReader->aNode = (char *)0x0;
      if (var_12 != (type_3 *)0x0) {
        piVar7 = (int *)var_12->data;
        __n = *piVar7 + 1;
        pReader->zTerm = (char *)var_12->pKey;
        pReader->nTerm = var_12->nKey;
        var_14 = (char *)var_13(__n);
        if (var_14 != (char *)0x0) {
          var_15(var_14,(void *)piVar7[1],__n);
          pReader->ppNextElem = pReader->ppNextElem + 1;
          pReader->nDoclist = __n;
          var_5 = 0;
          pReader->nNode = __n;
          pReader->aDoclist = var_14;
          pReader->aNode = var_14;
          goto LAB_001019a5;
        }
        goto LAB_00101a30;
      }
    }
LAB_00101910:
    var_5 = 0;
  }
  else {
LAB_001017a6:
    var_5 = var_16(pReader,(char *)var_2,0x14);
    if (var_5 != 0) goto LAB_001019a5;
    if ((char)*var_2 < '\0') {
      var_5 = var_17((char *)var_2,&var_19);
    }
    else {
      var_5 = 1;
      var_19 = (type_4)*var_2;
    }
    var_2 = var_2 + var_5;
    if ((char)*var_2 < '\0') {
      var_5 = var_17((char *)var_2,&var_18);
    }
    else {
      var_18 = (int)*var_2;
      var_5 = 1;
    }
    var_2 = var_2 + var_5;
    if ((0 < var_18) && (var_18 <= (int)(pReader->aNode + (pReader->nNode - (int)var_2)))) {
      var_4 = pReader->nTermAlloc;
      if (var_19 <= (int)var_4) {
        var_21 = var_18 + var_19;
        var_7 = (var_18 >> 0x1f) + (var_19 >> 0x1f) + (type_4)var_20(var_18,var_19);
        var_8 = (type_4)(var_4 < var_21);
        var_5 = ((int)var_4 >> 0x1f) - var_7;
        if ((var_6((int)var_4 >> 0x1f,var_7) != var_6(var_5,var_8)) !=
            (int)(var_5 - var_8) < 0) {
          var_14 = pReader->zTerm;
          var_5 = var_22();
          if (var_5 == 0) {
            var_14 = (char *)var_23(var_14,var_10(var_2,in_stack_ffffffc4));
            if (var_14 != (char *)0x0) {
              pReader->zTerm = var_14;
              pReader->nTermAlloc = var_21 * 2;
              goto LAB_00101888;
            }
          }
LAB_00101a30:
          var_5 = 7;
          goto LAB_001019a5;
        }
LAB_00101888:
        var_5 = var_16(pReader,(char *)var_2,var_18 + 10);
        if (var_5 != 0) goto LAB_001019a5;
        var_15(pReader->zTerm + var_19,var_2,var_18);
        var_2 = var_2 + var_18;
        pReader->nTerm = var_19 + var_18;
        var_4 = (type_4)*var_2;
        if ((char)*var_2 < '\0') {
          var_5 = var_17((char *)var_2,&pReader->nDoclist);
          var_4 = pReader->nDoclist;
        }
        else {
          pReader->nDoclist = var_4;
          var_5 = 1;
        }
        var_2 = var_2 + var_5;
        pReader->pOffsetList = (char *)0x0;
        pReader->aDoclist = (char *)var_2;
        if (((int)var_4 <= pReader->nNode - ((int)var_2 - (int)pReader->aNode)) &&
           ((pReader->nPopulate != 0 || (var_2[var_4 - 1] == 0)))) goto LAB_00101910;
      }
    }
    var_5 = 0x10b;
  }
LAB_001019a5:
  if (var_24 == *(int *)(var_1 + 0x14)) {
    return var_5;
  }
                    /* WARNING: Subroutine does not return */
  var_25();
}


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

int MASKED(void)

{
  size_t __n;
  int iVar1;
  byte bVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  void *__dest;
  int extraout_EDX;
  uint uVar7;
  byte *pbVar8;
  int in_GS_OFFSET;
  uint local_28;
  size_t local_24;
  
  FUN_00036ac9();
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (*(int *)(extraout_EDX + 0x48) == 0) {
    pbVar8 = *(byte **)(extraout_EDX + 0x28);
  }
  else {
    pbVar8 = (byte *)(*(int *)(extraout_EDX + 0x48) + *(int *)(extraout_EDX + 0x4c));
  }
  if ((pbVar8 == (byte *)0x0) ||
     ((byte *)(*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) <= pbVar8)) {
    if (*(int **)(extraout_EDX + 0x38) == (int *)0x0) {
      FUN_000aad90();
      iVar5 = *(int *)(extraout_EDX + 0x24);
      uVar7 = *(uint *)(extraout_EDX + 0x20);
      uVar4 = (uint)(uVar7 < *(uint *)(extraout_EDX + 0x10));
      iVar6 = iVar5 - *(int *)(extraout_EDX + 0x14);
      if ((SBORROW4(iVar5,*(int *)(extraout_EDX + 0x14)) != SBORROW4(iVar6,uVar4)) !=
          (int)(iVar6 - uVar4) < 0) {
        *(uint *)(extraout_EDX + 0x20) = uVar7 + 1;
        *(uint *)(extraout_EDX + 0x24) = iVar5 + (uint)(0xfffffffe < uVar7);
        iVar5 = FUN_000f0270(extraout_EDX + 0x28,extraout_EDX + 0x2c,0);
        if (iVar5 != 0) goto LAB_001019a5;
        pbVar8 = *(byte **)(extraout_EDX + 0x28);
        goto LAB_001017a6;
      }
    }
    else {
      iVar5 = **(int **)(extraout_EDX + 0x38);
      FUN_00042800(*(undefined4 *)(extraout_EDX + 0x28));
      *(undefined4 *)(extraout_EDX + 0x28) = 0;
      if (iVar5 != 0) {
        piVar3 = *(int **)(iVar5 + 8);
        __n = *piVar3 + 1;
        *(undefined4 *)(extraout_EDX + 0x40) = *(undefined4 *)(iVar5 + 0xc);
        *(undefined4 *)(extraout_EDX + 0x3c) = *(undefined4 *)(iVar5 + 0x10);
        __dest = (void *)FUN_0005bfa0(__n);
        if (__dest != (void *)0x0) {
          memcpy(__dest,(void *)piVar3[1],__n);
          *(int *)(extraout_EDX + 0x38) = *(int *)(extraout_EDX + 0x38) + 4;
          *(size_t *)(extraout_EDX + 0x4c) = __n;
          iVar5 = 0;
          *(size_t *)(extraout_EDX + 0x2c) = __n;
          *(void **)(extraout_EDX + 0x48) = __dest;
          *(void **)(extraout_EDX + 0x28) = __dest;
          goto LAB_001019a5;
        }
        goto LAB_00101a30;
      }
    }
LAB_00101910:
    iVar5 = 0;
  }
  else {
LAB_001017a6:
    iVar5 = FUN_000ab570();
    if (iVar5 != 0) goto LAB_001019a5;
    if ((char)*pbVar8 < '\0') {
      iVar5 = FUN_0003b030();
    }
    else {
      iVar5 = 1;
      local_28 = (uint)*pbVar8;
    }
    bVar2 = pbVar8[iVar5];
    if ((char)bVar2 < '\0') {
      iVar6 = FUN_0003b030();
    }
    else {
      local_24 = (size_t)bVar2;
      iVar6 = 1;
    }
    pbVar8 = pbVar8 + iVar5 + iVar6;
    if ((0 < (int)local_24) &&
       ((int)local_24 <=
        (*(int *)(extraout_EDX + 0x2c) + *(int *)(extraout_EDX + 0x28)) - (int)pbVar8)) {
      uVar7 = *(uint *)(extraout_EDX + 0x44);
      if ((int)local_28 <= (int)uVar7) {
        iVar6 = ((int)local_24 >> 0x1f) + ((int)local_28 >> 0x1f) + (uint)CARRY4(local_24,local_28);
        uVar4 = (uint)(uVar7 < local_24 + local_28);
        iVar5 = ((int)uVar7 >> 0x1f) - iVar6;
        if ((SBORROW4((int)uVar7 >> 0x1f,iVar6) != SBORROW4(iVar5,uVar4)) !=
            (int)(iVar5 - uVar4) < 0) {
          iVar5 = FUN_0005b490();
          if (iVar5 == 0) {
            iVar5 = FUN_00044180();
            if (iVar5 != 0) {
              *(int *)(extraout_EDX + 0x40) = iVar5;
              *(size_t *)(extraout_EDX + 0x44) = (local_24 + local_28) * 2;
              goto LAB_00101888;
            }
          }
LAB_00101a30:
          iVar5 = 7;
          goto LAB_001019a5;
        }
LAB_00101888:
        iVar5 = FUN_000ab570();
        if (iVar5 != 0) goto LAB_001019a5;
        memcpy((void *)(local_28 + *(int *)(extraout_EDX + 0x40)),pbVar8,local_24);
        *(uint *)(extraout_EDX + 0x3c) = local_28 + local_24;
        bVar2 = pbVar8[local_24];
        uVar7 = (uint)bVar2;
        if ((char)bVar2 < '\0') {
          iVar5 = FUN_0003b030();
          uVar7 = *(uint *)(extraout_EDX + 0x4c);
        }
        else {
          *(uint *)(extraout_EDX + 0x4c) = uVar7;
          iVar5 = 1;
        }
        pbVar8 = pbVar8 + local_24 + iVar5;
        *(undefined4 *)(extraout_EDX + 0x50) = 0;
        *(byte **)(extraout_EDX + 0x48) = pbVar8;
        if (((int)uVar7 <=
             *(int *)(extraout_EDX + 0x2c) - ((int)pbVar8 - *(int *)(extraout_EDX + 0x28))) &&
           ((*(int *)(extraout_EDX + 0x30) != 0 || (pbVar8[uVar7 - 1] == 0)))) goto LAB_00101910;
      }
    }
    iVar5 = 0x10b;
  }
LAB_001019a5:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar5;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00116110();
}

