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

int fts3auxFilterMethod(sqlite3_vtab_cursor *pCursor,int idxNum,char *idxStr,int nVal,
                       sqlite3_value **apVal)

{
  Fts3Table *p;
  sqlite3_vtab *psVar1;
  int iVar2;
  uchar *puVar3;
  sqlite3_vtab *psVar4;
  uint uVar5;
  undefined4 *puVar6;
  bool bVar7;
  byte bVar8;
  Fts3MultiSegReader *pCsr;
  char *in_stack_ffffffbc;
  int iVar9;
  uint local_30;
  uint local_2c;
  int local_20;
  
  bVar8 = 0;
  pCsr = (Fts3MultiSegReader *)(pCursor + 1);
  p = (Fts3Table *)pCursor->pVtab[1].pModule;
  if (idxNum == 1) {
    if (nVal < 2) {
      iVar9 = 0xe45ca;
      sqlite3Fts3SegReaderFinish(pCsr);
      sqlite3_free(pCursor[0xf].pVtab);
      sqlite3_free(pCursor[0x1b].pVtab);
      pCursor[1].pVtab = (sqlite3_vtab *)0x0;
      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;
      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);
      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;
          uVar5 != 0; uVar5 = uVar5 - 1) {
        *puVar6 = 0;
        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
      }
      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;
      local_30 = 0xffffffff;
      local_2c = 0xffffffff;
      local_20 = 0;
    }
    else {
      iVar9 = 0xe4483;
      sqlite3Fts3SegReaderFinish(pCsr);
      sqlite3_free(pCursor[0xf].pVtab);
      sqlite3_free(pCursor[0x1b].pVtab);
      pCursor[1].pVtab = (sqlite3_vtab *)0x0;
      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;
      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);
      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;
          uVar5 != 0; uVar5 = uVar5 - 1) {
        *puVar6 = 0;
        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
      }
      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;
      local_30 = 1;
      local_2c = 0xffffffff;
      local_20 = 0;
    }
LAB_000e44d8:
    puVar3 = sqlite3_value_text(*apVal);
    if (puVar3 == (uchar *)0x0) goto LAB_000e43ca;
    psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);
    pCursor[0xf].pVtab = psVar4;
    if (psVar4 != (sqlite3_vtab *)0x0) {
      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);
      pCursor[0x10].pVtab = psVar4;
      goto LAB_000e43ca;
    }
LAB_000e4628:
    iVar2 = 7;
  }
  else {
    local_30 = idxNum & 2;
    bVar7 = local_30 != 0;
    if (bVar7) {
      local_30 = 1;
    }
    local_2c = 0xffffffff;
    if ((idxNum & 4U) != 0) {
      local_2c = local_30;
      local_30 = local_30 + 1;
    }
    if ((int)local_30 < nVal) {
      iVar9 = 0xe4375;
      sqlite3Fts3SegReaderFinish(pCsr);
      sqlite3_free(pCursor[0xf].pVtab);
      sqlite3_free(pCursor[0x1b].pVtab);
      pCursor[1].pVtab = (sqlite3_vtab *)0x0;
      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;
      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);
      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;
          uVar5 != 0; uVar5 = uVar5 - 1) {
        *puVar6 = 0;
        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
      }
    }
    else {
      iVar9 = 0xe456e;
      sqlite3Fts3SegReaderFinish(pCsr);
      sqlite3_free(pCursor[0xf].pVtab);
      sqlite3_free(pCursor[0x1b].pVtab);
      pCursor[1].pVtab = (sqlite3_vtab *)0x0;
      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;
      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);
      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;
          uVar5 != 0; uVar5 = uVar5 - 1) {
        *puVar6 = 0;
        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
      }
      local_30 = 0xffffffff;
    }
    pCursor[0x12].pVtab = (sqlite3_vtab *)0x13;
    local_20 = 1;
    if (bVar7) goto LAB_000e44d8;
LAB_000e43ca:
    if (local_2c != 0xffffffff) {
      puVar3 = sqlite3_value_text(apVal[local_2c]);
      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);
      pCursor[0x13].pVtab = psVar4;
      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;
      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);
      pCursor[0x14].pVtab = psVar4;
    }
    psVar4 = (sqlite3_vtab *)0x0;
    if ((local_30 != 0xffffffff) &&
       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)) {
      psVar4 = psVar1;
    }
    pCursor[0x15].pVtab = psVar4;
    iVar2 = sqlite3Fts3SegReaderCursor
                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,
                       local_20,pCsr);
    if (iVar2 == 0) {
      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);
      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);
      if (iVar2 == 0) {
        iVar9 = fts3auxNextMethod(pCursor);
        return iVar9;
      }
    }
  }
  return iVar2;
}



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

int FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  char *pcVar4;
  size_t sVar5;
  int iVar6;
  uint uVar7;
  undefined4 *puVar8;
  bool bVar9;
  byte bVar10;
  uint local_30;
  uint local_2c;
  undefined4 local_20;
  
  bVar10 = 0;
  iVar2 = param_1 + 4;
  if (param_2 == 1) {
    if (param_4 < 2) {
      FUN_0008b940();
      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));
      *(undefined4 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x6c) = 0;
      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;
      for (; uVar7 != 0; uVar7 = uVar7 - 1) {
        *puVar8 = 0;
        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;
      }
      *(undefined4 *)(param_1 + 0x48) = 3;
      local_30 = 0xffffffff;
      local_2c = 0xffffffff;
      local_20 = 0;
    }
    else {
      FUN_0008b940();
      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));
      *(undefined4 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x6c) = 0;
      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;
      for (; uVar7 != 0; uVar7 = uVar7 - 1) {
        *puVar8 = 0;
        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;
      }
      *(undefined4 *)(param_1 + 0x48) = 3;
      local_30 = 1;
      local_2c = 0xffffffff;
      local_20 = 0;
    }
LAB_000e44d8:
    iVar6 = FUN_0004ce60(*param_5);
    if (iVar6 == 0) goto LAB_000e43ca;
    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);
    *(char **)(param_1 + 0x3c) = pcVar4;
    if (pcVar4 != (char *)0x0) {
      sVar5 = strlen(pcVar4);
      *(size_t *)(param_1 + 0x40) = sVar5;
      goto LAB_000e43ca;
    }
LAB_000e4628:
    iVar2 = 7;
  }
  else {
    local_30 = param_2 & 2;
    bVar9 = local_30 != 0;
    if (bVar9) {
      local_30 = 1;
    }
    local_2c = 0xffffffff;
    if ((param_2 & 4) != 0) {
      local_2c = local_30;
      local_30 = local_30 + 1;
    }
    if ((int)local_30 < param_4) {
      FUN_0008b940();
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));
      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));
      *(undefined4 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x6c) = 0;
      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;
      for (; uVar7 != 0; uVar7 = uVar7 - 1) {
        *puVar8 = 0;
        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;
      }
    }
    else {
      FUN_0008b940();
      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));
      *(undefined4 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x6c) = 0;
      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;
      for (; uVar7 != 0; uVar7 = uVar7 - 1) {
        *puVar8 = 0;
        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;
      }
      local_30 = 0xffffffff;
    }
    *(undefined4 *)(param_1 + 0x48) = 0x13;
    local_20 = 1;
    if (bVar9) goto LAB_000e44d8;
LAB_000e43ca:
    if (local_2c != 0xffffffff) {
      uVar3 = FUN_0004ce60(param_5[local_2c]);
      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);
      *(char **)(param_1 + 0x4c) = pcVar4;
      if (pcVar4 == (char *)0x0) goto LAB_000e4628;
      sVar5 = strlen(pcVar4);
      *(size_t *)(param_1 + 0x50) = sVar5;
    }
    iVar6 = 0;
    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {
      iVar6 = iVar1;
    }
    *(int *)(param_1 + 0x54) = iVar6;
    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),
                         0,local_20,iVar2);
    if (iVar2 == 0) {
      *(int *)(param_1 + 0x10) = param_1 + 0x3c;
      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));
      if (iVar2 == 0) {
        iVar2 = FUN_000e24f0();
        return iVar2;
      }
    }
  }
  return iVar2;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00014cf0
ADD EBX,0x64bdb
SUB ESP,0x2c
MOV ESI,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x18],EDX
MOV EDX,dword ptr [ESI]
LEA EBP,[ESI + 0x4]
MOV EDI,dword ptr [EDX + 0xc]
MOV dword ptr [ESP + 0x14],EDI
CMP EAX,0x1
JZ 0x000e4470
MOV EDI,EAX
XOR EDX,EDX
AND EDI,0x2
MOV dword ptr [ESP + 0xc],EDI
JZ 0x000e4345
MOV dword ptr [ESP + 0xc],0x1
MOV EDX,0x1
MOV dword ptr [ESP + 0x10],0xffffffff
TEST AL,0x4
JZ 0x000e4360
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x10],EAX
ADD EAX,0x1
MOV dword ptr [ESP + 0xc],EAX
CMP ECX,dword ptr [ESP + 0xc]
JLE 0x000e4560
MOV EAX,EBP
MOV byte ptr [ESP + 0x1c],DL
CALL 0x0008b940
SUB ESP,0xc
PUSH dword ptr [ESI + 0x3c]
CALL 0x00024cc0
POP EDI
PUSH dword ptr [ESI + 0x6c]
LEA EDI,[EBP + 0x4]
AND EDI,0xfffffffc
CALL 0x00024cc0
MOV ECX,EBP
XOR EAX,EAX
MOV dword ptr [ESI + 0x4],0x0
SUB ECX,EDI
MOV dword ptr [EBP + 0x68],0x0
ADD ESP,0x10
ADD ECX,0x6c
SHR ECX,0x2
STOSD.REP ES:EDI
MOVZX EDX,byte ptr [ESP + 0x1c]
MOV dword ptr [ESI + 0x48],0x13
MOV dword ptr [ESP + 0x1c],0x1
TEST DL,DL
JNZ 0x000e44d8
MOV EAX,dword ptr [ESP + 0x10]
CMP EAX,-0x1
JNZ 0x000e4430
MOV EAX,dword ptr [ESP + 0xc]
XOR EDI,EDI
CMP EAX,-0x1
JZ 0x000e43f5
SUB ESP,0xc
MOV EDX,dword ptr [ESP + 0x24]
PUSH dword ptr [EDX + EAX*0x4]
CALL 0x0002bb30
ADD ESP,0x10
TEST EAX,EAX
CMOVNS EDI,EAX
SUB ESP,0x8
MOV dword ptr [ESI + 0x54],EDI
XOR ECX,ECX
MOV EDX,EDI
PUSH EBP
PUSH dword ptr [ESP + 0x28]
PUSH 0x0
PUSH dword ptr [ESI + 0x40]
PUSH dword ptr [ESI + 0x3c]
PUSH -0x2
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x000e1350
ADD ESP,0x20
TEST EAX,EAX
JZ 0x000e4528
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
MOV EDX,dword ptr [ESP + 0x24]
PUSH dword ptr [EDX + EAX*0x4]
CALL 0x0004ce60
POP EDX
POP ECX
PUSH EAX
LEA EAX,[EBX + 0xfffade0f]
PUSH EAX
CALL 0x00071090
ADD ESP,0x10
MOV dword ptr [ESI + 0x4c],EAX
TEST EAX,EAX
JZ 0x000e4628
SUB ESP,0xc
PUSH EAX
CALL 0x00014230
ADD ESP,0x10
MOV dword ptr [ESI + 0x50],EAX
JMP 0x000e43d3
CMP ECX,0x1
JLE 0x000e45c0
MOV EAX,EBP
LEA EDI,[ESI + 0x8]
CALL 0x0008b940
SUB ESP,0xc
PUSH dword ptr [ESI + 0x3c]
AND EDI,0xfffffffc
CALL 0x00024cc0
POP ECX
PUSH dword ptr [ESI + 0x6c]
CALL 0x00024cc0
MOV ECX,EBP
ADD ESP,0x10
XOR EAX,EAX
SUB ECX,EDI
MOV dword ptr [ESI + 0x4],0x0
ADD ECX,0x6c
MOV dword ptr [EBP + 0x68],0x0
SHR ECX,0x2
STOSD.REP ES:EDI
MOV dword ptr [ESI + 0x48],0x3
MOV dword ptr [ESP + 0xc],0x1
MOV dword ptr [ESP + 0x10],0xffffffff
MOV dword ptr [ESP + 0x1c],0x0
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x24]
PUSH dword ptr [EAX]
CALL 0x0004ce60
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000e43ca
SUB ESP,0x8
PUSH EAX
LEA EAX,[EBX + 0xfffade0f]
PUSH EAX
CALL 0x00071090
ADD ESP,0x10
MOV dword ptr [ESI + 0x3c],EAX
TEST EAX,EAX
JZ 0x000e4628
SUB ESP,0xc
PUSH EAX
CALL 0x00014230
ADD ESP,0x10
MOV dword ptr [ESI + 0x40],EAX
JMP 0x000e43ca
LEA EAX,[ESI + 0x3c]
SUB ESP,0xc
MOV ECX,dword ptr [ESI + 0x3c]
MOV EDX,EBP
MOV dword ptr [ESI + 0x10],EAX
PUSH dword ptr [ESI + 0x40]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000e2860
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000e4422
MOV dword ptr [ESP + 0x40],ESI
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x000e24f0
MOV EAX,EBP
MOV byte ptr [ESP + 0x1c],DL
LEA EDI,[EBP + 0x4]
CALL 0x0008b940
SUB ESP,0xc
PUSH dword ptr [ESI + 0x3c]
AND EDI,0xfffffffc
CALL 0x00024cc0
POP EDX
PUSH dword ptr [ESI + 0x6c]
CALL 0x00024cc0
MOV ECX,EBP
XOR EAX,EAX
MOV dword ptr [ESI + 0x4],0x0
SUB ECX,EDI
MOV dword ptr [EBP + 0x68],0x0
ADD ESP,0x10
ADD ECX,0x6c
SHR ECX,0x2
STOSD.REP ES:EDI
MOV dword ptr [ESP + 0xc],0xffffffff
MOVZX EDX,byte ptr [ESP + 0x1c]
JMP 0x000e43b3
MOV EAX,EBP
LEA EDI,[ESI + 0x8]
CALL 0x0008b940
SUB ESP,0xc
PUSH dword ptr [ESI + 0x3c]
AND EDI,0xfffffffc
CALL 0x00024cc0
POP EAX
PUSH dword ptr [ESI + 0x6c]
CALL 0x00024cc0
MOV ECX,EBP
ADD ESP,0x10
XOR EAX,EAX
SUB ECX,EDI
MOV dword ptr [ESI + 0x4],0x0
ADD ECX,0x6c
MOV dword ptr [EBP + 0x68],0x0
SHR ECX,0x2
STOSD.REP ES:EDI
MOV dword ptr [ESI + 0x48],0x3
MOV dword ptr [ESP + 0xc],0xffffffff
MOV dword ptr [ESP + 0x10],0xffffffff
MOV dword ptr [ESP + 0x1c],0x0
JMP 0x000e44d8
MOV EAX,0x7
JMP 0x000e4422
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  bool bVar9;\n  byte bVar10;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_20;\n  \n  bVar10 = 0;\n  iVar2 = param_1 + 4;\n  if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }\n  return iVar2;\n}\n\n" comment (function_definition "int FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  bool bVar9;\n  byte bVar10;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_20;\n  \n  bVar10 = 0;\n  iVar2 = param_1 + 4;\n  if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }\n  return iVar2;\n}" primitive_type (function_declarator "FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)" identifier (parameter_list "(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  bool bVar9;\n  byte bVar10;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_20;\n  \n  bVar10 = 0;\n  iVar2 = param_1 + 4;\n  if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }\n  return iVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = param_1 + 4;" (assignment_expression "iVar2 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (if_statement "if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" if (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) (compound_statement "{\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }" { (if_statement "if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" if (parenthesized_expression "(param_4 < 2)" ( (binary_expression "param_4 < 2" identifier < number_literal) )) (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" { (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" ( (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x6c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" identifier = (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" ( (binary_expression "iVar2 - (int)puVar8" identifier - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal) >> number_literal)) ;) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" for ( ; (binary_expression "uVar7 != 0" identifier != number_literal) ; (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" else (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" { (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" ( (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x6c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" identifier = (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" ( (binary_expression "iVar2 - (int)puVar8" identifier - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal) >> number_literal)) ;) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" for ( ; (binary_expression "uVar7 != 0" identifier != number_literal) ; (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);" statement_identifier : (expression_statement "iVar6 = FUN_0004ce60(*param_5);" (assignment_expression "iVar6 = FUN_0004ce60(*param_5)" identifier = (call_expression "FUN_0004ce60(*param_5)" identifier (argument_list "(*param_5)" ( (pointer_expression "*param_5" * identifier) )))) ;)) (if_statement "if (iVar6 == 0) goto LAB_000e43ca;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000e43ca;" goto statement_identifier ;)) (expression_statement "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);" (assignment_expression "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6)" identifier = (cast_expression "(char *)FUN_00071090(&DAT_000f6ce3,iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00071090(&DAT_000f6ce3,iVar6)" identifier (argument_list "(&DAT_000f6ce3,iVar6)" ( (pointer_expression "&DAT_000f6ce3" & identifier) , identifier ))))) ;) (expression_statement "*(char **)(param_1 + 0x3c) = pcVar4;" (assignment_expression "*(char **)(param_1 + 0x3c) = pcVar4" (pointer_expression "*(char **)(param_1 + 0x3c)" * (cast_expression "(char **)(param_1 + 0x3c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\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      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }" { (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "*(size_t *)(param_1 + 0x40) = sVar5;" (assignment_expression "*(size_t *)(param_1 + 0x40) = sVar5" (pointer_expression "*(size_t *)(param_1 + 0x40)" * (cast_expression "(size_t *)(param_1 + 0x40)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_000e43ca;" goto statement_identifier ;) })) (labeled_statement "LAB_000e4628:\n    iVar2 = 7;" statement_identifier : (expression_statement "iVar2 = 7;" (assignment_expression "iVar2 = 7" identifier = number_literal) ;)) }) (else_clause "else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" else (compound_statement "{\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" { (expression_statement "local_30 = param_2 & 2;" (assignment_expression "local_30 = param_2 & 2" identifier = (binary_expression "param_2 & 2" identifier & number_literal)) ;) (expression_statement "bVar9 = local_30 != 0;" (assignment_expression "bVar9 = local_30 != 0" identifier = (binary_expression "local_30 != 0" identifier != number_literal)) ;) (if_statement "if (bVar9) {\n      local_30 = 1;\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      local_30 = 1;\n    }" { (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) })) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }" if (parenthesized_expression "((param_2 & 4) != 0)" ( (binary_expression "(param_2 & 4) != 0" (parenthesized_expression "(param_2 & 4)" ( (binary_expression "param_2 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }" { (expression_statement "local_2c = local_30;" (assignment_expression "local_2c = local_30" identifier = identifier) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) })) (if_statement "if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" if (parenthesized_expression "((int)local_30 < param_4)" ( (binary_expression "(int)local_30 < param_4" (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }" { (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" ( (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x6c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" identifier = (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" ( (binary_expression "iVar2 - (int)puVar8" identifier - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal) >> number_literal)) ;) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" for ( ; (binary_expression "uVar7 != 0" identifier != number_literal) ; (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }) (else_clause "else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" else (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" { (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" ( (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x6c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" identifier = (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" ( (binary_expression "iVar2 - (int)puVar8" identifier - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal) >> number_literal)) ;) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" for ( ; (binary_expression "uVar7 != 0" identifier != number_literal) ; (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0x13;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0x13" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_20 = 1;" (assignment_expression "local_20 = 1" identifier = number_literal) ;) (if_statement "if (bVar9) goto LAB_000e44d8;" if (parenthesized_expression "(bVar9)" ( identifier )) (goto_statement "goto LAB_000e44d8;" goto statement_identifier ;)) (labeled_statement "LAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" statement_identifier : (if_statement "if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" if (parenthesized_expression "(local_2c != 0xffffffff)" ( (binary_expression "local_2c != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" { (expression_statement "uVar3 = FUN_0004ce60(param_5[local_2c]);" (assignment_expression "uVar3 = FUN_0004ce60(param_5[local_2c])" identifier = (call_expression "FUN_0004ce60(param_5[local_2c])" identifier (argument_list "(param_5[local_2c])" ( (subscript_expression "param_5[local_2c]" identifier [ identifier ]) )))) ;) (expression_statement "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);" (assignment_expression "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3)" identifier = (cast_expression "(char *)FUN_00071090(&DAT_000f6ce3,uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00071090(&DAT_000f6ce3,uVar3)" identifier (argument_list "(&DAT_000f6ce3,uVar3)" ( (pointer_expression "&DAT_000f6ce3" & identifier) , identifier ))))) ;) (expression_statement "*(char **)(param_1 + 0x4c) = pcVar4;" (assignment_expression "*(char **)(param_1 + 0x4c) = pcVar4" (pointer_expression "*(char **)(param_1 + 0x4c)" * (cast_expression "(char **)(param_1 + 0x4c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pcVar4 == (char *)0x0) goto LAB_000e4628;" 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)) )) (goto_statement "goto LAB_000e4628;" goto statement_identifier ;)) (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "*(size_t *)(param_1 + 0x50) = sVar5;" (assignment_expression "*(size_t *)(param_1 + 0x50) = sVar5" (pointer_expression "*(size_t *)(param_1 + 0x50)" * (cast_expression "(size_t *)(param_1 + 0x50)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }" if (parenthesized_expression "((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1))" ( (binary_expression "(local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)" (parenthesized_expression "(local_30 != 0xffffffff)" ( (binary_expression "local_30 != 0xffffffff" identifier != number_literal) )) && (parenthesized_expression "(iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)" ( (comma_expression "iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1" (assignment_expression "iVar1 = FUN_0002bb30(param_5[local_30])" identifier = (call_expression "FUN_0002bb30(param_5[local_30])" identifier (argument_list "(param_5[local_30])" ( (subscript_expression "param_5[local_30]" identifier [ identifier ]) )))) , (binary_expression "-1 < iVar1" number_literal < identifier)) ))) )) (compound_statement "{\n      iVar6 = iVar1;\n    }" { (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" identifier = identifier) ;) })) (expression_statement "*(int *)(param_1 + 0x54) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x54) = iVar6" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);" (assignment_expression "iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" identifier = (call_expression "FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" identifier (argument_list "(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" ( number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }" { (expression_statement "*(int *)(param_1 + 0x10) = param_1 + 0x3c;" (assignment_expression "*(int *)(param_1 + 0x10) = param_1 + 0x3c" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "param_1 + 0x3c" identifier + number_literal)) ;) (expression_statement "iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));" (assignment_expression "iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40))" identifier = (call_expression "FUN_000e2860(*(undefined4 *)(param_1 + 0x40))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x40))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }" { (expression_statement "iVar2 = FUN_000e24f0();" (assignment_expression "iVar2 = FUN_000e24f0()" identifier = (call_expression "FUN_000e24f0()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })) })) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint fts3auxFilterMethod(sqlite3_vtab_cursor *pCursor,int idxNum,char *idxStr,int nVal,\n                       sqlite3_value **apVal)\n\n{\n  Fts3Table *p;\n  sqlite3_vtab *psVar1;\n  int iVar2;\n  uchar *puVar3;\n  sqlite3_vtab *psVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  bool bVar7;\n  byte bVar8;\n  Fts3MultiSegReader *pCsr;\n  char *in_stack_ffffffbc;\n  int iVar9;\n  uint local_30;\n  uint local_2c;\n  int local_20;\n  \n  bVar8 = 0;\n  pCsr = (Fts3MultiSegReader *)(pCursor + 1);\n  p = (Fts3Table *)pCursor->pVtab[1].pModule;\n  if (idxNum == 1) {\n    if (nVal < 2) {\n      iVar9 = 0xe45ca;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      iVar9 = 0xe4483;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    puVar3 = sqlite3_value_text(*apVal);\n    if (puVar3 == (uchar *)0x0) goto LAB_000e43ca;\n    psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n    pCursor[0xf].pVtab = psVar4;\n    if (psVar4 != (sqlite3_vtab *)0x0) {\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x10].pVtab = psVar4;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = idxNum & 2;\n    bVar7 = local_30 != 0;\n    if (bVar7) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((idxNum & 4U) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < nVal) {\n      iVar9 = 0xe4375;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n    }\n    else {\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    pCursor[0x12].pVtab = (sqlite3_vtab *)0x13;\n    local_20 = 1;\n    if (bVar7) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }\n    psVar4 = (sqlite3_vtab *)0x0;\n    if ((local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)) {\n      psVar4 = psVar1;\n    }\n    pCursor[0x15].pVtab = psVar4;\n    iVar2 = sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr);\n    if (iVar2 == 0) {\n      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);\n      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);\n      if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }\n    }\n  }\n  return iVar2;\n}\n\n" comment (function_definition "int fts3auxFilterMethod(sqlite3_vtab_cursor *pCursor,int idxNum,char *idxStr,int nVal,\n                       sqlite3_value **apVal)\n\n{\n  Fts3Table *p;\n  sqlite3_vtab *psVar1;\n  int iVar2;\n  uchar *puVar3;\n  sqlite3_vtab *psVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  bool bVar7;\n  byte bVar8;\n  Fts3MultiSegReader *pCsr;\n  char *in_stack_ffffffbc;\n  int iVar9;\n  uint local_30;\n  uint local_2c;\n  int local_20;\n  \n  bVar8 = 0;\n  pCsr = (Fts3MultiSegReader *)(pCursor + 1);\n  p = (Fts3Table *)pCursor->pVtab[1].pModule;\n  if (idxNum == 1) {\n    if (nVal < 2) {\n      iVar9 = 0xe45ca;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      iVar9 = 0xe4483;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    puVar3 = sqlite3_value_text(*apVal);\n    if (puVar3 == (uchar *)0x0) goto LAB_000e43ca;\n    psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n    pCursor[0xf].pVtab = psVar4;\n    if (psVar4 != (sqlite3_vtab *)0x0) {\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x10].pVtab = psVar4;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = idxNum & 2;\n    bVar7 = local_30 != 0;\n    if (bVar7) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((idxNum & 4U) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < nVal) {\n      iVar9 = 0xe4375;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n    }\n    else {\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    pCursor[0x12].pVtab = (sqlite3_vtab *)0x13;\n    local_20 = 1;\n    if (bVar7) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }\n    psVar4 = (sqlite3_vtab *)0x0;\n    if ((local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)) {\n      psVar4 = psVar1;\n    }\n    pCursor[0x15].pVtab = psVar4;\n    iVar2 = sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr);\n    if (iVar2 == 0) {\n      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);\n      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);\n      if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }\n    }\n  }\n  return iVar2;\n}" primitive_type (function_declarator "fts3auxFilterMethod(sqlite3_vtab_cursor *pCursor,int idxNum,char *idxStr,int nVal,\n                       sqlite3_value **apVal)" identifier (parameter_list "(sqlite3_vtab_cursor *pCursor,int idxNum,char *idxStr,int nVal,\n                       sqlite3_value **apVal)" ( (parameter_declaration "sqlite3_vtab_cursor *pCursor" type_identifier (pointer_declarator "*pCursor" * identifier)) , (parameter_declaration "int idxNum" primitive_type identifier) , (parameter_declaration "char *idxStr" primitive_type (pointer_declarator "*idxStr" * identifier)) , (parameter_declaration "int nVal" primitive_type identifier) , (parameter_declaration "sqlite3_value **apVal" type_identifier (pointer_declarator "**apVal" * (pointer_declarator "*apVal" * identifier))) ))) (compound_statement "{\n  Fts3Table *p;\n  sqlite3_vtab *psVar1;\n  int iVar2;\n  uchar *puVar3;\n  sqlite3_vtab *psVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  bool bVar7;\n  byte bVar8;\n  Fts3MultiSegReader *pCsr;\n  char *in_stack_ffffffbc;\n  int iVar9;\n  uint local_30;\n  uint local_2c;\n  int local_20;\n  \n  bVar8 = 0;\n  pCsr = (Fts3MultiSegReader *)(pCursor + 1);\n  p = (Fts3Table *)pCursor->pVtab[1].pModule;\n  if (idxNum == 1) {\n    if (nVal < 2) {\n      iVar9 = 0xe45ca;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      iVar9 = 0xe4483;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    puVar3 = sqlite3_value_text(*apVal);\n    if (puVar3 == (uchar *)0x0) goto LAB_000e43ca;\n    psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n    pCursor[0xf].pVtab = psVar4;\n    if (psVar4 != (sqlite3_vtab *)0x0) {\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x10].pVtab = psVar4;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = idxNum & 2;\n    bVar7 = local_30 != 0;\n    if (bVar7) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((idxNum & 4U) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < nVal) {\n      iVar9 = 0xe4375;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n    }\n    else {\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    pCursor[0x12].pVtab = (sqlite3_vtab *)0x13;\n    local_20 = 1;\n    if (bVar7) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }\n    psVar4 = (sqlite3_vtab *)0x0;\n    if ((local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)) {\n      psVar4 = psVar1;\n    }\n    pCursor[0x15].pVtab = psVar4;\n    iVar2 = sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr);\n    if (iVar2 == 0) {\n      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);\n      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);\n      if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }\n    }\n  }\n  return iVar2;\n}" { (declaration "Fts3Table *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "sqlite3_vtab *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uchar *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "sqlite3_vtab *psVar4;" type_identifier (pointer_declarator "*psVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "Fts3MultiSegReader *pCsr;" type_identifier (pointer_declarator "*pCsr" * identifier) ;) (declaration "char *in_stack_ffffffbc;" primitive_type (pointer_declarator "*in_stack_ffffffbc" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "pCsr = (Fts3MultiSegReader *)(pCursor + 1);" (assignment_expression "pCsr = (Fts3MultiSegReader *)(pCursor + 1)" identifier = (cast_expression "(Fts3MultiSegReader *)(pCursor + 1)" ( (type_descriptor "Fts3MultiSegReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pCursor + 1)" ( (binary_expression "pCursor + 1" identifier + number_literal) )))) ;) (expression_statement "p = (Fts3Table *)pCursor->pVtab[1].pModule;" (assignment_expression "p = (Fts3Table *)pCursor->pVtab[1].pModule" identifier = (cast_expression "(Fts3Table *)pCursor->pVtab[1].pModule" ( (type_descriptor "Fts3Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pCursor->pVtab[1].pModule" (subscript_expression "pCursor->pVtab[1]" (field_expression "pCursor->pVtab" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (if_statement "if (idxNum == 1) {\n    if (nVal < 2) {\n      iVar9 = 0xe45ca;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      iVar9 = 0xe4483;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    puVar3 = sqlite3_value_text(*apVal);\n    if (puVar3 == (uchar *)0x0) goto LAB_000e43ca;\n    psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n    pCursor[0xf].pVtab = psVar4;\n    if (psVar4 != (sqlite3_vtab *)0x0) {\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x10].pVtab = psVar4;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = idxNum & 2;\n    bVar7 = local_30 != 0;\n    if (bVar7) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((idxNum & 4U) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < nVal) {\n      iVar9 = 0xe4375;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n    }\n    else {\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    pCursor[0x12].pVtab = (sqlite3_vtab *)0x13;\n    local_20 = 1;\n    if (bVar7) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }\n    psVar4 = (sqlite3_vtab *)0x0;\n    if ((local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)) {\n      psVar4 = psVar1;\n    }\n    pCursor[0x15].pVtab = psVar4;\n    iVar2 = sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr);\n    if (iVar2 == 0) {\n      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);\n      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);\n      if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }\n    }\n  }" if (parenthesized_expression "(idxNum == 1)" ( (binary_expression "idxNum == 1" identifier == number_literal) )) (compound_statement "{\n    if (nVal < 2) {\n      iVar9 = 0xe45ca;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      iVar9 = 0xe4483;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    puVar3 = sqlite3_value_text(*apVal);\n    if (puVar3 == (uchar *)0x0) goto LAB_000e43ca;\n    psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n    pCursor[0xf].pVtab = psVar4;\n    if (psVar4 != (sqlite3_vtab *)0x0) {\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x10].pVtab = psVar4;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }" { (if_statement "if (nVal < 2) {\n      iVar9 = 0xe45ca;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      iVar9 = 0xe4483;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" if (parenthesized_expression "(nVal < 2)" ( (binary_expression "nVal < 2" identifier < number_literal) )) (compound_statement "{\n      iVar9 = 0xe45ca;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" { (expression_statement "iVar9 = 0xe45ca;" (assignment_expression "iVar9 = 0xe45ca" identifier = number_literal) ;) (expression_statement "sqlite3Fts3SegReaderFinish(pCsr);" (call_expression "sqlite3Fts3SegReaderFinish(pCsr)" identifier (argument_list "(pCsr)" ( identifier ))) ;) (expression_statement "sqlite3_free(pCursor[0xf].pVtab);" (call_expression "sqlite3_free(pCursor[0xf].pVtab)" identifier (argument_list "(pCursor[0xf].pVtab)" ( (field_expression "pCursor[0xf].pVtab" (subscript_expression "pCursor[0xf]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "sqlite3_free(pCursor[0x1b].pVtab);" (call_expression "sqlite3_free(pCursor[0x1b].pVtab)" identifier (argument_list "(pCursor[0x1b].pVtab)" ( (field_expression "pCursor[0x1b].pVtab" (subscript_expression "pCursor[0x1b]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "pCursor[1].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "pCursor[1].pVtab = (sqlite3_vtab *)0x0" (field_expression "pCursor[1].pVtab" (subscript_expression "pCursor[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0" (field_expression "pCursor[0x1b].pVtab" (subscript_expression "pCursor[0x1b]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);" (assignment_expression "puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(pCursor + 2) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(pCursor + 2) & 0xfffffffc)" ( (binary_expression "(uint)(pCursor + 2) & 0xfffffffc" (call_expression "(uint)(pCursor + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pCursor + 2)" ( (binary_expression "pCursor + 2" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }" for ( (assignment_expression "uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)))" ( (binary_expression "(int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))" (cast_expression "(int)pCsr" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))" ( (binary_expression "0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(pCursor + 2) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(pCursor + 2) & 0xfffffffc)" ( (binary_expression "(uint)(pCursor + 2) & 0xfffffffc" (call_expression "(uint)(pCursor + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pCursor + 2)" ( (binary_expression "pCursor + 2" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar5 != 0" identifier != number_literal) ; (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;" (assignment_expression "pCursor[0x12].pVtab = (sqlite3_vtab *)0x3" (field_expression "pCursor[0x12].pVtab" (subscript_expression "pCursor[0x12]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x3" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar9 = 0xe4483;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" else (compound_statement "{\n      iVar9 = 0xe4483;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" { (expression_statement "iVar9 = 0xe4483;" (assignment_expression "iVar9 = 0xe4483" identifier = number_literal) ;) (expression_statement "sqlite3Fts3SegReaderFinish(pCsr);" (call_expression "sqlite3Fts3SegReaderFinish(pCsr)" identifier (argument_list "(pCsr)" ( identifier ))) ;) (expression_statement "sqlite3_free(pCursor[0xf].pVtab);" (call_expression "sqlite3_free(pCursor[0xf].pVtab)" identifier (argument_list "(pCursor[0xf].pVtab)" ( (field_expression "pCursor[0xf].pVtab" (subscript_expression "pCursor[0xf]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "sqlite3_free(pCursor[0x1b].pVtab);" (call_expression "sqlite3_free(pCursor[0x1b].pVtab)" identifier (argument_list "(pCursor[0x1b].pVtab)" ( (field_expression "pCursor[0x1b].pVtab" (subscript_expression "pCursor[0x1b]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "pCursor[1].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "pCursor[1].pVtab = (sqlite3_vtab *)0x0" (field_expression "pCursor[1].pVtab" (subscript_expression "pCursor[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0" (field_expression "pCursor[0x1b].pVtab" (subscript_expression "pCursor[0x1b]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);" (assignment_expression "puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(pCursor + 2) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(pCursor + 2) & 0xfffffffc)" ( (binary_expression "(uint)(pCursor + 2) & 0xfffffffc" (call_expression "(uint)(pCursor + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pCursor + 2)" ( (binary_expression "pCursor + 2" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }" for ( (assignment_expression "uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)))" ( (binary_expression "(int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))" (cast_expression "(int)pCsr" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))" ( (binary_expression "0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(pCursor + 2) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(pCursor + 2) & 0xfffffffc)" ( (binary_expression "(uint)(pCursor + 2) & 0xfffffffc" (call_expression "(uint)(pCursor + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pCursor + 2)" ( (binary_expression "pCursor + 2" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar5 != 0" identifier != number_literal) ; (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "pCursor[0x12].pVtab = (sqlite3_vtab *)0x3;" (assignment_expression "pCursor[0x12].pVtab = (sqlite3_vtab *)0x3" (field_expression "pCursor[0x12].pVtab" (subscript_expression "pCursor[0x12]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x3" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_000e44d8:\n    puVar3 = sqlite3_value_text(*apVal);" statement_identifier : (expression_statement "puVar3 = sqlite3_value_text(*apVal);" (assignment_expression "puVar3 = sqlite3_value_text(*apVal)" identifier = (call_expression "sqlite3_value_text(*apVal)" identifier (argument_list "(*apVal)" ( (pointer_expression "*apVal" * identifier) )))) ;)) (if_statement "if (puVar3 == (uchar *)0x0) goto LAB_000e43ca;" if (parenthesized_expression "(puVar3 == (uchar *)0x0)" ( (binary_expression "puVar3 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000e43ca;" goto statement_identifier ;)) (expression_statement "psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);" (assignment_expression "psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3)" identifier = (cast_expression "(sqlite3_vtab *)sqlite3_mprintf("%s",puVar3)" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_mprintf("%s",puVar3)" identifier (argument_list "("%s",puVar3)" ( (string_literal ""%s"" " string_content ") , identifier ))))) ;) (expression_statement "pCursor[0xf].pVtab = psVar4;" (assignment_expression "pCursor[0xf].pVtab = psVar4" (field_expression "pCursor[0xf].pVtab" (subscript_expression "pCursor[0xf]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if (psVar4 != (sqlite3_vtab *)0x0) {\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x10].pVtab = psVar4;\n      goto LAB_000e43ca;\n    }" if (parenthesized_expression "(psVar4 != (sqlite3_vtab *)0x0)" ( (binary_expression "psVar4 != (sqlite3_vtab *)0x0" identifier != (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x10].pVtab = psVar4;\n      goto LAB_000e43ca;\n    }" { (expression_statement "psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);" (assignment_expression "psVar4 = (sqlite3_vtab *)strlen((char *)psVar4)" identifier = (cast_expression "(sqlite3_vtab *)strlen((char *)psVar4)" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strlen((char *)psVar4)" identifier (argument_list "((char *)psVar4)" ( (cast_expression "(char *)psVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (expression_statement "pCursor[0x10].pVtab = psVar4;" (assignment_expression "pCursor[0x10].pVtab = psVar4" (field_expression "pCursor[0x10].pVtab" (subscript_expression "pCursor[0x10]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (goto_statement "goto LAB_000e43ca;" goto statement_identifier ;) })) (labeled_statement "LAB_000e4628:\n    iVar2 = 7;" statement_identifier : (expression_statement "iVar2 = 7;" (assignment_expression "iVar2 = 7" identifier = number_literal) ;)) }) (else_clause "else {\n    local_30 = idxNum & 2;\n    bVar7 = local_30 != 0;\n    if (bVar7) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((idxNum & 4U) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < nVal) {\n      iVar9 = 0xe4375;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n    }\n    else {\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    pCursor[0x12].pVtab = (sqlite3_vtab *)0x13;\n    local_20 = 1;\n    if (bVar7) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }\n    psVar4 = (sqlite3_vtab *)0x0;\n    if ((local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)) {\n      psVar4 = psVar1;\n    }\n    pCursor[0x15].pVtab = psVar4;\n    iVar2 = sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr);\n    if (iVar2 == 0) {\n      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);\n      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);\n      if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }\n    }\n  }" else (compound_statement "{\n    local_30 = idxNum & 2;\n    bVar7 = local_30 != 0;\n    if (bVar7) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((idxNum & 4U) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < nVal) {\n      iVar9 = 0xe4375;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n    }\n    else {\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    pCursor[0x12].pVtab = (sqlite3_vtab *)0x13;\n    local_20 = 1;\n    if (bVar7) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }\n    psVar4 = (sqlite3_vtab *)0x0;\n    if ((local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)) {\n      psVar4 = psVar1;\n    }\n    pCursor[0x15].pVtab = psVar4;\n    iVar2 = sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr);\n    if (iVar2 == 0) {\n      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);\n      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);\n      if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }\n    }\n  }" { (expression_statement "local_30 = idxNum & 2;" (assignment_expression "local_30 = idxNum & 2" identifier = (binary_expression "idxNum & 2" identifier & number_literal)) ;) (expression_statement "bVar7 = local_30 != 0;" (assignment_expression "bVar7 = local_30 != 0" identifier = (binary_expression "local_30 != 0" identifier != number_literal)) ;) (if_statement "if (bVar7) {\n      local_30 = 1;\n    }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n      local_30 = 1;\n    }" { (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) })) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((idxNum & 4U) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }" if (parenthesized_expression "((idxNum & 4U) != 0)" ( (binary_expression "(idxNum & 4U) != 0" (parenthesized_expression "(idxNum & 4U)" ( (binary_expression "idxNum & 4U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }" { (expression_statement "local_2c = local_30;" (assignment_expression "local_2c = local_30" identifier = identifier) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) })) (if_statement "if ((int)local_30 < nVal) {\n      iVar9 = 0xe4375;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n    }\n    else {\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" if (parenthesized_expression "((int)local_30 < nVal)" ( (binary_expression "(int)local_30 < nVal" (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n      iVar9 = 0xe4375;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n    }" { (expression_statement "iVar9 = 0xe4375;" (assignment_expression "iVar9 = 0xe4375" identifier = number_literal) ;) (expression_statement "sqlite3Fts3SegReaderFinish(pCsr);" (call_expression "sqlite3Fts3SegReaderFinish(pCsr)" identifier (argument_list "(pCsr)" ( identifier ))) ;) (expression_statement "sqlite3_free(pCursor[0xf].pVtab);" (call_expression "sqlite3_free(pCursor[0xf].pVtab)" identifier (argument_list "(pCursor[0xf].pVtab)" ( (field_expression "pCursor[0xf].pVtab" (subscript_expression "pCursor[0xf]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "sqlite3_free(pCursor[0x1b].pVtab);" (call_expression "sqlite3_free(pCursor[0x1b].pVtab)" identifier (argument_list "(pCursor[0x1b].pVtab)" ( (field_expression "pCursor[0x1b].pVtab" (subscript_expression "pCursor[0x1b]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "pCursor[1].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "pCursor[1].pVtab = (sqlite3_vtab *)0x0" (field_expression "pCursor[1].pVtab" (subscript_expression "pCursor[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0" (field_expression "pCursor[0x1b].pVtab" (subscript_expression "pCursor[0x1b]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);" (assignment_expression "puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(pCursor + 2) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(pCursor + 2) & 0xfffffffc)" ( (binary_expression "(uint)(pCursor + 2) & 0xfffffffc" (call_expression "(uint)(pCursor + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pCursor + 2)" ( (binary_expression "pCursor + 2" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }" for ( (assignment_expression "uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)))" ( (binary_expression "(int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))" (cast_expression "(int)pCsr" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))" ( (binary_expression "0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(pCursor + 2) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(pCursor + 2) & 0xfffffffc)" ( (binary_expression "(uint)(pCursor + 2) & 0xfffffffc" (call_expression "(uint)(pCursor + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pCursor + 2)" ( (binary_expression "pCursor + 2" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar5 != 0" identifier != number_literal) ; (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }) (else_clause "else {\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" else (compound_statement "{\n      iVar9 = 0xe456e;\n      sqlite3Fts3SegReaderFinish(pCsr);\n      sqlite3_free(pCursor[0xf].pVtab);\n      sqlite3_free(pCursor[0x1b].pVtab);\n      pCursor[1].pVtab = (sqlite3_vtab *)0x0;\n      pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;\n      puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);\n      for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" { (expression_statement "iVar9 = 0xe456e;" (assignment_expression "iVar9 = 0xe456e" identifier = number_literal) ;) (expression_statement "sqlite3Fts3SegReaderFinish(pCsr);" (call_expression "sqlite3Fts3SegReaderFinish(pCsr)" identifier (argument_list "(pCsr)" ( identifier ))) ;) (expression_statement "sqlite3_free(pCursor[0xf].pVtab);" (call_expression "sqlite3_free(pCursor[0xf].pVtab)" identifier (argument_list "(pCursor[0xf].pVtab)" ( (field_expression "pCursor[0xf].pVtab" (subscript_expression "pCursor[0xf]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "sqlite3_free(pCursor[0x1b].pVtab);" (call_expression "sqlite3_free(pCursor[0x1b].pVtab)" identifier (argument_list "(pCursor[0x1b].pVtab)" ( (field_expression "pCursor[0x1b].pVtab" (subscript_expression "pCursor[0x1b]" identifier [ number_literal ]) . field_identifier) ))) ;) (expression_statement "pCursor[1].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "pCursor[1].pVtab = (sqlite3_vtab *)0x0" (field_expression "pCursor[1].pVtab" (subscript_expression "pCursor[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0;" (assignment_expression "pCursor[0x1b].pVtab = (sqlite3_vtab *)0x0" (field_expression "pCursor[0x1b].pVtab" (subscript_expression "pCursor[0x1b]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc);" (assignment_expression "puVar6 = (undefined4 *)((uint)(pCursor + 2) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(pCursor + 2) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(pCursor + 2) & 0xfffffffc)" ( (binary_expression "(uint)(pCursor + 2) & 0xfffffffc" (call_expression "(uint)(pCursor + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pCursor + 2)" ( (binary_expression "pCursor + 2" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2;\n          uVar5 != 0; uVar5 = uVar5 - 1) {\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }" for ( (assignment_expression "uVar5 = (uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)))" ( (binary_expression "(int)pCsr + (0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))" (cast_expression "(int)pCsr" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc))" ( (binary_expression "0x6c - (int)((uint)(pCursor + 2) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(pCursor + 2) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(pCursor + 2) & 0xfffffffc)" ( (binary_expression "(uint)(pCursor + 2) & 0xfffffffc" (call_expression "(uint)(pCursor + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pCursor + 2)" ( (binary_expression "pCursor + 2" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar5 != 0" identifier != number_literal) ; (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar6 = 0;\n        puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n      }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) }))) (expression_statement "pCursor[0x12].pVtab = (sqlite3_vtab *)0x13;" (assignment_expression "pCursor[0x12].pVtab = (sqlite3_vtab *)0x13" (field_expression "pCursor[0x12].pVtab" (subscript_expression "pCursor[0x12]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)0x13" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 1;" (assignment_expression "local_20 = 1" identifier = number_literal) ;) (if_statement "if (bVar7) goto LAB_000e44d8;" if (parenthesized_expression "(bVar7)" ( identifier )) (goto_statement "goto LAB_000e44d8;" goto statement_identifier ;)) (labeled_statement "LAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }" statement_identifier : (if_statement "if (local_2c != 0xffffffff) {\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }" if (parenthesized_expression "(local_2c != 0xffffffff)" ( (binary_expression "local_2c != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n      puVar3 = sqlite3_value_text(apVal[local_2c]);\n      psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);\n      pCursor[0x13].pVtab = psVar4;\n      if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;\n      psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);\n      pCursor[0x14].pVtab = psVar4;\n    }" { (expression_statement "puVar3 = sqlite3_value_text(apVal[local_2c]);" (assignment_expression "puVar3 = sqlite3_value_text(apVal[local_2c])" identifier = (call_expression "sqlite3_value_text(apVal[local_2c])" identifier (argument_list "(apVal[local_2c])" ( (subscript_expression "apVal[local_2c]" identifier [ identifier ]) )))) ;) (expression_statement "psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3);" (assignment_expression "psVar4 = (sqlite3_vtab *)sqlite3_mprintf("%s",puVar3)" identifier = (cast_expression "(sqlite3_vtab *)sqlite3_mprintf("%s",puVar3)" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_mprintf("%s",puVar3)" identifier (argument_list "("%s",puVar3)" ( (string_literal ""%s"" " string_content ") , identifier ))))) ;) (expression_statement "pCursor[0x13].pVtab = psVar4;" (assignment_expression "pCursor[0x13].pVtab = psVar4" (field_expression "pCursor[0x13].pVtab" (subscript_expression "pCursor[0x13]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if (psVar4 == (sqlite3_vtab *)0x0) goto LAB_000e4628;" if (parenthesized_expression "(psVar4 == (sqlite3_vtab *)0x0)" ( (binary_expression "psVar4 == (sqlite3_vtab *)0x0" identifier == (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000e4628;" goto statement_identifier ;)) (expression_statement "psVar4 = (sqlite3_vtab *)strlen((char *)psVar4);" (assignment_expression "psVar4 = (sqlite3_vtab *)strlen((char *)psVar4)" identifier = (cast_expression "(sqlite3_vtab *)strlen((char *)psVar4)" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strlen((char *)psVar4)" identifier (argument_list "((char *)psVar4)" ( (cast_expression "(char *)psVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (expression_statement "pCursor[0x14].pVtab = psVar4;" (assignment_expression "pCursor[0x14].pVtab = psVar4" (field_expression "pCursor[0x14].pVtab" (subscript_expression "pCursor[0x14]" identifier [ number_literal ]) . field_identifier) = identifier) ;) }))) (expression_statement "psVar4 = (sqlite3_vtab *)0x0;" (assignment_expression "psVar4 = (sqlite3_vtab *)0x0" identifier = (cast_expression "(sqlite3_vtab *)0x0" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)) {\n      psVar4 = psVar1;\n    }" if (parenthesized_expression "((local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1))" ( (binary_expression "(local_30 != 0xffffffff) &&\n       (psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)" (parenthesized_expression "(local_30 != 0xffffffff)" ( (binary_expression "local_30 != 0xffffffff" identifier != number_literal) )) && (parenthesized_expression "(psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1)" ( (comma_expression "psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30]), -1 < (int)psVar1" (assignment_expression "psVar1 = (sqlite3_vtab *)sqlite3_value_int(apVal[local_30])" identifier = (cast_expression "(sqlite3_vtab *)sqlite3_value_int(apVal[local_30])" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_value_int(apVal[local_30])" identifier (argument_list "(apVal[local_30])" ( (subscript_expression "apVal[local_30]" identifier [ identifier ]) ))))) , (binary_expression "-1 < (int)psVar1" number_literal < (cast_expression "(int)psVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      psVar4 = psVar1;\n    }" { (expression_statement "psVar4 = psVar1;" (assignment_expression "psVar4 = psVar1" identifier = identifier) ;) })) (expression_statement "pCursor[0x15].pVtab = psVar4;" (assignment_expression "pCursor[0x15].pVtab = psVar4" (field_expression "pCursor[0x15].pVtab" (subscript_expression "pCursor[0x15]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "iVar2 = sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr);" (assignment_expression "iVar2 = sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr)" identifier = (call_expression "sqlite3Fts3SegReaderCursor\n                      (p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr)" identifier (argument_list "(p,(int)psVar4,0,-2,(char *)pCursor[0xf].pVtab,(int)pCursor[0x10].pVtab,0,\n                       local_20,pCsr)" ( identifier , (cast_expression "(int)psVar4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal , (cast_expression "(char *)pCursor[0xf].pVtab" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pCursor[0xf].pVtab" (subscript_expression "pCursor[0xf]" identifier [ number_literal ]) . field_identifier)) , (cast_expression "(int)pCursor[0x10].pVtab" ( (type_descriptor "int" primitive_type) ) (field_expression "pCursor[0x10].pVtab" (subscript_expression "pCursor[0x10]" identifier [ number_literal ]) . field_identifier)) , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);\n      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);\n      if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);\n      iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);\n      if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }\n    }" { (expression_statement "pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf);" (assignment_expression "pCursor[4].pVtab = (sqlite3_vtab *)(pCursor + 0xf)" (field_expression "pCursor[4].pVtab" (subscript_expression "pCursor[4]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_vtab *)(pCursor + 0xf)" ( (type_descriptor "sqlite3_vtab *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pCursor + 0xf)" ( (binary_expression "pCursor + 0xf" identifier + number_literal) )))) ;) (expression_statement "iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);" (assignment_expression "iVar2 = fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9)" identifier = (call_expression "fts3SegReaderStart((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9)" identifier (argument_list "((Fts3Table *)pCursor[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9)" ( (cast_expression "(Fts3Table *)pCursor[0x10].pVtab" ( (type_descriptor "Fts3Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pCursor[0x10].pVtab" (subscript_expression "pCursor[0x10]" identifier [ number_literal ]) . field_identifier)) , identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar9 = fts3auxNextMethod(pCursor);\n        return iVar9;\n      }" { (expression_statement "iVar9 = fts3auxNextMethod(pCursor);" (assignment_expression "iVar9 = fts3auxNextMethod(pCursor)" identifier = (call_expression "fts3auxNextMethod(pCursor)" identifier (argument_list "(pCursor)" ( identifier )))) ;) (return_statement "return iVar9;" return identifier ;) })) })) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "int FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  bool bVar9;\n  byte bVar10;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_20;\n  \n  bVar10 = 0;\n  iVar2 = param_1 + 4;\n  if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }\n  return iVar2;\n}\n\n" (function_definition "int FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  bool bVar9;\n  byte bVar10;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_20;\n  \n  bVar10 = 0;\n  iVar2 = param_1 + 4;\n  if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }\n  return iVar2;\n}" primitive_type (function_declarator "FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)" identifier (parameter_list "(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  bool bVar9;\n  byte bVar10;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_20;\n  \n  bVar10 = 0;\n  iVar2 = param_1 + 4;\n  if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }\n  return iVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (expression_statement "iVar2 = param_1 + 4;" (assignment_expression "iVar2 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (if_statement "if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" if (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) (compound_statement "{\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }" { (if_statement "if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" if (parenthesized_expression "(param_4 < 2)" ( (binary_expression "param_4 < 2" identifier < number_literal) )) (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" { (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" ( (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x6c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" identifier = (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" ( (binary_expression "iVar2 - (int)puVar8" identifier - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal) >> number_literal)) ;) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" for ( ; (binary_expression "uVar7 != 0" identifier != number_literal) ; (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" else (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" { (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" ( (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x6c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" identifier = (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" ( (binary_expression "iVar2 - (int)puVar8" identifier - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal) >> number_literal)) ;) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" for ( ; (binary_expression "uVar7 != 0" identifier != number_literal) ; (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);" statement_identifier : (expression_statement "iVar6 = FUN_0004ce60(*param_5);" (assignment_expression "iVar6 = FUN_0004ce60(*param_5)" identifier = (call_expression "FUN_0004ce60(*param_5)" identifier (argument_list "(*param_5)" ( (pointer_expression "*param_5" * identifier) )))) ;)) (if_statement "if (iVar6 == 0) goto LAB_000e43ca;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000e43ca;" goto statement_identifier ;)) (expression_statement "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);" (assignment_expression "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6)" identifier = (cast_expression "(char *)FUN_00071090(&DAT_000f6ce3,iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00071090(&DAT_000f6ce3,iVar6)" identifier (argument_list "(&DAT_000f6ce3,iVar6)" ( (pointer_expression "&DAT_000f6ce3" & identifier) , identifier ))))) ;) (expression_statement "*(char **)(param_1 + 0x3c) = pcVar4;" (assignment_expression "*(char **)(param_1 + 0x3c) = pcVar4" (pointer_expression "*(char **)(param_1 + 0x3c)" * (cast_expression "(char **)(param_1 + 0x3c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\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      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }" { (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "*(size_t *)(param_1 + 0x40) = sVar5;" (assignment_expression "*(size_t *)(param_1 + 0x40) = sVar5" (pointer_expression "*(size_t *)(param_1 + 0x40)" * (cast_expression "(size_t *)(param_1 + 0x40)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_000e43ca;" goto statement_identifier ;) })) (labeled_statement "LAB_000e4628:\n    iVar2 = 7;" statement_identifier : (expression_statement "iVar2 = 7;" (assignment_expression "iVar2 = 7" identifier = number_literal) ;)) }) (else_clause "else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" else (compound_statement "{\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" { (expression_statement "local_30 = param_2 & 2;" (assignment_expression "local_30 = param_2 & 2" identifier = (binary_expression "param_2 & 2" identifier & number_literal)) ;) (expression_statement "bVar9 = local_30 != 0;" (assignment_expression "bVar9 = local_30 != 0" identifier = (binary_expression "local_30 != 0" identifier != number_literal)) ;) (if_statement "if (bVar9) {\n      local_30 = 1;\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      local_30 = 1;\n    }" { (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) })) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }" if (parenthesized_expression "((param_2 & 4) != 0)" ( (binary_expression "(param_2 & 4) != 0" (parenthesized_expression "(param_2 & 4)" ( (binary_expression "param_2 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }" { (expression_statement "local_2c = local_30;" (assignment_expression "local_2c = local_30" identifier = identifier) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) })) (if_statement "if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" if (parenthesized_expression "((int)local_30 < param_4)" ( (binary_expression "(int)local_30 < param_4" (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }" { (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" ( (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x6c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" identifier = (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" ( (binary_expression "iVar2 - (int)puVar8" identifier - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal) >> number_literal)) ;) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" for ( ; (binary_expression "uVar7 != 0" identifier != number_literal) ; (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }) (else_clause "else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" else (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" { (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" ( (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" identifier + number_literal) & number_literal) )))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x6c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" identifier = (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" ( (binary_expression "iVar2 - (int)puVar8" identifier - (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) + number_literal) >> number_literal)) ;) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" for ( ; (binary_expression "uVar7 != 0" identifier != number_literal) ; (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" identifier = number_literal) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0x13;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0x13" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_20 = 1;" (assignment_expression "local_20 = 1" identifier = number_literal) ;) (if_statement "if (bVar9) goto LAB_000e44d8;" if (parenthesized_expression "(bVar9)" ( identifier )) (goto_statement "goto LAB_000e44d8;" goto statement_identifier ;)) (labeled_statement "LAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" statement_identifier : (if_statement "if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" if (parenthesized_expression "(local_2c != 0xffffffff)" ( (binary_expression "local_2c != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" { (expression_statement "uVar3 = FUN_0004ce60(param_5[local_2c]);" (assignment_expression "uVar3 = FUN_0004ce60(param_5[local_2c])" identifier = (call_expression "FUN_0004ce60(param_5[local_2c])" identifier (argument_list "(param_5[local_2c])" ( (subscript_expression "param_5[local_2c]" identifier [ identifier ]) )))) ;) (expression_statement "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);" (assignment_expression "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3)" identifier = (cast_expression "(char *)FUN_00071090(&DAT_000f6ce3,uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00071090(&DAT_000f6ce3,uVar3)" identifier (argument_list "(&DAT_000f6ce3,uVar3)" ( (pointer_expression "&DAT_000f6ce3" & identifier) , identifier ))))) ;) (expression_statement "*(char **)(param_1 + 0x4c) = pcVar4;" (assignment_expression "*(char **)(param_1 + 0x4c) = pcVar4" (pointer_expression "*(char **)(param_1 + 0x4c)" * (cast_expression "(char **)(param_1 + 0x4c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pcVar4 == (char *)0x0) goto LAB_000e4628;" 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)) )) (goto_statement "goto LAB_000e4628;" goto statement_identifier ;)) (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "*(size_t *)(param_1 + 0x50) = sVar5;" (assignment_expression "*(size_t *)(param_1 + 0x50) = sVar5" (pointer_expression "*(size_t *)(param_1 + 0x50)" * (cast_expression "(size_t *)(param_1 + 0x50)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }" if (parenthesized_expression "((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1))" ( (binary_expression "(local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)" (parenthesized_expression "(local_30 != 0xffffffff)" ( (binary_expression "local_30 != 0xffffffff" identifier != number_literal) )) && (parenthesized_expression "(iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)" ( (comma_expression "iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1" (assignment_expression "iVar1 = FUN_0002bb30(param_5[local_30])" identifier = (call_expression "FUN_0002bb30(param_5[local_30])" identifier (argument_list "(param_5[local_30])" ( (subscript_expression "param_5[local_30]" identifier [ identifier ]) )))) , (binary_expression "-1 < iVar1" number_literal < identifier)) ))) )) (compound_statement "{\n      iVar6 = iVar1;\n    }" { (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" identifier = identifier) ;) })) (expression_statement "*(int *)(param_1 + 0x54) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x54) = iVar6" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);" (assignment_expression "iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" identifier = (call_expression "FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" identifier (argument_list "(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" ( number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }" { (expression_statement "*(int *)(param_1 + 0x10) = param_1 + 0x3c;" (assignment_expression "*(int *)(param_1 + 0x10) = param_1 + 0x3c" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "param_1 + 0x3c" identifier + number_literal)) ;) (expression_statement "iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));" (assignment_expression "iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40))" identifier = (call_expression "FUN_000e2860(*(undefined4 *)(param_1 + 0x40))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x40))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }" { (expression_statement "iVar2 = FUN_000e24f0();" (assignment_expression "iVar2 = FUN_000e24f0()" identifier = (call_expression "FUN_000e24f0()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })) })) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & 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 (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) ;) (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 IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + LIT) >> LIT)) ;) (for_statement for ( ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (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 IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & 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 (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) ;) (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 IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + LIT) >> LIT)) ;) (for_statement for ( ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (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 IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & 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) ;) (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 IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + LIT) >> LIT)) ;) (for_statement for ( ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & 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 (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) ;) (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 IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + LIT) >> LIT)) ;) (for_statement for ( ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (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) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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 = (call_expression IDENT (argument_list ( LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , IDENT , IDENT )))) ;) (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) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })) })) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  bool bVar9;\n  byte bVar10;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_20;\n  \n  bVar10 = 0;\n  iVar2 = param_1 + 4;\n  if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }\n  return iVar2;\n}" (primitive_type "int") (function_declarator "FUN_000e42f0(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)" (identifier "FUN_000e42f0") (parameter_list "(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 *param_5" (type_identifier "undefined4") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  bool bVar9;\n  byte bVar10;\n  uint local_30;\n  uint local_2c;\n  undefined4 local_20;\n  \n  bVar10 = 0;\n  iVar2 = param_1 + 4;\n  if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }\n  return iVar2;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" (identifier "bVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = param_1 + 4;" (assignment_expression "iVar2 = param_1 + 4" (identifier "iVar2") (= "=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (param_2 == 1) {\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }\n  else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(param_2 == 1)" (( "(") (binary_expression "param_2 == 1" (identifier "param_2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\nLAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);\n    if (iVar6 == 0) goto LAB_000e43ca;\n    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);\n    *(char **)(param_1 + 0x3c) = pcVar4;\n    if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }\nLAB_000e4628:\n    iVar2 = 7;\n  }" ({ "{") (if_statement "if (param_4 < 2) {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" (if "if") (parenthesized_expression "(param_4 < 2)" (( "(") (binary_expression "param_4 < 2" (identifier "param_4") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 0xffffffff;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" ({ "{") (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" (identifier "FUN_0008b940") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" (( "(") (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" (identifier "param_1") (+ "+") (number_literal "8U")) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x3c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x6c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" (identifier "uVar7") (= "=") (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" (( "(") (binary_expression "iVar2 - (int)puVar8" (identifier "iVar2") (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")) (+ "+") (number_literal "0x6cU")) (>> ">>") (number_literal "2"))) (; ";")) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" (for "for") (( "(") (; ";") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar7 = uVar7 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" (identifier "puVar8") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" (identifier "local_30") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" (identifier "local_2c") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" (else "else") (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      *(undefined4 *)(param_1 + 0x48) = 3;\n      local_30 = 1;\n      local_2c = 0xffffffff;\n      local_20 = 0;\n    }" ({ "{") (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" (identifier "FUN_0008b940") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" (( "(") (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" (identifier "param_1") (+ "+") (number_literal "8U")) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x3c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x6c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" (identifier "uVar7") (= "=") (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" (( "(") (binary_expression "iVar2 - (int)puVar8" (identifier "iVar2") (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")) (+ "+") (number_literal "0x6cU")) (>> ">>") (number_literal "2"))) (; ";")) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" (for "for") (( "(") (; ";") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar7 = uVar7 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" (identifier "puVar8") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 3;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 3" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" (identifier "local_30") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" (identifier "local_2c") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_000e44d8:\n    iVar6 = FUN_0004ce60(*param_5);" (statement_identifier "LAB_000e44d8") (: ":") (expression_statement "iVar6 = FUN_0004ce60(*param_5);" (assignment_expression "iVar6 = FUN_0004ce60(*param_5)" (identifier "iVar6") (= "=") (call_expression "FUN_0004ce60(*param_5)" (identifier "FUN_0004ce60") (argument_list "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")))) (; ";"))) (if_statement "if (iVar6 == 0) goto LAB_000e43ca;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000e43ca;" (goto "goto") (statement_identifier "LAB_000e43ca") (; ";"))) (expression_statement "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);" (assignment_expression "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6)" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_00071090(&DAT_000f6ce3,iVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00071090(&DAT_000f6ce3,iVar6)" (identifier "FUN_00071090") (argument_list "(&DAT_000f6ce3,iVar6)" (( "(") (pointer_expression "&DAT_000f6ce3" (& "&") (identifier "DAT_000f6ce3")) (, ",") (identifier "iVar6") () ")"))))) (; ";")) (expression_statement "*(char **)(param_1 + 0x3c) = pcVar4;" (assignment_expression "*(char **)(param_1 + 0x3c) = pcVar4" (pointer_expression "*(char **)(param_1 + 0x3c)" (* "*") (cast_expression "(char **)(param_1 + 0x3c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "pcVar4")) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x40) = sVar5;\n      goto LAB_000e43ca;\n    }" ({ "{") (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" (identifier "sVar5") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "*(size_t *)(param_1 + 0x40) = sVar5;" (assignment_expression "*(size_t *)(param_1 + 0x40) = sVar5" (pointer_expression "*(size_t *)(param_1 + 0x40)" (* "*") (cast_expression "(size_t *)(param_1 + 0x40)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "sVar5")) (; ";")) (goto_statement "goto LAB_000e43ca;" (goto "goto") (statement_identifier "LAB_000e43ca") (; ";")) (} "}"))) (labeled_statement "LAB_000e4628:\n    iVar2 = 7;" (statement_identifier "LAB_000e4628") (: ":") (expression_statement "iVar2 = 7;" (assignment_expression "iVar2 = 7" (identifier "iVar2") (= "=") (number_literal "7")) (; ";"))) (} "}")) (else_clause "else {\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" (else "else") (compound_statement "{\n    local_30 = param_2 & 2;\n    bVar9 = local_30 != 0;\n    if (bVar9) {\n      local_30 = 1;\n    }\n    local_2c = 0xffffffff;\n    if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }\n    if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }\n    *(undefined4 *)(param_1 + 0x48) = 0x13;\n    local_20 = 1;\n    if (bVar9) goto LAB_000e44d8;\nLAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }\n    iVar6 = 0;\n    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }\n    *(int *)(param_1 + 0x54) = iVar6;\n    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);\n    if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }\n  }" ({ "{") (expression_statement "local_30 = param_2 & 2;" (assignment_expression "local_30 = param_2 & 2" (identifier "local_30") (= "=") (binary_expression "param_2 & 2" (identifier "param_2") (& "&") (number_literal "2"))) (; ";")) (expression_statement "bVar9 = local_30 != 0;" (assignment_expression "bVar9 = local_30 != 0" (identifier "bVar9") (= "=") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0"))) (; ";")) (if_statement "if (bVar9) {\n      local_30 = 1;\n    }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n      local_30 = 1;\n    }" ({ "{") (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" (identifier "local_30") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "local_2c = 0xffffffff;" (assignment_expression "local_2c = 0xffffffff" (identifier "local_2c") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if ((param_2 & 4) != 0) {\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }" (if "if") (parenthesized_expression "((param_2 & 4) != 0)" (( "(") (binary_expression "(param_2 & 4) != 0" (parenthesized_expression "(param_2 & 4)" (( "(") (binary_expression "param_2 & 4" (identifier "param_2") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_2c = local_30;\n      local_30 = local_30 + 1;\n    }" ({ "{") (expression_statement "local_2c = local_30;" (assignment_expression "local_2c = local_30" (identifier "local_2c") (= "=") (identifier "local_30")) (; ";")) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" (identifier "local_30") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((int)local_30 < param_4) {\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }\n    else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" (if "if") (parenthesized_expression "((int)local_30 < param_4)" (( "(") (binary_expression "(int)local_30 < param_4" (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30")) (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n      FUN_0008b940();\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n    }" ({ "{") (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" (identifier "FUN_0008b940") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x3c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" (( "(") (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" (identifier "param_1") (+ "+") (number_literal "8U")) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x6c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" (identifier "uVar7") (= "=") (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" (( "(") (binary_expression "iVar2 - (int)puVar8" (identifier "iVar2") (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")) (+ "+") (number_literal "0x6cU")) (>> ">>") (number_literal "2"))) (; ";")) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" (for "for") (( "(") (; ";") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar7 = uVar7 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" (identifier "puVar8") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" (else "else") (compound_statement "{\n      FUN_0008b940();\n      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));\n      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));\n      *(undefined4 *)(param_1 + 4) = 0;\n      *(undefined4 *)(param_1 + 0x6c) = 0;\n      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;\n      for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }\n      local_30 = 0xffffffff;\n    }" ({ "{") (expression_statement "FUN_0008b940();" (call_expression "FUN_0008b940()" (identifier "FUN_0008b940") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(param_1 + 8U & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8U & 0xfffffffc)" (( "(") (binary_expression "param_1 + 8U & 0xfffffffc" (binary_expression "param_1 + 8U" (identifier "param_1") (+ "+") (number_literal "8U")) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x3c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));" (call_expression "FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c))" (identifier "FUN_00024cc0") (argument_list "(*(undefined4 *)(param_1 + 0x6c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;" (assignment_expression "uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2" (identifier "uVar7") (= "=") (binary_expression "(iVar2 - (int)puVar8) + 0x6cU >> 2" (binary_expression "(iVar2 - (int)puVar8) + 0x6cU" (parenthesized_expression "(iVar2 - (int)puVar8)" (( "(") (binary_expression "iVar2 - (int)puVar8" (identifier "iVar2") (- "-") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) () ")")) (+ "+") (number_literal "0x6cU")) (>> ">>") (number_literal "2"))) (; ";")) (for_statement "for (; uVar7 != 0; uVar7 = uVar7 - 1) {\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" (for "for") (( "(") (; ";") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar7 = uVar7 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *puVar8 = 0;\n        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = puVar8 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar10 * -2 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uint)bVar10 * -2 + 1" (binary_expression "puVar8 + (uint)bVar10 * -2" (identifier "puVar8") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "local_30 = 0xffffffff;" (assignment_expression "local_30 = 0xffffffff" (identifier "local_30") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0x48) = 0x13;" (assignment_expression "*(undefined4 *)(param_1 + 0x48) = 0x13" (pointer_expression "*(undefined4 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (number_literal "0x13")) (; ";")) (expression_statement "local_20 = 1;" (assignment_expression "local_20 = 1" (identifier "local_20") (= "=") (number_literal "1")) (; ";")) (if_statement "if (bVar9) goto LAB_000e44d8;" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (goto_statement "goto LAB_000e44d8;" (goto "goto") (statement_identifier "LAB_000e44d8") (; ";"))) (labeled_statement "LAB_000e43ca:\n    if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" (statement_identifier "LAB_000e43ca") (: ":") (if_statement "if (local_2c != 0xffffffff) {\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" (if "if") (parenthesized_expression "(local_2c != 0xffffffff)" (( "(") (binary_expression "local_2c != 0xffffffff" (identifier "local_2c") (!= "!=") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      uVar3 = FUN_0004ce60(param_5[local_2c]);\n      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);\n      *(char **)(param_1 + 0x4c) = pcVar4;\n      if (pcVar4 == (char *)0x0) goto LAB_000e4628;\n      sVar5 = strlen(pcVar4);\n      *(size_t *)(param_1 + 0x50) = sVar5;\n    }" ({ "{") (expression_statement "uVar3 = FUN_0004ce60(param_5[local_2c]);" (assignment_expression "uVar3 = FUN_0004ce60(param_5[local_2c])" (identifier "uVar3") (= "=") (call_expression "FUN_0004ce60(param_5[local_2c])" (identifier "FUN_0004ce60") (argument_list "(param_5[local_2c])" (( "(") (subscript_expression "param_5[local_2c]" (identifier "param_5") ([ "[") (identifier "local_2c") (] "]")) () ")")))) (; ";")) (expression_statement "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);" (assignment_expression "pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3)" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_00071090(&DAT_000f6ce3,uVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00071090(&DAT_000f6ce3,uVar3)" (identifier "FUN_00071090") (argument_list "(&DAT_000f6ce3,uVar3)" (( "(") (pointer_expression "&DAT_000f6ce3" (& "&") (identifier "DAT_000f6ce3")) (, ",") (identifier "uVar3") () ")"))))) (; ";")) (expression_statement "*(char **)(param_1 + 0x4c) = pcVar4;" (assignment_expression "*(char **)(param_1 + 0x4c) = pcVar4" (pointer_expression "*(char **)(param_1 + 0x4c)" (* "*") (cast_expression "(char **)(param_1 + 0x4c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "pcVar4")) (; ";")) (if_statement "if (pcVar4 == (char *)0x0) goto LAB_000e4628;" (if "if") (parenthesized_expression "(pcVar4 == (char *)0x0)" (( "(") (binary_expression "pcVar4 == (char *)0x0" (identifier "pcVar4") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000e4628;" (goto "goto") (statement_identifier "LAB_000e4628") (; ";"))) (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" (identifier "sVar5") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "*(size_t *)(param_1 + 0x50) = sVar5;" (assignment_expression "*(size_t *)(param_1 + 0x50) = sVar5" (pointer_expression "*(size_t *)(param_1 + 0x50)" (* "*") (cast_expression "(size_t *)(param_1 + 0x50)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (identifier "sVar5")) (; ";")) (} "}")))) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {\n      iVar6 = iVar1;\n    }" (if "if") (parenthesized_expression "((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1))" (( "(") (binary_expression "(local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)" (parenthesized_expression "(local_30 != 0xffffffff)" (( "(") (binary_expression "local_30 != 0xffffffff" (identifier "local_30") (!= "!=") (number_literal "0xffffffff")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)" (( "(") (comma_expression "iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1" (assignment_expression "iVar1 = FUN_0002bb30(param_5[local_30])" (identifier "iVar1") (= "=") (call_expression "FUN_0002bb30(param_5[local_30])" (identifier "FUN_0002bb30") (argument_list "(param_5[local_30])" (( "(") (subscript_expression "param_5[local_30]" (identifier "param_5") ([ "[") (identifier "local_30") (] "]")) () ")")))) (, ",") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1"))) () ")"))) () ")")) (compound_statement "{\n      iVar6 = iVar1;\n    }" ({ "{") (expression_statement "iVar6 = iVar1;" (assignment_expression "iVar6 = iVar1" (identifier "iVar6") (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 0x54) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x54) = iVar6" (pointer_expression "*(int *)(param_1 + 0x54)" (* "*") (cast_expression "(int *)(param_1 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2);" (assignment_expression "iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" (identifier "iVar2") (= "=") (call_expression "FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" (identifier "FUN_000e1350") (argument_list "(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),\n                         0,local_20,iVar2)" (( "(") (number_literal "0xfffffffe") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (, ",") (number_literal "0") (, ",") (identifier "local_20") (, ",") (identifier "iVar2") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(param_1 + 0x10) = param_1 + 0x3c;\n      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));\n      if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }\n    }" ({ "{") (expression_statement "*(int *)(param_1 + 0x10) = param_1 + 0x3c;" (assignment_expression "*(int *)(param_1 + 0x10) = param_1 + 0x3c" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c"))) (; ";")) (expression_statement "iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));" (assignment_expression "iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40))" (identifier "iVar2") (= "=") (call_expression "FUN_000e2860(*(undefined4 *)(param_1 + 0x40))" (identifier "FUN_000e2860") (argument_list "(*(undefined4 *)(param_1 + 0x40))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar2 = FUN_000e24f0();\n        return iVar2;\n      }" ({ "{") (expression_statement "iVar2 = FUN_000e24f0();" (assignment_expression "iVar2 = FUN_000e24f0()" (identifier "iVar2") (= "=") (call_expression "FUN_000e24f0()" (identifier "FUN_000e24f0") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (} "}"))) (} "}")))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

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

int function_1(type_1 *var_1,int var_2,char *idxStr,int var_3,
                       type_2 **apVal)

{
  type_3 *p;
  type_4 *psVar1;
  int var_17;
  type_5 *var_9;
  type_4 *var_11;
  type_6 var_6;
  type_7 *var_7;
  bool bVar7;
  type_8 bVar8;
  type_9 *pCsr;
  char *in_stack_ffffffbc;
  int iVar9;
  type_6 var_13;
  type_6 var_14;
  int local_20;
  
  bVar8 = 0;
  pCsr = (type_9 *)(var_1 + 1);
  p = (type_3 *)var_1->pVtab[1].pModule;
  if (var_2 == 1) {
    if (var_3 < 2) {
      iVar9 = 0xe45ca;
      var_4(pCsr);
      var_5(var_1[0xf].pVtab);
      var_5(var_1[0x1b].pVtab);
      var_1[1].pVtab = (type_4 *)0x0;
      var_1[0x1b].pVtab = (type_4 *)0x0;
      var_7 = (type_7 *)((type_6)(var_1 + 2) & 0xfffffffc);
      for (var_6 = (type_6)((int)pCsr + (0x6c - (int)((type_6)(var_1 + 2) & 0xfffffffc))) >> 2;
          var_6 != 0; var_6 = var_6 - 1) {
        *var_7 = 0;
        var_7 = var_7 + (type_6)bVar8 * -2 + 1;
      }
      var_1[0x12].pVtab = (type_4 *)0x3;
      var_13 = 0xffffffff;
      var_14 = 0xffffffff;
      local_20 = 0;
    }
    else {
      iVar9 = 0xe4483;
      var_4(pCsr);
      var_5(var_1[0xf].pVtab);
      var_5(var_1[0x1b].pVtab);
      var_1[1].pVtab = (type_4 *)0x0;
      var_1[0x1b].pVtab = (type_4 *)0x0;
      var_7 = (type_7 *)((type_6)(var_1 + 2) & 0xfffffffc);
      for (var_6 = (type_6)((int)pCsr + (0x6c - (int)((type_6)(var_1 + 2) & 0xfffffffc))) >> 2;
          var_6 != 0; var_6 = var_6 - 1) {
        *var_7 = 0;
        var_7 = var_7 + (type_6)bVar8 * -2 + 1;
      }
      var_1[0x12].pVtab = (type_4 *)0x3;
      var_13 = 1;
      var_14 = 0xffffffff;
      local_20 = 0;
    }
LAB_000e44d8:
    var_9 = var_8(*apVal);
    if (var_9 == (type_5 *)0x0) goto LAB_000e43ca;
    var_11 = (type_4 *)var_10("%s",var_9);
    var_1[0xf].pVtab = var_11;
    if (var_11 != (type_4 *)0x0) {
      var_11 = (type_4 *)var_12((char *)var_11);
      var_1[0x10].pVtab = var_11;
      goto LAB_000e43ca;
    }
LAB_000e4628:
    var_17 = 7;
  }
  else {
    var_13 = var_2 & 2;
    bVar7 = var_13 != 0;
    if (bVar7) {
      var_13 = 1;
    }
    var_14 = 0xffffffff;
    if ((var_2 & 4U) != 0) {
      var_14 = var_13;
      var_13 = var_13 + 1;
    }
    if ((int)var_13 < var_3) {
      iVar9 = 0xe4375;
      var_4(pCsr);
      var_5(var_1[0xf].pVtab);
      var_5(var_1[0x1b].pVtab);
      var_1[1].pVtab = (type_4 *)0x0;
      var_1[0x1b].pVtab = (type_4 *)0x0;
      var_7 = (type_7 *)((type_6)(var_1 + 2) & 0xfffffffc);
      for (var_6 = (type_6)((int)pCsr + (0x6c - (int)((type_6)(var_1 + 2) & 0xfffffffc))) >> 2;
          var_6 != 0; var_6 = var_6 - 1) {
        *var_7 = 0;
        var_7 = var_7 + (type_6)bVar8 * -2 + 1;
      }
    }
    else {
      iVar9 = 0xe456e;
      var_4(pCsr);
      var_5(var_1[0xf].pVtab);
      var_5(var_1[0x1b].pVtab);
      var_1[1].pVtab = (type_4 *)0x0;
      var_1[0x1b].pVtab = (type_4 *)0x0;
      var_7 = (type_7 *)((type_6)(var_1 + 2) & 0xfffffffc);
      for (var_6 = (type_6)((int)pCsr + (0x6c - (int)((type_6)(var_1 + 2) & 0xfffffffc))) >> 2;
          var_6 != 0; var_6 = var_6 - 1) {
        *var_7 = 0;
        var_7 = var_7 + (type_6)bVar8 * -2 + 1;
      }
      var_13 = 0xffffffff;
    }
    var_1[0x12].pVtab = (type_4 *)0x13;
    local_20 = 1;
    if (bVar7) goto LAB_000e44d8;
LAB_000e43ca:
    if (var_14 != 0xffffffff) {
      var_9 = var_8(apVal[var_14]);
      var_11 = (type_4 *)var_10("%s",var_9);
      var_1[0x13].pVtab = var_11;
      if (var_11 == (type_4 *)0x0) goto LAB_000e4628;
      var_11 = (type_4 *)var_12((char *)var_11);
      var_1[0x14].pVtab = var_11;
    }
    var_11 = (type_4 *)0x0;
    if ((var_13 != 0xffffffff) &&
       (psVar1 = (type_4 *)var_15(apVal[var_13]), -1 < (int)psVar1)) {
      var_11 = psVar1;
    }
    var_1[0x15].pVtab = var_11;
    var_17 = var_16
                      (p,(int)var_11,0,-2,(char *)var_1[0xf].pVtab,(int)var_1[0x10].pVtab,0,
                       local_20,pCsr);
    if (var_17 == 0) {
      var_1[4].pVtab = (type_4 *)(var_1 + 0xf);
      var_17 = var_18((type_3 *)var_1[0x10].pVtab,pCsr,in_stack_ffffffbc,iVar9);
      if (var_17 == 0) {
        iVar9 = var_19(var_1);
        return iVar9;
      }
    }
  }
  return var_17;
}


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

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

int MASKED(int param_1,uint param_2,undefined4 param_3,int param_4,undefined4 *param_5)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  char *pcVar4;
  size_t sVar5;
  int iVar6;
  uint uVar7;
  undefined4 *puVar8;
  bool bVar9;
  byte bVar10;
  uint local_30;
  uint local_2c;
  undefined4 local_20;
  
  bVar10 = 0;
  iVar2 = param_1 + 4;
  if (param_2 == 1) {
    if (param_4 < 2) {
      FUN_0008b940();
      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));
      *(undefined4 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x6c) = 0;
      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;
      for (; uVar7 != 0; uVar7 = uVar7 - 1) {
        *puVar8 = 0;
        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;
      }
      *(undefined4 *)(param_1 + 0x48) = 3;
      local_30 = 0xffffffff;
      local_2c = 0xffffffff;
      local_20 = 0;
    }
    else {
      FUN_0008b940();
      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));
      *(undefined4 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x6c) = 0;
      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;
      for (; uVar7 != 0; uVar7 = uVar7 - 1) {
        *puVar8 = 0;
        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;
      }
      *(undefined4 *)(param_1 + 0x48) = 3;
      local_30 = 1;
      local_2c = 0xffffffff;
      local_20 = 0;
    }
LAB_000e44d8:
    iVar6 = FUN_0004ce60(*param_5);
    if (iVar6 == 0) goto LAB_000e43ca;
    pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,iVar6);
    *(char **)(param_1 + 0x3c) = pcVar4;
    if (pcVar4 != (char *)0x0) {
      sVar5 = strlen(pcVar4);
      *(size_t *)(param_1 + 0x40) = sVar5;
      goto LAB_000e43ca;
    }
LAB_000e4628:
    iVar2 = 7;
  }
  else {
    local_30 = param_2 & 2;
    bVar9 = local_30 != 0;
    if (bVar9) {
      local_30 = 1;
    }
    local_2c = 0xffffffff;
    if ((param_2 & 4) != 0) {
      local_2c = local_30;
      local_30 = local_30 + 1;
    }
    if ((int)local_30 < param_4) {
      FUN_0008b940();
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));
      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));
      *(undefined4 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x6c) = 0;
      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;
      for (; uVar7 != 0; uVar7 = uVar7 - 1) {
        *puVar8 = 0;
        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;
      }
    }
    else {
      FUN_0008b940();
      puVar8 = (undefined4 *)(param_1 + 8U & 0xfffffffc);
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x3c));
      FUN_00024cc0(*(undefined4 *)(param_1 + 0x6c));
      *(undefined4 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x6c) = 0;
      uVar7 = (iVar2 - (int)puVar8) + 0x6cU >> 2;
      for (; uVar7 != 0; uVar7 = uVar7 - 1) {
        *puVar8 = 0;
        puVar8 = puVar8 + (uint)bVar10 * -2 + 1;
      }
      local_30 = 0xffffffff;
    }
    *(undefined4 *)(param_1 + 0x48) = 0x13;
    local_20 = 1;
    if (bVar9) goto LAB_000e44d8;
LAB_000e43ca:
    if (local_2c != 0xffffffff) {
      uVar3 = FUN_0004ce60(param_5[local_2c]);
      pcVar4 = (char *)FUN_00071090(&DAT_000f6ce3,uVar3);
      *(char **)(param_1 + 0x4c) = pcVar4;
      if (pcVar4 == (char *)0x0) goto LAB_000e4628;
      sVar5 = strlen(pcVar4);
      *(size_t *)(param_1 + 0x50) = sVar5;
    }
    iVar6 = 0;
    if ((local_30 != 0xffffffff) && (iVar1 = FUN_0002bb30(param_5[local_30]), -1 < iVar1)) {
      iVar6 = iVar1;
    }
    *(int *)(param_1 + 0x54) = iVar6;
    iVar2 = FUN_000e1350(0xfffffffe,*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x40),
                         0,local_20,iVar2);
    if (iVar2 == 0) {
      *(int *)(param_1 + 0x10) = param_1 + 0x3c;
      iVar2 = FUN_000e2860(*(undefined4 *)(param_1 + 0x40));
      if (iVar2 == 0) {
        iVar2 = FUN_000e24f0();
        return iVar2;
      }
    }
  }
  return iVar2;
}

