
/* WARNING: Type propagation algorithm not settling */

int whereLoopAddVirtualOne
              (WhereLoopBuilder *pBuilder,Bitmask mPrereq,Bitmask mUsable,u16 mExclude,
              sqlite3_index_info *pIdxInfo,u16 mNoOmit,int *pbIn)

{
  uint *puVar1;
  u16 *puVar2;
  double dVar3;
  longlong lVar4;
  byte bVar5;
  WhereClause *pWVar6;
  sqlite3_index_constraint_usage *__s;
  WhereLoop *pTemplate;
  Parse *pParse;
  SrcList *pSVar7;
  sqlite3 *psVar8;
  undefined4 uVar9;
  Table *pTVar10;
  VTable *pVVar11;
  sqlite3_vtab *psVar12;
  WhereTerm **ppWVar13;
  code *pcVar14;
  short sVar15;
  i8 iVar16;
  short sVar17;
  WhereLoopBuilder *pBuilder_00;
  int iVar18;
  WhereTerm **ppWVar19;
  WhereTerm *pWVar20;
  uint uVar21;
  uint uVar22;
  char *pcVar23;
  int iVar24;
  undefined4 extraout_ECX;
  LogEst LVar25;
  sqlite3_index_constraint *psVar26;
  uint uVar27;
  uint uVar28;
  int unaff_EDI;
  undefined8 uVar29;
  undefined2 in_stack_0000001a;
  int local_50;
  undefined4 local_2c;
  int iStack_28;
  
  uVar29 = __x86_get_pc_thunk_di();
  pBuilder_00 = (WhereLoopBuilder *)uVar29;
  pWVar6 = pBuilder_00->pWC;
  __s = ((sqlite3_index_info *)mUsable)->aConstraintUsage;
  pTemplate = pBuilder_00->pNew;
  pParse = pBuilder_00->pWInfo->pParse;
  pSVar7 = pBuilder_00->pWInfo->pTabList;
  bVar5 = pTemplate->iTab;
  uVar22 = ((sqlite3_index_info *)mUsable)->nConstraint;
  *_mExclude = 0;
  *(int *)&pTemplate->prereq = (int)((ulonglong)uVar29 >> 0x20);
  *(undefined4 *)((int)&pTemplate->prereq + 4) = extraout_ECX;
  psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;
  if (0 < (int)uVar22) {
    pWVar20 = pWVar6->a;
    uVar28 = 0;
    do {
      while( true ) {
        iVar18 = psVar26->iTermOffset;
        psVar26->usable = '\0';
        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||
             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||
           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;
        psVar26->usable = '\x01';
        uVar28 = uVar28 + 1;
        psVar26 = psVar26 + 1;
        if (uVar22 == uVar28) goto LAB_0003dba8;
      }
      uVar28 = uVar28 + 1;
      psVar26 = psVar26 + 1;
    } while (uVar22 != uVar28);
  }
LAB_0003dba8:
  memset(__s,0,uVar22 << 3);
  dVar3 = *(double *)(unaff_EDI + 0x77777);
  ((sqlite3_index_info *)mUsable)->idxStr = (char *)0x0;
  ((sqlite3_index_info *)mUsable)->idxNum = 0;
  ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;
  ((sqlite3_index_info *)mUsable)->estimatedCost = dVar3;
  *(undefined4 *)&((sqlite3_index_info *)mUsable)->estimatedRows = 0x19;
  *(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4) = 0;
  ((sqlite3_index_info *)mUsable)->idxFlags = 0;
  psVar8 = pParse->db;
  uVar9 = *(undefined4 *)((int)&pSVar7->a[bVar5].colUsed + 4);
  pTVar10 = pSVar7->a[bVar5].pTab;
  *(int *)&((sqlite3_index_info *)mUsable)->colUsed = (int)pSVar7->a[bVar5].colUsed;
  *(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->colUsed + 4) = uVar9;
  pVVar11 = pTVar10->pVTable;
  while( true ) {
    if (pVVar11 == (VTable *)0x0) {
                    /* WARNING: Does not return */
      pcVar14 = (code *)invalidInstructionException();
      (*pcVar14)();
    }
    if (psVar8 == pVVar11->db) break;
    pVVar11 = pVVar11->pNext;
  }
  psVar12 = pVVar11->pVtab;
  iVar18 = (*psVar12->pModule->xBestIndex)(psVar12,(sqlite3_index_info *)mUsable);
  if ((iVar18 != 0) && (iVar18 != 0x13)) {
    if (iVar18 == 7) {
      psVar8 = pParse->db;
      uVar22._0_1_ = psVar8->temp_store;
      uVar22._1_1_ = psVar8->mallocFailed;
      uVar22._2_1_ = psVar8->bBenignMalloc;
      uVar22._3_1_ = psVar8->dfltLockMode;
      if ((uVar22 & 0xffff00) == 0) {
        sqlite3OomFault(psVar8);
      }
      sqlite3_free(psVar12->zErrMsg);
      psVar12->zErrMsg = (char *)0x0;
      return 7;
    }
    if (psVar12->zErrMsg != (char *)0x0) {
      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);
      sqlite3_free(psVar12->zErrMsg);
      psVar12->zErrMsg = (char *)0x0;
      return iVar18;
    }
    pcVar23 = sqlite3ErrStr(iVar18);
    sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23);
    sqlite3_free(psVar12->zErrMsg);
    psVar12->zErrMsg = (char *)0x0;
LAB_0003e064:
    iVar24 = 0;
    if (iVar18 != 0x13) {
      iVar24 = iVar18;
    }
    return iVar24;
  }
  sqlite3_free(psVar12->zErrMsg);
  psVar12->zErrMsg = (char *)0x0;
  if (iVar18 != 0) goto LAB_0003e064;
  if ((int)uVar22 < 1) {
    (pTemplate->u).btree.nDistinctCol = 0;
    pTemplate->nLTerm = 0;
  }
  else {
    ppWVar13 = pTemplate->aLTerm;
    ppWVar19 = ppWVar13;
    do {
      *ppWVar19 = (WhereTerm *)0x0;
      ppWVar19 = ppWVar19 + 1;
    } while (ppWVar13 + uVar22 != ppWVar19);
    psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;
    (pTemplate->u).btree.nDistinctCol = 0;
    uVar28 = 0;
    local_50 = -1;
    do {
      iVar18 = __s[uVar28].argvIndex + -1;
      if (-1 < iVar18) {
        iVar24 = psVar26->iTermOffset;
        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||
           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;
        pWVar20 = pWVar6->a + iVar24;
        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;
        puVar1 = (uint *)((int)&pTemplate->prereq + 4);
        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);
        ppWVar13[iVar18] = pWVar20;
        if (local_50 < iVar18) {
          local_50 = iVar18;
        }
        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&
           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {
          puVar2 = &(pTemplate->u).btree.nDistinctCol;
          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));
        }
        if ((pWVar20->eOperator & 1) != 0) {
          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;
          ((sqlite3_index_info *)mUsable)->idxFlags =
               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;
          *_mExclude = 1;
        }
      }
      uVar28 = uVar28 + 1;
      psVar26 = psVar26 + 1;
    } while (uVar22 != uVar28);
    pTemplate->nLTerm = (short)local_50 + 1;
    if (local_50 != -1) {
      if (*ppWVar13 != (WhereTerm *)0x0) {
        iVar18 = 0;
        do {
          iVar18 = iVar18 + 1;
          if (local_50 < iVar18) goto LAB_0003de32;
        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);
      }
LAB_0003dfb0:
      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);
      return 1;
    }
  }
LAB_0003de32:
  iVar18 = ((sqlite3_index_info *)mUsable)->orderByConsumed;
  (pTemplate->u).vtab.idxNum = ((sqlite3_index_info *)mUsable)->idxNum;
  (pTemplate->u).vtab.needFree = (u8)((sqlite3_index_info *)mUsable)->needToFreeIdxStr;
  ((sqlite3_index_info *)mUsable)->needToFreeIdxStr = 0;
  (pTemplate->u).btree.pIndex = (Index *)((sqlite3_index_info *)mUsable)->idxStr;
  iVar16 = '\0';
  if (iVar18 != 0) {
    iVar16 = (i8)((sqlite3_index_info *)mUsable)->nOrderBy;
  }
  dVar3 = ((sqlite3_index_info *)mUsable)->estimatedCost;
  (pTemplate->u).vtab.isOrdered = iVar16;
  sVar17 = 0;
  pTemplate->rSetup = 0;
  if (1.0 < dVar3) {
    if ((double)*(float *)(unaff_EDI + 0x7770b) < dVar3) {
      sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;
    }
    else {
      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {
        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));
        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);
        local_2c = (undefined4)lVar4;
        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);
      }
      else {
        lVar4 = (longlong)ROUND(dVar3);
      }
      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);
      uVar22 = (uint)lVar4;
      if ((uVar28 == 0) && (uVar22 < 8)) {
        sVar17 = 0;
        if (uVar22 < 2) goto LAB_0003df0c;
        sVar15 = 0x28;
        do {
          sVar17 = sVar15;
          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;
          uVar22 = (uint)lVar4 * 2;
          lVar4 = CONCAT44(uVar28,uVar22);
          if (uVar28 != 0) break;
          sVar15 = sVar17 + -10;
        } while (uVar22 < 8);
        sVar17 = sVar17 + -0x14;
      }
      else {
        if (uVar28 == 0) {
          uVar27 = 0x1f;
          if (uVar22 != 0) {
            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {
            }
          }
          uVar27 = (uVar27 ^ 0x1f) + 0x20;
        }
        else {
          uVar27 = 0x1f;
          if (uVar28 != 0) {
            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {
            }
          }
          uVar27 = uVar27 ^ 0x1f;
        }
        uVar27 = 0x3c - uVar27;
        bVar5 = (byte)uVar27 & 0x1f;
        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;
        if ((uVar27 & 0x20) != 0) {
          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);
        }
        sVar17 = (short)uVar27 * 10 + 0x1e;
      }
      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);
    }
  }
LAB_0003df0c:
  uVar22 = *(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4);
  pTemplate->rRun = sVar17;
  uVar28 = (uint)((sqlite3_index_info *)mUsable)->estimatedRows;
  if ((uVar22 == 0) && (uVar28 < 8)) {
    LVar25 = 0;
    if (uVar28 < 2) goto LAB_0003df5f;
    sVar15 = 0x28;
    do {
      sVar17 = sVar15;
      uVar21 = uVar28 * 2;
      if ((int)uVar28 < 0) break;
      uVar28 = uVar21;
      sVar15 = sVar17 + -10;
    } while (uVar21 < 8);
    sVar17 = sVar17 + -0x14;
  }
  else {
    if (uVar22 == 0) {
      uVar27 = 0x1f;
      if (uVar28 != 0) {
        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {
        }
      }
      uVar27 = (uVar27 ^ 0x1f) + 0x20;
    }
    else {
      uVar27 = 0x1f;
      if (uVar22 != 0) {
        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {
        }
      }
      uVar27 = uVar27 ^ 0x1f;
    }
    uVar27 = 0x3c - uVar27;
    bVar5 = (byte)uVar27 & 0x1f;
    uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5;
    if ((uVar27 & 0x20) != 0) {
      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);
    }
    sVar17 = (short)uVar27 * 10 + 0x1e;
  }
  LVar25 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);
LAB_0003df5f:
  pTemplate->nOut = LVar25;
  uVar22 = pTemplate->wsFlags | 0x1000;
  if ((((sqlite3_index_info *)mUsable)->idxFlags & 1) == 0) {
    uVar22 = pTemplate->wsFlags & 0xffffefff;
  }
  pTemplate->wsFlags = uVar22;
  iVar18 = whereLoopInsert(pBuilder_00,pTemplate);
  if ((pTemplate->u).vtab.needFree != '\0') {
    sqlite3_free((pTemplate->u).btree.pIndex);
    (pTemplate->u).vtab.needFree = '\0';
  }
  return iVar18;
}



int FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,
                undefined4 *param_6)

{
  double dVar1;
  longlong lVar2;
  void *__s;
  uint *puVar3;
  int *piVar4;
  int iVar5;
  byte bVar6;
  code *pcVar7;
  short sVar8;
  undefined1 uVar9;
  short sVar10;
  int *piVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int *piVar15;
  int iVar16;
  uint uVar17;
  undefined4 uVar18;
  uint extraout_ECX;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  int unaff_EDI;
  undefined8 uVar22;
  int local_50;
  undefined4 local_2c;
  int iStack_28;
  
  uVar22 = FUN_000a94ff();
  piVar11 = (int *)uVar22;
  iVar16 = piVar11[1];
  __s = (void *)param_4[4];
  puVar3 = (uint *)piVar11[3];
  piVar4 = *(int **)*piVar11;
  iVar5 = ((undefined4 *)*piVar11)[1];
  uVar20 = puVar3[4];
  uVar17 = *param_4;
  *param_6 = 0;
  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);
  puVar3[1] = extraout_ECX;
  uVar19 = param_4[1];
  if (0 < (int)uVar17) {
    iVar14 = *(int *)(iVar16 + 0x14);
    uVar21 = 0;
    do {
      while( true ) {
        *(undefined1 *)(uVar19 + 5) = 0;
        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;
        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||
             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||
           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;
        *(undefined1 *)(uVar19 + 5) = 1;
        uVar21 = uVar21 + 1;
        uVar19 = uVar19 + 0xc;
        if (uVar17 == uVar21) goto LAB_0003dba8;
      }
      uVar21 = uVar21 + 1;
      uVar19 = uVar19 + 0xc;
    } while (uVar17 != uVar21);
  }
LAB_0003dba8:
  memset(__s,0,uVar17 << 3);
  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);
  param_4[6] = 0;
  param_4[5] = 0;
  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;
  param_4[8] = 0;
  *(undefined8 *)(param_4 + 9) = uVar22;
  param_4[0xb] = 0x19;
  param_4[0xc] = 0;
  param_4[0xd] = 0;
  iVar14 = *piVar4;
  uVar19 = *(uint *)(iVar13 + 0x40);
  iVar12 = *(int *)(iVar13 + 0x18);
  param_4[0xe] = *(uint *)(iVar13 + 0x3c);
  param_4[0xf] = uVar19;
  piVar11 = *(int **)(iVar12 + 0x40);
  while( true ) {
    if (piVar11 == (int *)0x0) {
                    /* WARNING: Does not return */
      pcVar7 = (code *)invalidInstructionException();
      (*pcVar7)();
    }
    if (iVar14 == *piVar11) break;
    piVar11 = (int *)piVar11[6];
  }
  piVar11 = (int *)piVar11[2];
  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);
  if ((iVar14 != 0) && (iVar14 != 0x13)) {
    if (iVar14 == 7) {
      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {
        FUN_0002e050();
      }
      sqlite3_free(piVar11[2]);
      piVar11[2] = 0;
      return 7;
    }
    if (piVar11[2] != 0) {
      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);
      sqlite3_free(piVar11[2]);
      piVar11[2] = 0;
      return iVar14;
    }
    uVar18 = FUN_0002c4f0();
    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);
    sqlite3_free(piVar11[2]);
    piVar11[2] = 0;
LAB_0003e064:
    iVar16 = 0;
    if (iVar14 != 0x13) {
      iVar16 = iVar14;
    }
    return iVar16;
  }
  sqlite3_free(piVar11[2]);
  piVar11[2] = 0;
  if (iVar14 != 0) goto LAB_0003e064;
  if ((int)uVar17 < 1) {
    *(undefined2 *)((int)puVar3 + 0x1e) = 0;
    *(undefined2 *)(puVar3 + 10) = 0;
  }
  else {
    piVar11 = (int *)puVar3[0xc];
    piVar15 = piVar11;
    do {
      *piVar15 = 0;
      piVar15 = piVar15 + 1;
    } while (piVar11 + uVar17 != piVar15);
    uVar19 = param_4[1];
    *(undefined2 *)((int)puVar3 + 0x1e) = 0;
    uVar21 = 0;
    local_50 = -1;
    do {
      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;
      if (-1 < iVar14) {
        iVar12 = *(int *)(uVar19 + 8);
        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||
           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;
        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);
        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);
        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);
        piVar11[iVar14] = iVar12;
        if (local_50 < iVar14) {
          local_50 = iVar14;
        }
        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&
           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {
          *(ushort *)((int)puVar3 + 0x1e) =
               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));
        }
        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {
          param_4[8] = 0;
          param_4[0xd] = param_4[0xd] & 0xfffffffe;
          *param_6 = 1;
        }
      }
      uVar21 = uVar21 + 1;
      uVar19 = uVar19 + 0xc;
    } while (uVar17 != uVar21);
    *(short *)(puVar3 + 10) = (short)local_50 + 1;
    if (local_50 != -1) {
      if (*piVar11 != 0) {
        iVar16 = 0;
        do {
          iVar16 = iVar16 + 1;
          if (local_50 < iVar16) goto LAB_0003de32;
        } while (piVar11[iVar16] != 0);
      }
LAB_0003dfb0:
      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,
                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));
      return 1;
    }
  }
LAB_0003de32:
  uVar17 = param_4[8];
  puVar3[6] = param_4[5];
  *(char *)(puVar3 + 7) = (char)param_4[7];
  param_4[7] = 0;
  puVar3[8] = param_4[6];
  uVar9 = 0;
  if (uVar17 != 0) {
    uVar9 = (undefined1)param_4[2];
  }
  dVar1 = *(double *)(param_4 + 9);
  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;
  sVar10 = 0;
  *(undefined2 *)((int)puVar3 + 0x12) = 0;
  if (1.0 < dVar1) {
    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {
      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;
    }
    else {
      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {
        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));
        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);
        local_2c = (undefined4)lVar2;
        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);
      }
      else {
        lVar2 = (longlong)ROUND(dVar1);
      }
      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);
      uVar17 = (uint)lVar2;
      if ((uVar19 == 0) && (uVar17 < 8)) {
        sVar10 = 0;
        if (uVar17 < 2) goto LAB_0003df0c;
        sVar8 = 0x28;
        do {
          sVar10 = sVar8;
          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;
          uVar17 = (uint)lVar2 * 2;
          lVar2 = CONCAT44(uVar19,uVar17);
          if (uVar19 != 0) break;
          sVar8 = sVar10 + -10;
        } while (uVar17 < 8);
        sVar10 = sVar10 + -0x14;
      }
      else {
        if (uVar19 == 0) {
          uVar20 = 0x1f;
          if (uVar17 != 0) {
            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {
            }
          }
          uVar20 = (uVar20 ^ 0x1f) + 0x20;
        }
        else {
          uVar20 = 0x1f;
          if (uVar19 != 0) {
            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {
            }
          }
          uVar20 = uVar20 ^ 0x1f;
        }
        uVar20 = 0x3c - uVar20;
        bVar6 = (byte)uVar20 & 0x1f;
        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;
        if ((uVar20 & 0x20) != 0) {
          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);
        }
        sVar10 = (short)uVar20 * 10 + 0x1e;
      }
      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);
    }
  }
LAB_0003df0c:
  uVar17 = param_4[0xc];
  *(short *)(puVar3 + 5) = sVar10;
  uVar19 = param_4[0xb];
  if ((uVar17 == 0) && (uVar19 < 8)) {
    sVar10 = 0;
    if (uVar19 < 2) goto LAB_0003df5f;
    sVar8 = 0x28;
    do {
      sVar10 = sVar8;
      uVar21 = uVar19 * 2;
      if ((int)uVar19 < 0) break;
      uVar19 = uVar21;
      sVar8 = sVar10 + -10;
    } while (uVar21 < 8);
    sVar10 = sVar10 + -0x14;
  }
  else {
    if (uVar17 == 0) {
      uVar20 = 0x1f;
      if (uVar19 != 0) {
        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {
        }
      }
      uVar20 = (uVar20 ^ 0x1f) + 0x20;
    }
    else {
      uVar20 = 0x1f;
      if (uVar17 != 0) {
        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {
        }
      }
      uVar20 = uVar20 ^ 0x1f;
    }
    uVar20 = 0x3c - uVar20;
    bVar6 = (byte)uVar20 & 0x1f;
    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;
    if ((uVar20 & 0x20) != 0) {
      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);
    }
    sVar10 = (short)uVar20 * 10 + 0x1e;
  }
  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);
LAB_0003df5f:
  *(short *)((int)puVar3 + 0x16) = sVar10;
  uVar17 = puVar3[9] | 0x1000;
  if ((param_4[0xd] & 1) == 0) {
    uVar17 = puVar3[9] & 0xffffefff;
  }
  puVar3[9] = uVar17;
  iVar16 = FUN_0002fed0();
  if ((char)puVar3[7] != '\0') {
    sqlite3_free(puVar3[8]);
    *(undefined1 *)(puVar3 + 7) = 0;
  }
  return iVar16;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000a94ff
ADD EDI,0xa0547
SUB ESP,0x5c
MOV ESI,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x20],EDI
MOV EDI,dword ptr [ESP + 0x70]
MOV EBP,dword ptr [ESP + 0x7c]
MOV EBX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0x48],EAX
MOV dword ptr [ESP + 0x18],ESI
MOV dword ptr [ESP + 0x28],EDI
MOVZX EDI,word ptr [ESP + 0x78]
MOV dword ptr [ESP + 0x1c],EBX
MOVZX EBX,word ptr [ESP + 0x80]
MOV word ptr [ESP + 0x24],DI
MOV EDI,dword ptr [EBP + 0x10]
MOV word ptr [ESP + 0x3c],BX
MOV dword ptr [ESP + 0x14],EDI
MOV EDI,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EAX]
MOV EBX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x34],EAX
MOVZX EAX,byte ptr [EDI + 0x10]
MOV dword ptr [ESP + 0x30],EBX
MOV EBX,dword ptr [ESP + 0x84]
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [EBP]
MOV dword ptr [EBX],0x0
TEST EAX,EAX
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [EDI],EDX
MOV dword ptr [EDI + 0x4],ECX
MOV EBX,dword ptr [EBP + 0x4]
JLE 0x0003dba8
MOV EAX,dword ptr [ESI + 0x14]
MOV dword ptr [ESP + 0x2c],EDI
XOR ESI,ESI
MOV EBP,dword ptr [ESP + 0x28]
MOV EDI,EAX
JMP 0x0003db5c
ADD ESI,0x1
ADD EBX,0xc
CMP dword ptr [ESP + 0x8],ESI
JZ 0x0003dba0
MOV EAX,dword ptr [EBX + 0x8]
MOV ECX,dword ptr [ESP + 0x1c]
MOV EDX,EBP
MOV byte ptr [EBX + 0x5],0x0
NOT EDX
LEA EAX,[EAX + EAX*0x2]
NOT ECX
SHL EAX,0x4
ADD EAX,EDI
AND EDX,dword ptr [EAX + 0x20]
AND ECX,dword ptr [EAX + 0x24]
OR ECX,EDX
JNZ 0x0003db50
MOVZX EDX,word ptr [ESP + 0x24]
TEST word ptr [EAX + 0xc],DX
JNZ 0x0003db50
MOV byte ptr [EBX + 0x5],0x1
ADD ESI,0x1
ADD EBX,0xc
CMP dword ptr [ESP + 0x8],ESI
JNZ 0x0003db5c
LEA ESI,[ESI]
MOV EDI,dword ptr [ESP + 0x2c]
MOV EBP,dword ptr [ESP + 0x7c]
MOV EAX,dword ptr [ESP + 0x8]
SUB ESP,0x4
SHL EAX,0x3
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x30]
MOV EBX,ESI
CALL 0x000168b0
IMUL EAX,dword ptr [ESP + 0x48],0x44
FLD qword ptr [ESI + 0xfffd7230]
MOV ESI,dword ptr [ESP + 0x40]
MOV dword ptr [EBP + 0x18],0x0
MOV dword ptr [EBP + 0x14],0x0
ADD EAX,dword ptr [ESP + 0x44]
ADD ESP,0x10
MOV dword ptr [EBP + 0x20],0x0
FSTP qword ptr [EBP + 0x24]
MOV dword ptr [EBP + 0x2c],0x19
MOV dword ptr [EBP + 0x30],0x0
MOV dword ptr [EBP + 0x34],0x0
MOV EDX,dword ptr [ESI]
MOV ECX,dword ptr [EAX + 0x3c]
MOV EBX,dword ptr [EAX + 0x40]
MOV EAX,dword ptr [EAX + 0x18]
MOV dword ptr [EBP + 0x38],ECX
MOV dword ptr [EBP + 0x3c],EBX
MOV EAX,dword ptr [EAX + 0x40]
TEST EAX,EAX
JNZ 0x0003dc2f
JMP 0x0003dca0
MOV EAX,dword ptr [EAX + 0x18]
TEST EAX,EAX
JZ 0x0003dca0
CMP EDX,dword ptr [EAX]
JNZ 0x0003dc28
MOV ESI,dword ptr [EAX + 0x8]
SUB ESP,0x8
MOV EAX,dword ptr [ESI]
PUSH EBP
PUSH ESI
CALL dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0x38],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0003dcb0
CMP EAX,0x13
JZ 0x0003dcb0
CMP EAX,0x7
JZ 0x0003dff0
MOV EAX,dword ptr [ESI + 0x8]
TEST EAX,EAX
JZ 0x0003e030
SUB ESP,0x4
PUSH EAX
MOV EBX,dword ptr [ESP + 0x28]
LEA EAX,[EBX + 0xfffcc41d]
PUSH EAX
PUSH dword ptr [ESP + 0x3c]
CALL 0x0003c160
POP EAX
PUSH dword ptr [ESI + 0x8]
CALL 0x00016d30
MOV dword ptr [ESI + 0x8],0x0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,[0x00000008]
UD2
SUB ESP,0xc
PUSH dword ptr [ESI + 0x8]
MOV EBX,dword ptr [ESP + 0x30]
CALL 0x00016d30
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESI + 0x8],0x0
TEST EAX,EAX
JNZ 0x0003e064
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JLE 0x0003e088
MOV EAX,dword ptr [EDI + 0x30]
MOV EBX,dword ptr [ESP + 0x8]
LEA EDX,[EAX + EBX*0x4]
MOV dword ptr [ESP + 0x24],EAX
NOP
MOV dword ptr [EAX],0x0
ADD EAX,0x4
CMP EDX,EAX
JNZ 0x0003dcf0
XOR EAX,EAX
MOV EBX,dword ptr [EBP + 0x4]
MOV ESI,0xffffffff
MOV word ptr [EDI + 0x1e],AX
MOVZX EAX,word ptr [ESP + 0x3c]
XOR EDX,EDX
MOV dword ptr [ESP + 0x1c],ESI
MOV dword ptr [ESP + 0x2c],EDI
MOV dword ptr [ESP + 0x7c],EBP
MOV dword ptr [ESP + 0x3c],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [EAX + EDX*0x8]
SUB ECX,0x1
JS 0x0003ddd9
CMP dword ptr [ESP + 0x8],ECX
MOV EAX,dword ptr [EBX + 0x8]
JLE 0x0003dfb0
TEST EAX,EAX
JS 0x0003dfb0
MOV EBP,dword ptr [ESP + 0x18]
CMP dword ptr [EBP + 0xc],EAX
JLE 0x0003dfb0
MOV EBP,dword ptr [ESP + 0x24]
LEA EBP,[EBP + ECX*0x4]
MOV ESI,dword ptr [EBP]
TEST ESI,ESI
JNZ 0x0003dfb0
CMP byte ptr [EBX + 0x5],0x0
JZ 0x0003dfb0
MOV EDI,dword ptr [ESP + 0x18]
LEA EAX,[EAX + EAX*0x2]
MOV ESI,dword ptr [ESP + 0x2c]
SHL EAX,0x4
ADD EAX,dword ptr [EDI + 0x14]
MOV EDI,dword ptr [EAX + 0x20]
OR dword ptr [ESI],EDI
MOV EDI,dword ptr [EAX + 0x24]
OR dword ptr [ESI + 0x4],EDI
MOV dword ptr [EBP],EAX
MOV EBP,dword ptr [ESP + 0x1c]
MOV EDI,dword ptr [ESP + 0x14]
CMP EBP,ECX
CMOVL EBP,ECX
CMP byte ptr [EDI + EDX*0x8 + 0x4],0x0
MOV dword ptr [ESP + 0x1c],EBP
JZ 0x0003ddb7
CMP EDX,0xf
JLE 0x0003e0fe
TEST byte ptr [EAX + 0xc],0x1
JZ 0x0003ddd9
MOV EAX,dword ptr [ESP + 0x7c]
MOV dword ptr [EAX + 0x20],0x0
AND dword ptr [EAX + 0x34],0xfffffffe
MOV EAX,dword ptr [ESP + 0x84]
MOV dword ptr [EAX],0x1
ADD EDX,0x1
ADD EBX,0xc
CMP dword ptr [ESP + 0x8],EDX
JNZ 0x0003dd28
MOV ESI,dword ptr [ESP + 0x1c]
MOV EDI,dword ptr [ESP + 0x2c]
MOV EBP,dword ptr [ESP + 0x7c]
LEA EAX,[ESI + 0x1]
CMP ESI,-0x1
MOV word ptr [EDI + 0x28],AX
JZ 0x0003de32
MOV EAX,dword ptr [ESP + 0x24]
MOV EBX,dword ptr [EAX]
TEST EBX,EBX
JZ 0x0003dfb0
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x28]
JMP 0x0003de2b
MOV ECX,dword ptr [EDX + EAX*0x4]
TEST ECX,ECX
JZ 0x0003dfb0
ADD EAX,0x1
CMP ESI,EAX
JGE 0x0003de20
MOV EAX,dword ptr [EBP + 0x14]
MOV ESI,dword ptr [EBP + 0x20]
MOV dword ptr [EDI + 0x18],EAX
MOV EAX,dword ptr [EBP + 0x1c]
MOV byte ptr [EDI + 0x1c],AL
MOV EAX,dword ptr [EBP + 0x18]
MOV dword ptr [EBP + 0x1c],0x0
MOV dword ptr [EDI + 0x20],EAX
XOR EAX,EAX
TEST ESI,ESI
JNZ 0x0003e0cb
FLD qword ptr [EBP + 0x24]
XOR EBX,EBX
MOV byte ptr [EDI + 0x1d],AL
XOR EAX,EAX
MOV word ptr [EDI + 0x12],BX
MOV EBX,dword ptr [ESP + 0x20]
FST qword ptr [ESP + 0x8]
FLD1
FUCOMIP ST0,ST1
JNC 0x0003df0a
FLD dword ptr [EBX + 0xfffd71c4]
FUCOMIP ST0,ST1
JC 0x0003e0d4
FLD dword ptr [EBX + 0xfffd7190]
FXCH
FUCOMI ST0,ST1
JNC 0x0003e14e
FSTP ST1
FNSTCW word ptr [ESP + 0x4e]
MOVZX EAX,word ptr [ESP + 0x4e]
OR AH,0xc
MOV word ptr [ESP + 0x4c],AX
FLDCW word ptr [ESP + 0x4c]
FISTP qword ptr [ESP + 0x40]
FLDCW word ptr [ESP + 0x4e]
MOV EBX,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x44]
CMP ESI,0x0
JA 0x0003e126
CMP EBX,0x7
JA 0x0003e126
CMP ESI,0x0
JA 0x0003dedb
XOR EAX,EAX
CMP EBX,0x1
JBE 0x0003df0c
MOV EAX,0x28
SHLD ESI,EBX,0x1
MOV EDX,EAX
ADD EBX,EBX
SUB EAX,0xa
CMP ESI,0x0
JBE 0x0003e186
LEA EAX,[EDX + -0x14]
MOV ESI,EBX
MOV EBX,dword ptr [ESP + 0x20]
AND ESI,0x7
ADD AX,word ptr [EBX + ESI*0x2 + 0xfffd314c]
JMP 0x0003df0c
FSTP ST0
MOV EDX,dword ptr [EBP + 0x30]
MOV word ptr [EDI + 0x14],AX
MOV EAX,dword ptr [EBP + 0x2c]
CMP EDX,0x0
JA 0x0003e0a3
CMP EAX,0x7
JA 0x0003e0a3
CMP EDX,0x0
JA 0x0003df34
XOR EBX,EBX
CMP EAX,0x1
JBE 0x0003df5f
MOV ECX,0x28
SHLD EDX,EAX,0x1
MOV EBX,ECX
ADD EAX,EAX
SUB ECX,0xa
CMP EDX,0x0
JBE 0x0003e0f0
SUB EBX,0x14
MOV ESI,dword ptr [ESP + 0x20]
AND EAX,0x7
ADD BX,word ptr [ESI + EAX*0x2 + 0xfffd314c]
MOV EAX,dword ptr [EDI + 0x24]
MOV word ptr [EDI + 0x16],BX
MOV EDX,EAX
OR AH,0x10
AND DH,0xef
TEST byte ptr [EBP + 0x34],0x1
CMOVZ EAX,EDX
MOV EDX,EDI
MOV dword ptr [EDI + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x48]
CALL 0x0002fed0
CMP byte ptr [EDI + 0x1c],0x0
MOV dword ptr [ESP + 0x28],EAX
JZ 0x0003dc8f
SUB ESP,0xc
PUSH dword ptr [EDI + 0x20]
MOV EBX,dword ptr [ESP + 0x30]
CALL 0x00016d30
MOV byte ptr [EDI + 0x1c],0x0
ADD ESP,0x10
JMP 0x0003dc8f
SUB ESP,0x4
IMUL EAX,dword ptr [ESP + 0x3c],0x44
MOV EDI,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [EDI + EAX*0x1 + 0x18]
PUSH dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x28]
LEA EAX,[EAX + 0xfffcc3f0]
PUSH EAX
PUSH dword ptr [ESP + 0x3c]
CALL 0x0003c160
ADD ESP,0x10
MOV dword ptr [ESP + 0x28],0x1
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [EAX]
TEST dword ptr [EAX + 0x4c],0xffff00
JZ 0x0003e099
SUB ESP,0xc
PUSH dword ptr [ESI + 0x8]
MOV EBX,dword ptr [ESP + 0x30]
CALL 0x00016d30
ADD ESP,0x10
MOV dword ptr [ESI + 0x8],0x0
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x0002c4f0
SUB ESP,0x4
PUSH EAX
MOV EBX,dword ptr [ESP + 0x28]
LEA EAX,[EBX + 0xfffcc41d]
PUSH EAX
PUSH dword ptr [ESP + 0x3c]
CALL 0x0003c160
POP EAX
PUSH dword ptr [ESI + 0x8]
CALL 0x00016d30
MOV dword ptr [ESI + 0x8],0x0
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x28]
MOV EAX,0x0
CMP EDI,0x13
CMOVNZ EAX,EDI
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EDX,EDX
XOR ECX,ECX
MOV word ptr [EDI + 0x1e],DX
MOV word ptr [EDI + 0x28],CX
JMP 0x0003de32
CALL 0x0002e050
JMP 0x0003e003
TEST EDX,EDX
JZ 0x0003e11b
BSR EBX,EDX
XOR EBX,0x1f
MOV ECX,0x3c
SUB ECX,EBX
SHRD EAX,EDX,CL
SHR EDX,CL
TEST CL,0x20
LEA ECX,[ECX + ECX*0x4]
CMOVNZ EAX,EDX
LEA EBX,[ECX + ECX*0x1 + 0x1e]
JMP 0x0003df50
MOVZX EAX,byte ptr [EBP + 0x8]
JMP 0x0003de58
FSTP ST0
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,EDX
SHR EAX,0x14
SUB AX,0x3fe
LEA EAX,[EAX + EAX*0x4]
ADD EAX,EAX
JMP 0x0003df0c
CMP EAX,0x7
JBE 0x0003df39
JMP 0x0003df4d
MOV EDI,dword ptr [ESP + 0x3c]
BT EDI,EDX
JC 0x0003ddb7
MOV EDI,0x1
SHL EDI,CL
OR word ptr [ESI + 0x1e],DI
JMP 0x0003ddb7
BSR EBX,EAX
XOR EBX,0x1f
ADD EBX,0x20
JMP 0x0003e0ad
TEST ESI,ESI
JZ 0x0003e194
BSR EAX,ESI
XOR EAX,0x1f
MOV ECX,0x3c
SUB ECX,EAX
SHRD EBX,ESI,CL
SHR ESI,CL
TEST CL,0x20
LEA ECX,[ECX + ECX*0x4]
CMOVNZ EBX,ESI
LEA EAX,[ECX + ECX*0x1 + 0x1e]
JMP 0x0003def7
FSTP ST0
FNSTCW word ptr [ESP + 0x4e]
FSUBR qword ptr [ESP + 0x8]
MOVZX EAX,word ptr [ESP + 0x4e]
OR AH,0xc
MOV word ptr [ESP + 0x4c],AX
FLDCW word ptr [ESP + 0x4c]
FISTP qword ptr [ESP + 0x40]
FLDCW word ptr [ESP + 0x4e]
MOV ESI,dword ptr [ESP + 0x44]
MOV EBX,dword ptr [ESP + 0x40]
LEA EDX,[ESI + 0x80000000]
MOV ESI,EDX
JMP 0x0003debd
CMP EBX,0x7
JBE 0x0003dee0
JMP 0x0003def4
BSR EAX,EBX
XOR EAX,0x1f
ADD EAX,0x20
JMP 0x0003e130
(translation_unit "int FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)\n\n{\n  double dVar1;\n  longlong lVar2;\n  void *__s;\n  uint *puVar3;\n  int *piVar4;\n  int iVar5;\n  byte bVar6;\n  code *pcVar7;\n  short sVar8;\n  undefined1 uVar9;\n  short sVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  uint extraout_ECX;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  int unaff_EDI;\n  undefined8 uVar22;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar22 = FUN_000a94ff();\n  piVar11 = (int *)uVar22;\n  iVar16 = piVar11[1];\n  __s = (void *)param_4[4];\n  puVar3 = (uint *)piVar11[3];\n  piVar4 = *(int **)*piVar11;\n  iVar5 = ((undefined4 *)*piVar11)[1];\n  uVar20 = puVar3[4];\n  uVar17 = *param_4;\n  *param_6 = 0;\n  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);\n  puVar3[1] = extraout_ECX;\n  uVar19 = param_4[1];\n  if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar17 << 3);\n  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);\n  param_4[6] = 0;\n  param_4[5] = 0;\n  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;\n  param_4[8] = 0;\n  *(undefined8 *)(param_4 + 9) = uVar22;\n  param_4[0xb] = 0x19;\n  param_4[0xc] = 0;\n  param_4[0xd] = 0;\n  iVar14 = *piVar4;\n  uVar19 = *(uint *)(iVar13 + 0x40);\n  iVar12 = *(int *)(iVar13 + 0x18);\n  param_4[0xe] = *(uint *)(iVar13 + 0x3c);\n  param_4[0xf] = uVar19;\n  piVar11 = *(int **)(iVar12 + 0x40);\n  while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }\n  piVar11 = (int *)piVar11[2];\n  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);\n  if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }\n  sqlite3_free(piVar11[2]);\n  piVar11[2] = 0;\n  if (iVar14 != 0) goto LAB_0003e064;\n  if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }\nLAB_0003de32:\n  uVar17 = param_4[8];\n  puVar3[6] = param_4[5];\n  *(char *)(puVar3 + 7) = (char)param_4[7];\n  param_4[7] = 0;\n  puVar3[8] = param_4[6];\n  uVar9 = 0;\n  if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }\n  dVar1 = *(double *)(param_4 + 9);\n  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;\n  sVar10 = 0;\n  *(undefined2 *)((int)puVar3 + 0x12) = 0;\n  if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar17 = param_4[0xc];\n  *(short *)(puVar3 + 5) = sVar10;\n  uVar19 = param_4[0xb];\n  if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }\n  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;\n  uVar17 = puVar3[9] | 0x1000;\n  if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }\n  puVar3[9] = uVar17;\n  iVar16 = FUN_0002fed0();\n  if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }\n  return iVar16;\n}\n\n" (function_definition "int FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)\n\n{\n  double dVar1;\n  longlong lVar2;\n  void *__s;\n  uint *puVar3;\n  int *piVar4;\n  int iVar5;\n  byte bVar6;\n  code *pcVar7;\n  short sVar8;\n  undefined1 uVar9;\n  short sVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  uint extraout_ECX;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  int unaff_EDI;\n  undefined8 uVar22;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar22 = FUN_000a94ff();\n  piVar11 = (int *)uVar22;\n  iVar16 = piVar11[1];\n  __s = (void *)param_4[4];\n  puVar3 = (uint *)piVar11[3];\n  piVar4 = *(int **)*piVar11;\n  iVar5 = ((undefined4 *)*piVar11)[1];\n  uVar20 = puVar3[4];\n  uVar17 = *param_4;\n  *param_6 = 0;\n  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);\n  puVar3[1] = extraout_ECX;\n  uVar19 = param_4[1];\n  if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar17 << 3);\n  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);\n  param_4[6] = 0;\n  param_4[5] = 0;\n  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;\n  param_4[8] = 0;\n  *(undefined8 *)(param_4 + 9) = uVar22;\n  param_4[0xb] = 0x19;\n  param_4[0xc] = 0;\n  param_4[0xd] = 0;\n  iVar14 = *piVar4;\n  uVar19 = *(uint *)(iVar13 + 0x40);\n  iVar12 = *(int *)(iVar13 + 0x18);\n  param_4[0xe] = *(uint *)(iVar13 + 0x3c);\n  param_4[0xf] = uVar19;\n  piVar11 = *(int **)(iVar12 + 0x40);\n  while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }\n  piVar11 = (int *)piVar11[2];\n  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);\n  if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }\n  sqlite3_free(piVar11[2]);\n  piVar11[2] = 0;\n  if (iVar14 != 0) goto LAB_0003e064;\n  if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }\nLAB_0003de32:\n  uVar17 = param_4[8];\n  puVar3[6] = param_4[5];\n  *(char *)(puVar3 + 7) = (char)param_4[7];\n  param_4[7] = 0;\n  puVar3[8] = param_4[6];\n  uVar9 = 0;\n  if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }\n  dVar1 = *(double *)(param_4 + 9);\n  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;\n  sVar10 = 0;\n  *(undefined2 *)((int)puVar3 + 0x12) = 0;\n  if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar17 = param_4[0xc];\n  *(short *)(puVar3 + 5) = sVar10;\n  uVar19 = param_4[0xb];\n  if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }\n  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;\n  uVar17 = puVar3[9] | 0x1000;\n  if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }\n  puVar3[9] = uVar17;\n  iVar16 = FUN_0002fed0();\n  if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }\n  return iVar16;\n}" primitive_type (function_declarator "FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)" identifier (parameter_list "(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "ushort param_3" type_identifier identifier) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "ushort param_5" type_identifier identifier) , (parameter_declaration "undefined4 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  longlong lVar2;\n  void *__s;\n  uint *puVar3;\n  int *piVar4;\n  int iVar5;\n  byte bVar6;\n  code *pcVar7;\n  short sVar8;\n  undefined1 uVar9;\n  short sVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  uint extraout_ECX;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  int unaff_EDI;\n  undefined8 uVar22;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar22 = FUN_000a94ff();\n  piVar11 = (int *)uVar22;\n  iVar16 = piVar11[1];\n  __s = (void *)param_4[4];\n  puVar3 = (uint *)piVar11[3];\n  piVar4 = *(int **)*piVar11;\n  iVar5 = ((undefined4 *)*piVar11)[1];\n  uVar20 = puVar3[4];\n  uVar17 = *param_4;\n  *param_6 = 0;\n  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);\n  puVar3[1] = extraout_ECX;\n  uVar19 = param_4[1];\n  if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar17 << 3);\n  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);\n  param_4[6] = 0;\n  param_4[5] = 0;\n  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;\n  param_4[8] = 0;\n  *(undefined8 *)(param_4 + 9) = uVar22;\n  param_4[0xb] = 0x19;\n  param_4[0xc] = 0;\n  param_4[0xd] = 0;\n  iVar14 = *piVar4;\n  uVar19 = *(uint *)(iVar13 + 0x40);\n  iVar12 = *(int *)(iVar13 + 0x18);\n  param_4[0xe] = *(uint *)(iVar13 + 0x3c);\n  param_4[0xf] = uVar19;\n  piVar11 = *(int **)(iVar12 + 0x40);\n  while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }\n  piVar11 = (int *)piVar11[2];\n  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);\n  if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }\n  sqlite3_free(piVar11[2]);\n  piVar11[2] = 0;\n  if (iVar14 != 0) goto LAB_0003e064;\n  if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }\nLAB_0003de32:\n  uVar17 = param_4[8];\n  puVar3[6] = param_4[5];\n  *(char *)(puVar3 + 7) = (char)param_4[7];\n  param_4[7] = 0;\n  puVar3[8] = param_4[6];\n  uVar9 = 0;\n  if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }\n  dVar1 = *(double *)(param_4 + 9);\n  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;\n  sVar10 = 0;\n  *(undefined2 *)((int)puVar3 + 0x12) = 0;\n  if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar17 = param_4[0xc];\n  *(short *)(puVar3 + 5) = sVar10;\n  uVar19 = param_4[0xb];\n  if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }\n  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;\n  uVar17 = puVar3[9] | 0x1000;\n  if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }\n  puVar3[9] = uVar17;\n  iVar16 = FUN_0002fed0();\n  if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }\n  return iVar16;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "short sVar8;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined1 uVar9;" type_identifier identifier ;) (declaration "short sVar10;" (sized_type_specifier "short" short) identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar22;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int iStack_28;" primitive_type identifier ;) (expression_statement "uVar22 = FUN_000a94ff();" (assignment_expression "uVar22 = FUN_000a94ff()" identifier = (call_expression "FUN_000a94ff()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar11 = (int *)uVar22;" (assignment_expression "piVar11 = (int *)uVar22" identifier = (cast_expression "(int *)uVar22" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar16 = piVar11[1];" (assignment_expression "iVar16 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "__s = (void *)param_4[4];" (assignment_expression "__s = (void *)param_4[4]" identifier = (cast_expression "(void *)param_4[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar3 = (uint *)piVar11[3];" (assignment_expression "puVar3 = (uint *)piVar11[3]" identifier = (cast_expression "(uint *)piVar11[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = *(int **)*piVar11;" (assignment_expression "piVar4 = *(int **)*piVar11" identifier = (pointer_expression "*(int **)*piVar11" * (cast_expression "(int **)*piVar11" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar11" * identifier)))) ;) (expression_statement "iVar5 = ((undefined4 *)*piVar11)[1];" (assignment_expression "iVar5 = ((undefined4 *)*piVar11)[1]" identifier = (subscript_expression "((undefined4 *)*piVar11)[1]" (parenthesized_expression "((undefined4 *)*piVar11)" ( (cast_expression "(undefined4 *)*piVar11" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier)) )) [ number_literal ])) ;) (expression_statement "uVar20 = puVar3[4];" (assignment_expression "uVar20 = puVar3[4]" identifier = (subscript_expression "puVar3[4]" identifier [ number_literal ])) ;) (expression_statement "uVar17 = *param_4;" (assignment_expression "uVar17 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) (expression_statement "*puVar3 = (uint)((ulonglong)uVar22 >> 0x20);" (assignment_expression "*puVar3 = (uint)((ulonglong)uVar22 >> 0x20)" (pointer_expression "*puVar3" * identifier) = (call_expression "(uint)((ulonglong)uVar22 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar22 >> 0x20)" ( (binary_expression "(ulonglong)uVar22 >> 0x20" (cast_expression "(ulonglong)uVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3[1] = extraout_ECX;" (assignment_expression "puVar3[1] = extraout_ECX" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar19 = param_4[1];" (assignment_expression "uVar19 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (if_statement "if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }" if (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }" { (expression_statement "iVar14 = *(int *)(iVar16 + 0x14);" (assignment_expression "iVar14 = *(int *)(iVar16 + 0x14)" identifier = (pointer_expression "*(int *)(iVar16 + 0x14)" * (cast_expression "(int *)(iVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x14)" ( (binary_expression "iVar16 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);" do (compound_statement "{\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    }" { (while_statement "while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }" { (expression_statement "*(undefined1 *)(uVar19 + 5) = 0;" (assignment_expression "*(undefined1 *)(uVar19 + 5) = 0" (pointer_expression "*(undefined1 *)(uVar19 + 5)" * (cast_expression "(undefined1 *)(uVar19 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 5)" ( (binary_expression "uVar19 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;" (assignment_expression "iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14" identifier = (binary_expression "*(int *)(uVar19 + 8) * 0x30 + iVar14" (binary_expression "*(int *)(uVar19 + 8) * 0x30" (pointer_expression "*(int *)(uVar19 + 8)" * (cast_expression "(int *)(uVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 8)" ( (binary_expression "uVar19 + 8" identifier + number_literal) )))) * number_literal) + identifier)) ;) (if_statement "if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;" if (parenthesized_expression "(((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0))" ( (binary_expression "((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)" (parenthesized_expression "((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0)" ( (binary_expression "(~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0" (binary_expression "(~param_2 & *(uint *)(iVar12 + 0x24)) != 0" (parenthesized_expression "(~param_2 & *(uint *)(iVar12 + 0x24))" ( (binary_expression "~param_2 & *(uint *)(iVar12 + 0x24)" (unary_expression "~param_2" ~ identifier) & (pointer_expression "*(uint *)(iVar12 + 0x24)" * (cast_expression "(uint *)(iVar12 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x24)" ( (binary_expression "iVar12 + 0x24" identifier + number_literal) ))))) )) != number_literal) || (binary_expression "(~param_1 & *(uint *)(iVar12 + 0x20)) != 0" (parenthesized_expression "(~param_1 & *(uint *)(iVar12 + 0x20))" ( (binary_expression "~param_1 & *(uint *)(iVar12 + 0x20)" (unary_expression "~param_1" ~ identifier) & (pointer_expression "*(uint *)(iVar12 + 0x20)" * (cast_expression "(uint *)(iVar12 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x20)" ( (binary_expression "iVar12 + 0x20" identifier + number_literal) ))))) )) != number_literal)) )) || (parenthesized_expression "((*(ushort *)(iVar12 + 0xc) & param_3) != 0)" ( (binary_expression "(*(ushort *)(iVar12 + 0xc) & param_3) != 0" (parenthesized_expression "(*(ushort *)(iVar12 + 0xc) & param_3)" ( (binary_expression "*(ushort *)(iVar12 + 0xc) & param_3" (pointer_expression "*(ushort *)(iVar12 + 0xc)" * (cast_expression "(ushort *)(iVar12 + 0xc)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) )))) & identifier) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*(undefined1 *)(uVar19 + 5) = 1;" (assignment_expression "*(undefined1 *)(uVar19 + 5) = 1" (pointer_expression "*(undefined1 *)(uVar19 + 5)" * (cast_expression "(undefined1 *)(uVar19 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 5)" ( (binary_expression "uVar19 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" identifier = (binary_expression "uVar19 + 0xc" identifier + number_literal)) ;) (if_statement "if (uVar17 == uVar21) goto LAB_0003dba8;" if (parenthesized_expression "(uVar17 == uVar21)" ( (binary_expression "uVar17 == uVar21" identifier == identifier) )) (goto_statement "goto LAB_0003dba8;" goto statement_identifier ;)) })) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" identifier = (binary_expression "uVar19 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != uVar21)" ( (binary_expression "uVar17 != uVar21" identifier != identifier) )) ;) })) (labeled_statement "LAB_0003dba8:\n  memset(__s,0,uVar17 << 3);" statement_identifier : (expression_statement "memset(__s,0,uVar17 << 3);" (call_expression "memset(__s,0,uVar17 << 3)" identifier (argument_list "(__s,0,uVar17 << 3)" ( identifier , number_literal , (binary_expression "uVar17 << 3" identifier << number_literal) ))) ;)) (expression_statement "uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);" (assignment_expression "uVar22 = *(undefined8 *)(unaff_EDI + 0x77777)" identifier = (pointer_expression "*(undefined8 *)(unaff_EDI + 0x77777)" * (cast_expression "(undefined8 *)(unaff_EDI + 0x77777)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x77777)" ( (binary_expression "unaff_EDI + 0x77777" identifier + number_literal) ))))) ;) (expression_statement "param_4[6] = 0;" (assignment_expression "param_4[6] = 0" (subscript_expression "param_4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[5] = 0;" (assignment_expression "param_4[5] = 0" (subscript_expression "param_4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;" (assignment_expression "iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5" identifier = (binary_expression "(uint)(byte)uVar20 * 0x44 + iVar5" (binary_expression "(uint)(byte)uVar20 * 0x44" (cast_expression "(uint)(byte)uVar20" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) * number_literal) + identifier)) ;) (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined8 *)(param_4 + 9) = uVar22;" (assignment_expression "*(undefined8 *)(param_4 + 9) = uVar22" (pointer_expression "*(undefined8 *)(param_4 + 9)" * (cast_expression "(undefined8 *)(param_4 + 9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 9)" ( (binary_expression "param_4 + 9" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_4[0xb] = 0x19;" (assignment_expression "param_4[0xb] = 0x19" (subscript_expression "param_4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[0xc] = 0;" (assignment_expression "param_4[0xc] = 0" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[0xd] = 0;" (assignment_expression "param_4[0xd] = 0" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar14 = *piVar4;" (assignment_expression "iVar14 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "uVar19 = *(uint *)(iVar13 + 0x40);" (assignment_expression "uVar19 = *(uint *)(iVar13 + 0x40)" identifier = (pointer_expression "*(uint *)(iVar13 + 0x40)" * (cast_expression "(uint *)(iVar13 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x40)" ( (binary_expression "iVar13 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar13 + 0x18);" (assignment_expression "iVar12 = *(int *)(iVar13 + 0x18)" identifier = (pointer_expression "*(int *)(iVar13 + 0x18)" * (cast_expression "(int *)(iVar13 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x18)" ( (binary_expression "iVar13 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "param_4[0xe] = *(uint *)(iVar13 + 0x3c);" (assignment_expression "param_4[0xe] = *(uint *)(iVar13 + 0x3c)" (subscript_expression "param_4[0xe]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(iVar13 + 0x3c)" * (cast_expression "(uint *)(iVar13 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x3c)" ( (binary_expression "iVar13 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "param_4[0xf] = uVar19;" (assignment_expression "param_4[0xf] = uVar19" (subscript_expression "param_4[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar11 = *(int **)(iVar12 + 0x40);" (assignment_expression "piVar11 = *(int **)(iVar12 + 0x40)" identifier = (pointer_expression "*(int **)(iVar12 + 0x40)" * (cast_expression "(int **)(iVar12 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0x40)" ( (binary_expression "iVar12 + 0x40" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (piVar11 == (int *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }" { (if_statement "if (piVar11 == (int *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }" { comment (expression_statement "pcVar7 = (code *)invalidInstructionException();" (assignment_expression "pcVar7 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar7)();" (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( ))) ;) })) (if_statement "if (iVar14 == *piVar11) break;" if (parenthesized_expression "(iVar14 == *piVar11)" ( (binary_expression "iVar14 == *piVar11" identifier == (pointer_expression "*piVar11" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "piVar11 = (int *)piVar11[6];" (assignment_expression "piVar11 = (int *)piVar11[6]" identifier = (cast_expression "(int *)piVar11[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[6]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar11 = (int *)piVar11[2];" (assignment_expression "piVar11 = (int *)piVar11[2]" identifier = (cast_expression "(int *)piVar11[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);" (assignment_expression "iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4)" identifier = (call_expression "(**(code **)(*piVar11 + 0xc))(piVar11,param_4)" (parenthesized_expression "(**(code **)(*piVar11 + 0xc))" ( (pointer_expression "**(code **)(*piVar11 + 0xc)" * (pointer_expression "*(code **)(*piVar11 + 0xc)" * (cast_expression "(code **)(*piVar11 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar11 + 0xc)" ( (binary_expression "*piVar11 + 0xc" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) )) (argument_list "(piVar11,param_4)" ( identifier , identifier )))) ;) (if_statement "if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }" if (parenthesized_expression "((iVar14 != 0) && (iVar14 != 0x13))" ( (binary_expression "(iVar14 != 0) && (iVar14 != 0x13)" (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar14 != 0x13)" ( (binary_expression "iVar14 != 0x13" identifier != number_literal) ))) )) (compound_statement "{\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }" { (if_statement "if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }" if (parenthesized_expression "(iVar14 == 7)" ( (binary_expression "iVar14 == 7" identifier == number_literal) )) (compound_statement "{\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }" { (if_statement "if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }" if (parenthesized_expression "((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0)" ( (binary_expression "(*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0" (parenthesized_expression "(*(uint *)(*piVar4 + 0x4c) & 0xffff00)" ( (binary_expression "*(uint *)(*piVar4 + 0x4c) & 0xffff00" (pointer_expression "*(uint *)(*piVar4 + 0x4c)" * (cast_expression "(uint *)(*piVar4 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + 0x4c)" ( (binary_expression "*piVar4 + 0x4c" (pointer_expression "*piVar4" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        FUN_0002e050();\n      }" { (expression_statement "FUN_0002e050();" (call_expression "FUN_0002e050()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" identifier (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 7;" return number_literal ;) })) (if_statement "if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }" if (parenthesized_expression "(piVar11[2] != 0)" ( (binary_expression "piVar11[2] != 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }" { (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2])" identifier (argument_list "(piVar4,unaff_EDI + 0x6c964,piVar11[2])" ( identifier , (binary_expression "unaff_EDI + 0x6c964" identifier + number_literal) , (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" identifier (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return iVar14;" return identifier ;) })) (expression_statement "uVar18 = FUN_0002c4f0();" (assignment_expression "uVar18 = FUN_0002c4f0()" identifier = (call_expression "FUN_0002c4f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18)" identifier (argument_list "(piVar4,unaff_EDI + 0x6c964,uVar18)" ( identifier , (binary_expression "unaff_EDI + 0x6c964" identifier + number_literal) , identifier ))) ;) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" identifier (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0003e064:\n    iVar16 = 0;" statement_identifier : (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;)) (if_statement "if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }" if (parenthesized_expression "(iVar14 != 0x13)" ( (binary_expression "iVar14 != 0x13" identifier != number_literal) )) (compound_statement "{\n      iVar16 = iVar14;\n    }" { (expression_statement "iVar16 = iVar14;" (assignment_expression "iVar16 = iVar14" identifier = identifier) ;) })) (return_statement "return iVar16;" return identifier ;) })) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" identifier (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar14 != 0) goto LAB_0003e064;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003e064;" goto statement_identifier ;)) (if_statement "if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" if (parenthesized_expression "((int)uVar17 < 1)" ( (binary_expression "(int)uVar17 < 1" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }" { (expression_statement "*(undefined2 *)((int)puVar3 + 0x1e) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x1e) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x1e)" * (cast_expression "(undefined2 *)((int)puVar3 + 0x1e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1e)" ( (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar3 + 10) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 10) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 10)" * (cast_expression "(undefined2 *)(puVar3 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 10)" ( (binary_expression "puVar3 + 10" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" else (compound_statement "{\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" { (expression_statement "piVar11 = (int *)puVar3[0xc];" (assignment_expression "piVar11 = (int *)puVar3[0xc]" identifier = (cast_expression "(int *)puVar3[0xc]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[0xc]" identifier [ number_literal ]))) ;) (expression_statement "piVar15 = piVar11;" (assignment_expression "piVar15 = piVar11" identifier = identifier) ;) (do_statement "do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);" do (compound_statement "{\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    }" { (expression_statement "*piVar15 = 0;" (assignment_expression "*piVar15 = 0" (pointer_expression "*piVar15" * identifier) = number_literal) ;) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" identifier = (binary_expression "piVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar11 + uVar17 != piVar15)" ( (binary_expression "piVar11 + uVar17 != piVar15" (binary_expression "piVar11 + uVar17" identifier + identifier) != identifier) )) ;) (expression_statement "uVar19 = param_4[1];" (assignment_expression "uVar19 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined2 *)((int)puVar3 + 0x1e) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x1e) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x1e)" * (cast_expression "(undefined2 *)((int)puVar3 + 0x1e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1e)" ( (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "local_50 = -1;" (assignment_expression "local_50 = -1" identifier = number_literal) ;) (do_statement "do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);" do (compound_statement "{\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    }" { (expression_statement "iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;" (assignment_expression "iVar14 = *(int *)((int)__s + uVar21 * 8) + -1" identifier = (binary_expression "*(int *)((int)__s + uVar21 * 8) + -1" (pointer_expression "*(int *)((int)__s + uVar21 * 8)" * (cast_expression "(int *)((int)__s + uVar21 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar21 * 8)" ( (binary_expression "(int)__s + uVar21 * 8" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar21 * 8" identifier * number_literal)) )))) + number_literal)) ;) (if_statement "if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }" if (parenthesized_expression "(-1 < iVar14)" ( (binary_expression "-1 < iVar14" number_literal < identifier) )) (compound_statement "{\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }" { (expression_statement "iVar12 = *(int *)(uVar19 + 8);" (assignment_expression "iVar12 = *(int *)(uVar19 + 8)" identifier = (pointer_expression "*(int *)(uVar19 + 8)" * (cast_expression "(int *)(uVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 8)" ( (binary_expression "uVar19 + 8" identifier + number_literal) ))))) ;) (if_statement "if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;" if (parenthesized_expression "(((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0'))))" ( (binary_expression "((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))" (parenthesized_expression "((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12))" ( (binary_expression "(((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)" (parenthesized_expression "(((int)uVar17 <= iVar14) || (iVar12 < 0))" ( (binary_expression "((int)uVar17 <= iVar14) || (iVar12 < 0)" (parenthesized_expression "((int)uVar17 <= iVar14)" ( (binary_expression "(int)uVar17 <= iVar14" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) || (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar16 + 0xc) <= iVar12)" ( (binary_expression "*(int *)(iVar16 + 0xc) <= iVar12" (pointer_expression "*(int *)(iVar16 + 0xc)" * (cast_expression "(int *)(iVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0xc)" ( (binary_expression "iVar16 + 0xc" identifier + number_literal) )))) <= identifier) ))) )) || (parenthesized_expression "((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))" ( (parenthesized_expression "(piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0'))" ( (binary_expression "piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')" (binary_expression "piVar11[iVar14] != 0" (subscript_expression "piVar11[iVar14]" identifier [ identifier ]) != number_literal) || (parenthesized_expression "(*(char *)(uVar19 + 5) == '\0')" ( (binary_expression "*(char *)(uVar19 + 5) == '\0'" (pointer_expression "*(char *)(uVar19 + 5)" * (cast_expression "(char *)(uVar19 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 5)" ( (binary_expression "uVar19 + 5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (goto_statement "goto LAB_0003dfb0;" goto statement_identifier ;)) (expression_statement "iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);" (assignment_expression "iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14)" identifier = (binary_expression "iVar12 * 0x30 + *(int *)(iVar16 + 0x14)" (binary_expression "iVar12 * 0x30" identifier * number_literal) + (pointer_expression "*(int *)(iVar16 + 0x14)" * (cast_expression "(int *)(iVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x14)" ( (binary_expression "iVar16 + 0x14" identifier + number_literal) )))))) ;) (expression_statement "*puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);" (assignment_expression "*puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20)" (pointer_expression "*puVar3" * identifier) = (binary_expression "*puVar3 | *(uint *)(iVar12 + 0x20)" (pointer_expression "*puVar3" * identifier) | (pointer_expression "*(uint *)(iVar12 + 0x20)" * (cast_expression "(uint *)(iVar12 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x20)" ( (binary_expression "iVar12 + 0x20" identifier + number_literal) )))))) ;) (expression_statement "puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);" (assignment_expression "puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (binary_expression "puVar3[1] | *(uint *)(iVar12 + 0x24)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) | (pointer_expression "*(uint *)(iVar12 + 0x24)" * (cast_expression "(uint *)(iVar12 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x24)" ( (binary_expression "iVar12 + 0x24" identifier + number_literal) )))))) ;) (expression_statement "piVar11[iVar14] = iVar12;" (assignment_expression "piVar11[iVar14] = iVar12" (subscript_expression "piVar11[iVar14]" identifier [ identifier ]) = identifier) ;) (if_statement "if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }" if (parenthesized_expression "(local_50 < iVar14)" ( (binary_expression "local_50 < iVar14" identifier < identifier) )) (compound_statement "{\n          local_50 = iVar14;\n        }" { (expression_statement "local_50 = iVar14;" (assignment_expression "local_50 = iVar14" identifier = identifier) ;) })) (if_statement "if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }" if (parenthesized_expression "(((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0))" ( (binary_expression "((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)" (parenthesized_expression "((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10))" ( (binary_expression "(*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)" (parenthesized_expression "(*(char *)((int)__s + uVar21 * 8 + 4) != '\0')" ( (binary_expression "*(char *)((int)__s + uVar21 * 8 + 4) != '\0'" (pointer_expression "*(char *)((int)__s + uVar21 * 8 + 4)" * (cast_expression "(char *)((int)__s + uVar21 * 8 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar21 * 8 + 4)" ( (binary_expression "(int)__s + uVar21 * 8 + 4" (binary_expression "(int)__s + uVar21 * 8" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar21 * 8" identifier * number_literal)) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((int)uVar21 < 0x10)" ( (binary_expression "(int)uVar21 < 0x10" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))) )) && (parenthesized_expression "((param_5 >> (uVar21 & 0x1f) & 1) == 0)" ( (binary_expression "(param_5 >> (uVar21 & 0x1f) & 1) == 0" (parenthesized_expression "(param_5 >> (uVar21 & 0x1f) & 1)" ( (binary_expression "param_5 >> (uVar21 & 0x1f) & 1" (binary_expression "param_5 >> (uVar21 & 0x1f)" identifier >> (parenthesized_expression "(uVar21 & 0x1f)" ( (binary_expression "uVar21 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }" { (expression_statement "*(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));" (assignment_expression "*(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f))" (pointer_expression "*(ushort *)((int)puVar3 + 0x1e)" * (cast_expression "(ushort *)((int)puVar3 + 0x1e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1e)" ( (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f))" (pointer_expression "*(ushort *)((int)puVar3 + 0x1e)" * (cast_expression "(ushort *)((int)puVar3 + 0x1e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1e)" ( (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | (call_expression "(ushort)(1 << ((byte)iVar14 & 0x1f))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(1 << ((byte)iVar14 & 0x1f))" ( (binary_expression "1 << ((byte)iVar14 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar14 & 0x1f)" ( (binary_expression "(byte)iVar14 & 0x1f" (cast_expression "(byte)iVar14" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) })) (if_statement "if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }" if (parenthesized_expression "((*(byte *)(iVar12 + 0xc) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar12 + 0xc) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar12 + 0xc) & 1)" ( (binary_expression "*(byte *)(iVar12 + 0xc) & 1" (pointer_expression "*(byte *)(iVar12 + 0xc)" * (cast_expression "(byte *)(iVar12 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }" { (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[0xd] = param_4[0xd] & 0xfffffffe;" (assignment_expression "param_4[0xd] = param_4[0xd] & 0xfffffffe" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = (binary_expression "param_4[0xd] & 0xfffffffe" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "*param_6 = 1;" (assignment_expression "*param_6 = 1" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) })) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" identifier = (binary_expression "uVar19 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != uVar21)" ( (binary_expression "uVar17 != uVar21" identifier != identifier) )) ;) (expression_statement "*(short *)(puVar3 + 10) = (short)local_50 + 1;" (assignment_expression "*(short *)(puVar3 + 10) = (short)local_50 + 1" (pointer_expression "*(short *)(puVar3 + 10)" * (cast_expression "(short *)(puVar3 + 10)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 10)" ( (binary_expression "puVar3 + 10" identifier + number_literal) )))) = (binary_expression "(short)local_50 + 1" (cast_expression "(short)local_50" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) (if_statement "if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }" if (parenthesized_expression "(local_50 != -1)" ( (binary_expression "local_50 != -1" identifier != number_literal) )) (compound_statement "{\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }" { (if_statement "if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }" if (parenthesized_expression "(*piVar11 != 0)" ( (binary_expression "*piVar11 != 0" (pointer_expression "*piVar11" * identifier) != number_literal) )) (compound_statement "{\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);" do (compound_statement "{\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        }" { (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (local_50 < iVar16) goto LAB_0003de32;" if (parenthesized_expression "(local_50 < iVar16)" ( (binary_expression "local_50 < iVar16" identifier < identifier) )) (goto_statement "goto LAB_0003de32;" goto statement_identifier ;)) }) while (parenthesized_expression "(piVar11[iVar16] != 0)" ( (binary_expression "piVar11[iVar16] != 0" (subscript_expression "piVar11[iVar16]" identifier [ identifier ]) != number_literal) )) ;) })) (labeled_statement "LAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));" statement_identifier : (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44))" identifier (argument_list "(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44))" ( identifier , (binary_expression "unaff_EDI + 0x6c937" identifier + number_literal) , (pointer_expression "**(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" * (pointer_expression "*(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" * (cast_expression "(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" ( (binary_expression "iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44" (binary_expression "iVar5 + 0x18" identifier + number_literal) + (binary_expression "(uint)(byte)uVar20 * 0x44" (cast_expression "(uint)(byte)uVar20" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) * number_literal)) ))))) ))) ;)) (return_statement "return 1;" return number_literal ;) })) }))) (labeled_statement "LAB_0003de32:\n  uVar17 = param_4[8];" statement_identifier : (expression_statement "uVar17 = param_4[8];" (assignment_expression "uVar17 = param_4[8]" identifier = (subscript_expression "param_4[8]" identifier [ number_literal ])) ;)) (expression_statement "puVar3[6] = param_4[5];" (assignment_expression "puVar3[6] = param_4[5]" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = (subscript_expression "param_4[5]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(puVar3 + 7) = (char)param_4[7];" (assignment_expression "*(char *)(puVar3 + 7) = (char)param_4[7]" (pointer_expression "*(char *)(puVar3 + 7)" * (cast_expression "(char *)(puVar3 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 7)" ( (binary_expression "puVar3 + 7" identifier + number_literal) )))) = (cast_expression "(char)param_4[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_4[7]" identifier [ number_literal ]))) ;) (expression_statement "param_4[7] = 0;" (assignment_expression "param_4[7] = 0" (subscript_expression "param_4[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = param_4[6];" (assignment_expression "puVar3[8] = param_4[6]" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = (subscript_expression "param_4[6]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar9 = (undefined1)param_4[2];\n  }" { (expression_statement "uVar9 = (undefined1)param_4[2];" (assignment_expression "uVar9 = (undefined1)param_4[2]" identifier = (cast_expression "(undefined1)param_4[2]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) })) (expression_statement "dVar1 = *(double *)(param_4 + 9);" (assignment_expression "dVar1 = *(double *)(param_4 + 9)" identifier = (pointer_expression "*(double *)(param_4 + 9)" * (cast_expression "(double *)(param_4 + 9)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 9)" ( (binary_expression "param_4 + 9" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar3 + 0x1d) = uVar9;" (assignment_expression "*(undefined1 *)((int)puVar3 + 0x1d) = uVar9" (pointer_expression "*(undefined1 *)((int)puVar3 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar3 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1d)" ( (binary_expression "(int)puVar3 + 0x1d" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (expression_statement "*(undefined2 *)((int)puVar3 + 0x12) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x12) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x12)" * (cast_expression "(undefined2 *)((int)puVar3 + 0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x12)" ( (binary_expression "(int)puVar3 + 0x12" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }" if (parenthesized_expression "(1.0 < dVar1)" ( (binary_expression "1.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }" { (if_statement "if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" if (parenthesized_expression "((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1)" ( (binary_expression "(double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1" (cast_expression "(double)*(float *)(&DAT_0007770b + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_0007770b + unaff_EDI)" * (cast_expression "(float *)(&DAT_0007770b + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007770b + unaff_EDI)" ( (binary_expression "&DAT_0007770b + unaff_EDI" (pointer_expression "&DAT_0007770b" & identifier) + identifier) ))))) < identifier) )) (compound_statement "{\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }" { (expression_statement "sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;" (assignment_expression "sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10" identifier = (binary_expression "((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10" (parenthesized_expression "((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe)" ( (binary_expression "(ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe" (call_expression "(ushort)((ulonglong)dVar1 >> 0x34)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((ulonglong)dVar1 >> 0x34)" ( (binary_expression "(ulonglong)dVar1 >> 0x34" (cast_expression "(ulonglong)dVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) - number_literal) )) * number_literal)) ;) }) (else_clause "else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" else (compound_statement "{\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" { (if_statement "if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }" if (parenthesized_expression "((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1)" ( (binary_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1" (cast_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_000776d7 + unaff_EDI)" * (cast_expression "(float *)(&DAT_000776d7 + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000776d7 + unaff_EDI)" ( (binary_expression "&DAT_000776d7 + unaff_EDI" (pointer_expression "&DAT_000776d7" & identifier) + identifier) ))))) <= identifier) )) (compound_statement "{\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }" { (expression_statement "lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));" (assignment_expression "lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" identifier = (cast_expression "(longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" identifier (argument_list "(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" ( (binary_expression "dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI)" identifier - (cast_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_000776d7 + unaff_EDI)" * (cast_expression "(float *)(&DAT_000776d7 + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000776d7 + unaff_EDI)" ( (binary_expression "&DAT_000776d7 + unaff_EDI" (pointer_expression "&DAT_000776d7" & identifier) + identifier) )))))) ))))) ;) (expression_statement "iStack_28 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iStack_28 = (int)((ulonglong)lVar2 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" identifier = (cast_expression "(undefined4)lVar2" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);" (assignment_expression "lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier = (call_expression "CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier (argument_list "(iStack_28 + -0x80000000,local_2c)" ( (binary_expression "iStack_28 + -0x80000000" identifier + number_literal) , identifier )))) ;) }) (else_clause "else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }" else (compound_statement "{\n        lVar2 = (longlong)ROUND(dVar1);\n      }" { (expression_statement "lVar2 = (longlong)ROUND(dVar1);" (assignment_expression "lVar2 = (longlong)ROUND(dVar1)" identifier = (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier ))))) ;) }))) (expression_statement "uVar19 = (uint)((ulonglong)lVar2 >> 0x20);" (assignment_expression "uVar19 = (uint)((ulonglong)lVar2 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar17 = (uint)lVar2;" (assignment_expression "uVar17 = (uint)lVar2" identifier = (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" if (parenthesized_expression "((uVar19 == 0) && (uVar17 < 8))" ( (binary_expression "(uVar19 == 0) && (uVar17 < 8)" (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar17 < 8)" ( (binary_expression "uVar17 < 8" identifier < number_literal) ))) )) (compound_statement "{\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }" { (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar17 < 2) goto LAB_0003df0c;" if (parenthesized_expression "(uVar17 < 2)" ( (binary_expression "uVar17 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003df0c;" goto statement_identifier ;)) (expression_statement "sVar8 = 0x28;" (assignment_expression "sVar8 = 0x28" identifier = number_literal) ;) (do_statement "do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);" do (compound_statement "{\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        }" { (expression_statement "sVar10 = sVar8;" (assignment_expression "sVar10 = sVar8" identifier = identifier) ;) (expression_statement "uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;" (assignment_expression "uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f" identifier = (binary_expression "(int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f" (binary_expression "(int)((ulonglong)lVar2 >> 0x20) << 1" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) << number_literal) | (binary_expression "(uint)lVar2 >> 0x1f" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal))) ;) (expression_statement "uVar17 = (uint)lVar2 * 2;" (assignment_expression "uVar17 = (uint)lVar2 * 2" identifier = (binary_expression "(uint)lVar2 * 2" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "lVar2 = CONCAT44(uVar19,uVar17);" (assignment_expression "lVar2 = CONCAT44(uVar19,uVar17)" identifier = (call_expression "CONCAT44(uVar19,uVar17)" identifier (argument_list "(uVar19,uVar17)" ( identifier , identifier )))) ;) (if_statement "if (uVar19 != 0) break;" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "sVar8 = sVar10 + -10;" (assignment_expression "sVar8 = sVar10 + -10" identifier = (binary_expression "sVar10 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 < 8)" ( (binary_expression "uVar17 < 8" identifier < number_literal) )) ;) (expression_statement "sVar10 = sVar10 + -0x14;" (assignment_expression "sVar10 = sVar10 + -0x14" identifier = (binary_expression "sVar10 + -0x14" identifier + number_literal)) ;) }) (else_clause "else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" else (compound_statement "{\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" { (if_statement "if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }" { (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" { (for_statement "for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }" for ( ; (binary_expression "uVar17 >> uVar20 == 0" (binary_expression "uVar17 >> uVar20" identifier >> identifier) == number_literal) ; (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ) (compound_statement "{\n            }" { })) })) (expression_statement "uVar20 = (uVar20 ^ 0x1f) + 0x20;" (assignment_expression "uVar20 = (uVar20 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar20 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar20 ^ 0x1f)" ( (binary_expression "uVar20 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }) (else_clause "else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" else (compound_statement "{\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" { (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" { (for_statement "for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }" for ( ; (binary_expression "uVar19 >> uVar20 == 0" (binary_expression "uVar19 >> uVar20" identifier >> identifier) == number_literal) ; (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ) (compound_statement "{\n            }" { })) })) (expression_statement "uVar20 = uVar20 ^ 0x1f;" (assignment_expression "uVar20 = uVar20 ^ 0x1f" identifier = (binary_expression "uVar20 ^ 0x1f" identifier ^ number_literal)) ;) }))) (expression_statement "uVar20 = 0x3c - uVar20;" (assignment_expression "uVar20 = 0x3c - uVar20" identifier = (binary_expression "0x3c - uVar20" number_literal - identifier)) ;) (expression_statement "bVar6 = (byte)uVar20 & 0x1f;" (assignment_expression "bVar6 = (byte)uVar20 & 0x1f" identifier = (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;" (assignment_expression "uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6" identifier = (binary_expression "uVar17 >> bVar6 | uVar19 << 0x20 - bVar6" (binary_expression "uVar17 >> bVar6" identifier >> identifier) | (binary_expression "uVar19 << 0x20 - bVar6" identifier << (binary_expression "0x20 - bVar6" number_literal - identifier)))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }" { (expression_statement "uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);" (assignment_expression "uVar17 = uVar19 >> ((byte)uVar20 & 0x1f)" identifier = (binary_expression "uVar19 >> ((byte)uVar20 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "sVar10 = (short)uVar20 * 10 + 0x1e;" (assignment_expression "sVar10 = (short)uVar20 * 10 + 0x1e" identifier = (binary_expression "(short)uVar20 * 10 + 0x1e" (binary_expression "(short)uVar20 * 10" (cast_expression "(short)uVar20" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) }))) (expression_statement "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);" (assignment_expression "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" identifier = (binary_expression "sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" identifier + (pointer_expression "*(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" * (cast_expression "(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" ( (binary_expression "unaff_EDI + 0x73693 + (uVar17 & 7) * 2" (binary_expression "unaff_EDI + 0x73693" identifier + number_literal) + (binary_expression "(uVar17 & 7) * 2" (parenthesized_expression "(uVar17 & 7)" ( (binary_expression "uVar17 & 7" identifier & number_literal) )) * number_literal)) )))))) ;) }))) })) (labeled_statement "LAB_0003df0c:\n  uVar17 = param_4[0xc];" statement_identifier : (expression_statement "uVar17 = param_4[0xc];" (assignment_expression "uVar17 = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;)) (expression_statement "*(short *)(puVar3 + 5) = sVar10;" (assignment_expression "*(short *)(puVar3 + 5) = sVar10" (pointer_expression "*(short *)(puVar3 + 5)" * (cast_expression "(short *)(puVar3 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 5)" ( (binary_expression "puVar3 + 5" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = param_4[0xb];" (assignment_expression "uVar19 = param_4[0xb]" identifier = (subscript_expression "param_4[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" if (parenthesized_expression "((uVar17 == 0) && (uVar19 < 8))" ( (binary_expression "(uVar17 == 0) && (uVar19 < 8)" (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar19 < 8)" ( (binary_expression "uVar19 < 8" identifier < number_literal) ))) )) (compound_statement "{\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }" { (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar19 < 2) goto LAB_0003df5f;" if (parenthesized_expression "(uVar19 < 2)" ( (binary_expression "uVar19 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003df5f;" goto statement_identifier ;)) (expression_statement "sVar8 = 0x28;" (assignment_expression "sVar8 = 0x28" identifier = number_literal) ;) (do_statement "do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);" do (compound_statement "{\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    }" { (expression_statement "sVar10 = sVar8;" (assignment_expression "sVar10 = sVar8" identifier = identifier) ;) (expression_statement "uVar21 = uVar19 * 2;" (assignment_expression "uVar21 = uVar19 * 2" identifier = (binary_expression "uVar19 * 2" identifier * number_literal)) ;) (if_statement "if ((int)uVar19 < 0) break;" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar21;" (assignment_expression "uVar19 = uVar21" identifier = identifier) ;) (expression_statement "sVar8 = sVar10 + -10;" (assignment_expression "sVar8 = sVar10 + -10" identifier = (binary_expression "sVar10 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar21 < 8)" ( (binary_expression "uVar21 < 8" identifier < number_literal) )) ;) (expression_statement "sVar10 = sVar10 + -0x14;" (assignment_expression "sVar10 = sVar10 + -0x14" identifier = (binary_expression "sVar10 + -0x14" identifier + number_literal)) ;) }) (else_clause "else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" else (compound_statement "{\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" { (if_statement "if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }" { (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" { (for_statement "for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }" for ( ; (binary_expression "uVar19 >> uVar20 == 0" (binary_expression "uVar19 >> uVar20" identifier >> identifier) == number_literal) ; (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (expression_statement "uVar20 = (uVar20 ^ 0x1f) + 0x20;" (assignment_expression "uVar20 = (uVar20 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar20 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar20 ^ 0x1f)" ( (binary_expression "uVar20 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }) (else_clause "else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" else (compound_statement "{\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" { (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" { (for_statement "for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }" for ( ; (binary_expression "uVar17 >> uVar20 == 0" (binary_expression "uVar17 >> uVar20" identifier >> identifier) == number_literal) ; (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (expression_statement "uVar20 = uVar20 ^ 0x1f;" (assignment_expression "uVar20 = uVar20 ^ 0x1f" identifier = (binary_expression "uVar20 ^ 0x1f" identifier ^ number_literal)) ;) }))) (expression_statement "uVar20 = 0x3c - uVar20;" (assignment_expression "uVar20 = 0x3c - uVar20" identifier = (binary_expression "0x3c - uVar20" number_literal - identifier)) ;) (expression_statement "bVar6 = (byte)uVar20 & 0x1f;" (assignment_expression "bVar6 = (byte)uVar20 & 0x1f" identifier = (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;" (assignment_expression "uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6" identifier = (binary_expression "uVar19 >> bVar6 | uVar17 << 0x20 - bVar6" (binary_expression "uVar19 >> bVar6" identifier >> identifier) | (binary_expression "uVar17 << 0x20 - bVar6" identifier << (binary_expression "0x20 - bVar6" number_literal - identifier)))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }" { (expression_statement "uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);" (assignment_expression "uVar21 = uVar17 >> ((byte)uVar20 & 0x1f)" identifier = (binary_expression "uVar17 >> ((byte)uVar20 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "sVar10 = (short)uVar20 * 10 + 0x1e;" (assignment_expression "sVar10 = (short)uVar20 * 10 + 0x1e" identifier = (binary_expression "(short)uVar20 * 10 + 0x1e" (binary_expression "(short)uVar20 * 10" (cast_expression "(short)uVar20" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) }))) (expression_statement "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);" (assignment_expression "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" identifier = (binary_expression "sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" identifier + (pointer_expression "*(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" * (cast_expression "(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" ( (binary_expression "unaff_EDI + 0x73693 + (uVar21 & 7) * 2" (binary_expression "unaff_EDI + 0x73693" identifier + number_literal) + (binary_expression "(uVar21 & 7) * 2" (parenthesized_expression "(uVar21 & 7)" ( (binary_expression "uVar21 & 7" identifier & number_literal) )) * number_literal)) )))))) ;) (labeled_statement "LAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;" statement_identifier : (expression_statement "*(short *)((int)puVar3 + 0x16) = sVar10;" (assignment_expression "*(short *)((int)puVar3 + 0x16) = sVar10" (pointer_expression "*(short *)((int)puVar3 + 0x16)" * (cast_expression "(short *)((int)puVar3 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x16)" ( (binary_expression "(int)puVar3 + 0x16" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "uVar17 = puVar3[9] | 0x1000;" (assignment_expression "uVar17 = puVar3[9] | 0x1000" identifier = (binary_expression "puVar3[9] | 0x1000" (subscript_expression "puVar3[9]" identifier [ number_literal ]) | number_literal)) ;) (if_statement "if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }" if (parenthesized_expression "((param_4[0xd] & 1) == 0)" ( (binary_expression "(param_4[0xd] & 1) == 0" (parenthesized_expression "(param_4[0xd] & 1)" ( (binary_expression "param_4[0xd] & 1" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar17 = puVar3[9] & 0xffffefff;\n  }" { (expression_statement "uVar17 = puVar3[9] & 0xffffefff;" (assignment_expression "uVar17 = puVar3[9] & 0xffffefff" identifier = (binary_expression "puVar3[9] & 0xffffefff" (subscript_expression "puVar3[9]" identifier [ number_literal ]) & number_literal)) ;) })) (expression_statement "puVar3[9] = uVar17;" (assignment_expression "puVar3[9] = uVar17" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar16 = FUN_0002fed0();" (assignment_expression "iVar16 = FUN_0002fed0()" identifier = (call_expression "FUN_0002fed0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }" if (parenthesized_expression "((char)puVar3[7] != '\0')" ( (binary_expression "(char)puVar3[7] != '\0'" (cast_expression "(char)puVar3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar3[7]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }" { (expression_statement "sqlite3_free(puVar3[8]);" (call_expression "sqlite3_free(puVar3[8])" identifier (argument_list "(puVar3[8])" ( (subscript_expression "puVar3[8]" identifier [ number_literal ]) ))) ;) (expression_statement "*(undefined1 *)(puVar3 + 7) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 7) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 7)" * (cast_expression "(undefined1 *)(puVar3 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 7)" ( (binary_expression "puVar3 + 7" identifier + number_literal) )))) = number_literal) ;) })) (return_statement "return iVar16;" return identifier ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nint whereLoopAddVirtualOne\n              (WhereLoopBuilder *pBuilder,Bitmask mPrereq,Bitmask mUsable,u16 mExclude,\n              sqlite3_index_info *pIdxInfo,u16 mNoOmit,int *pbIn)\n\n{\n  uint *puVar1;\n  u16 *puVar2;\n  double dVar3;\n  longlong lVar4;\n  byte bVar5;\n  WhereClause *pWVar6;\n  sqlite3_index_constraint_usage *__s;\n  WhereLoop *pTemplate;\n  Parse *pParse;\n  SrcList *pSVar7;\n  sqlite3 *psVar8;\n  undefined4 uVar9;\n  Table *pTVar10;\n  VTable *pVVar11;\n  sqlite3_vtab *psVar12;\n  WhereTerm **ppWVar13;\n  code *pcVar14;\n  short sVar15;\n  i8 iVar16;\n  short sVar17;\n  WhereLoopBuilder *pBuilder_00;\n  int iVar18;\n  WhereTerm **ppWVar19;\n  WhereTerm *pWVar20;\n  uint uVar21;\n  uint uVar22;\n  char *pcVar23;\n  int iVar24;\n  undefined4 extraout_ECX;\n  LogEst LVar25;\n  sqlite3_index_constraint *psVar26;\n  uint uVar27;\n  uint uVar28;\n  int unaff_EDI;\n  undefined8 uVar29;\n  undefined2 in_stack_0000001a;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar29 = __x86_get_pc_thunk_di();\n  pBuilder_00 = (WhereLoopBuilder *)uVar29;\n  pWVar6 = pBuilder_00->pWC;\n  __s = ((sqlite3_index_info *)mUsable)->aConstraintUsage;\n  pTemplate = pBuilder_00->pNew;\n  pParse = pBuilder_00->pWInfo->pParse;\n  pSVar7 = pBuilder_00->pWInfo->pTabList;\n  bVar5 = pTemplate->iTab;\n  uVar22 = ((sqlite3_index_info *)mUsable)->nConstraint;\n  *_mExclude = 0;\n  *(int *)&pTemplate->prereq = (int)((ulonglong)uVar29 >> 0x20);\n  *(undefined4 *)((int)&pTemplate->prereq + 4) = extraout_ECX;\n  psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n  if (0 < (int)uVar22) {\n    pWVar20 = pWVar6->a;\n    uVar28 = 0;\n    do {\n      while( true ) {\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar22 << 3);\n  dVar3 = *(double *)(unaff_EDI + 0x77777);\n  ((sqlite3_index_info *)mUsable)->idxStr = (char *)0x0;\n  ((sqlite3_index_info *)mUsable)->idxNum = 0;\n  ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n  ((sqlite3_index_info *)mUsable)->estimatedCost = dVar3;\n  *(undefined4 *)&((sqlite3_index_info *)mUsable)->estimatedRows = 0x19;\n  *(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4) = 0;\n  ((sqlite3_index_info *)mUsable)->idxFlags = 0;\n  psVar8 = pParse->db;\n  uVar9 = *(undefined4 *)((int)&pSVar7->a[bVar5].colUsed + 4);\n  pTVar10 = pSVar7->a[bVar5].pTab;\n  *(int *)&((sqlite3_index_info *)mUsable)->colUsed = (int)pSVar7->a[bVar5].colUsed;\n  *(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->colUsed + 4) = uVar9;\n  pVVar11 = pTVar10->pVTable;\n  while( true ) {\n    if (pVVar11 == (VTable *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar14 = (code *)invalidInstructionException();\n      (*pcVar14)();\n    }\n    if (psVar8 == pVVar11->db) break;\n    pVVar11 = pVVar11->pNext;\n  }\n  psVar12 = pVVar11->pVtab;\n  iVar18 = (*psVar12->pModule->xBestIndex)(psVar12,(sqlite3_index_info *)mUsable);\n  if ((iVar18 != 0) && (iVar18 != 0x13)) {\n    if (iVar18 == 7) {\n      psVar8 = pParse->db;\n      uVar22._0_1_ = psVar8->temp_store;\n      uVar22._1_1_ = psVar8->mallocFailed;\n      uVar22._2_1_ = psVar8->bBenignMalloc;\n      uVar22._3_1_ = psVar8->dfltLockMode;\n      if ((uVar22 & 0xffff00) == 0) {\n        sqlite3OomFault(psVar8);\n      }\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return 7;\n    }\n    if (psVar12->zErrMsg != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return iVar18;\n    }\n    pcVar23 = sqlite3ErrStr(iVar18);\n    sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23);\n    sqlite3_free(psVar12->zErrMsg);\n    psVar12->zErrMsg = (char *)0x0;\nLAB_0003e064:\n    iVar24 = 0;\n    if (iVar18 != 0x13) {\n      iVar24 = iVar18;\n    }\n    return iVar24;\n  }\n  sqlite3_free(psVar12->zErrMsg);\n  psVar12->zErrMsg = (char *)0x0;\n  if (iVar18 != 0) goto LAB_0003e064;\n  if ((int)uVar22 < 1) {\n    (pTemplate->u).btree.nDistinctCol = 0;\n    pTemplate->nLTerm = 0;\n  }\n  else {\n    ppWVar13 = pTemplate->aLTerm;\n    ppWVar19 = ppWVar13;\n    do {\n      *ppWVar19 = (WhereTerm *)0x0;\n      ppWVar19 = ppWVar19 + 1;\n    } while (ppWVar13 + uVar22 != ppWVar19);\n    psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n    (pTemplate->u).btree.nDistinctCol = 0;\n    uVar28 = 0;\n    local_50 = -1;\n    do {\n      iVar18 = __s[uVar28].argvIndex + -1;\n      if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n    pTemplate->nLTerm = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }\nLAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);\n      return 1;\n    }\n  }\nLAB_0003de32:\n  iVar18 = ((sqlite3_index_info *)mUsable)->orderByConsumed;\n  (pTemplate->u).vtab.idxNum = ((sqlite3_index_info *)mUsable)->idxNum;\n  (pTemplate->u).vtab.needFree = (u8)((sqlite3_index_info *)mUsable)->needToFreeIdxStr;\n  ((sqlite3_index_info *)mUsable)->needToFreeIdxStr = 0;\n  (pTemplate->u).btree.pIndex = (Index *)((sqlite3_index_info *)mUsable)->idxStr;\n  iVar16 = '\0';\n  if (iVar18 != 0) {\n    iVar16 = (i8)((sqlite3_index_info *)mUsable)->nOrderBy;\n  }\n  dVar3 = ((sqlite3_index_info *)mUsable)->estimatedCost;\n  (pTemplate->u).vtab.isOrdered = iVar16;\n  sVar17 = 0;\n  pTemplate->rSetup = 0;\n  if (1.0 < dVar3) {\n    if ((double)*(float *)(unaff_EDI + 0x7770b) < dVar3) {\n      sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }\n      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);\n      uVar22 = (uint)lVar4;\n      if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }\n      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar22 = *(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4);\n  pTemplate->rRun = sVar17;\n  uVar28 = (uint)((sqlite3_index_info *)mUsable)->estimatedRows;\n  if ((uVar22 == 0) && (uVar28 < 8)) {\n    LVar25 = 0;\n    if (uVar28 < 2) goto LAB_0003df5f;\n    sVar15 = 0x28;\n    do {\n      sVar17 = sVar15;\n      uVar21 = uVar28 * 2;\n      if ((int)uVar28 < 0) break;\n      uVar28 = uVar21;\n      sVar15 = sVar17 + -10;\n    } while (uVar21 < 8);\n    sVar17 = sVar17 + -0x14;\n  }\n  else {\n    if (uVar22 == 0) {\n      uVar27 = 0x1f;\n      if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }\n    uVar27 = 0x3c - uVar27;\n    bVar5 = (byte)uVar27 & 0x1f;\n    uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5;\n    if ((uVar27 & 0x20) != 0) {\n      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);\n    }\n    sVar17 = (short)uVar27 * 10 + 0x1e;\n  }\n  LVar25 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  pTemplate->nOut = LVar25;\n  uVar22 = pTemplate->wsFlags | 0x1000;\n  if ((((sqlite3_index_info *)mUsable)->idxFlags & 1) == 0) {\n    uVar22 = pTemplate->wsFlags & 0xffffefff;\n  }\n  pTemplate->wsFlags = uVar22;\n  iVar18 = whereLoopInsert(pBuilder_00,pTemplate);\n  if ((pTemplate->u).vtab.needFree != '\0') {\n    sqlite3_free((pTemplate->u).btree.pIndex);\n    (pTemplate->u).vtab.needFree = '\0';\n  }\n  return iVar18;\n}\n\n" comment (function_definition "int whereLoopAddVirtualOne\n              (WhereLoopBuilder *pBuilder,Bitmask mPrereq,Bitmask mUsable,u16 mExclude,\n              sqlite3_index_info *pIdxInfo,u16 mNoOmit,int *pbIn)\n\n{\n  uint *puVar1;\n  u16 *puVar2;\n  double dVar3;\n  longlong lVar4;\n  byte bVar5;\n  WhereClause *pWVar6;\n  sqlite3_index_constraint_usage *__s;\n  WhereLoop *pTemplate;\n  Parse *pParse;\n  SrcList *pSVar7;\n  sqlite3 *psVar8;\n  undefined4 uVar9;\n  Table *pTVar10;\n  VTable *pVVar11;\n  sqlite3_vtab *psVar12;\n  WhereTerm **ppWVar13;\n  code *pcVar14;\n  short sVar15;\n  i8 iVar16;\n  short sVar17;\n  WhereLoopBuilder *pBuilder_00;\n  int iVar18;\n  WhereTerm **ppWVar19;\n  WhereTerm *pWVar20;\n  uint uVar21;\n  uint uVar22;\n  char *pcVar23;\n  int iVar24;\n  undefined4 extraout_ECX;\n  LogEst LVar25;\n  sqlite3_index_constraint *psVar26;\n  uint uVar27;\n  uint uVar28;\n  int unaff_EDI;\n  undefined8 uVar29;\n  undefined2 in_stack_0000001a;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar29 = __x86_get_pc_thunk_di();\n  pBuilder_00 = (WhereLoopBuilder *)uVar29;\n  pWVar6 = pBuilder_00->pWC;\n  __s = ((sqlite3_index_info *)mUsable)->aConstraintUsage;\n  pTemplate = pBuilder_00->pNew;\n  pParse = pBuilder_00->pWInfo->pParse;\n  pSVar7 = pBuilder_00->pWInfo->pTabList;\n  bVar5 = pTemplate->iTab;\n  uVar22 = ((sqlite3_index_info *)mUsable)->nConstraint;\n  *_mExclude = 0;\n  *(int *)&pTemplate->prereq = (int)((ulonglong)uVar29 >> 0x20);\n  *(undefined4 *)((int)&pTemplate->prereq + 4) = extraout_ECX;\n  psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n  if (0 < (int)uVar22) {\n    pWVar20 = pWVar6->a;\n    uVar28 = 0;\n    do {\n      while( true ) {\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar22 << 3);\n  dVar3 = *(double *)(unaff_EDI + 0x77777);\n  ((sqlite3_index_info *)mUsable)->idxStr = (char *)0x0;\n  ((sqlite3_index_info *)mUsable)->idxNum = 0;\n  ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n  ((sqlite3_index_info *)mUsable)->estimatedCost = dVar3;\n  *(undefined4 *)&((sqlite3_index_info *)mUsable)->estimatedRows = 0x19;\n  *(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4) = 0;\n  ((sqlite3_index_info *)mUsable)->idxFlags = 0;\n  psVar8 = pParse->db;\n  uVar9 = *(undefined4 *)((int)&pSVar7->a[bVar5].colUsed + 4);\n  pTVar10 = pSVar7->a[bVar5].pTab;\n  *(int *)&((sqlite3_index_info *)mUsable)->colUsed = (int)pSVar7->a[bVar5].colUsed;\n  *(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->colUsed + 4) = uVar9;\n  pVVar11 = pTVar10->pVTable;\n  while( true ) {\n    if (pVVar11 == (VTable *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar14 = (code *)invalidInstructionException();\n      (*pcVar14)();\n    }\n    if (psVar8 == pVVar11->db) break;\n    pVVar11 = pVVar11->pNext;\n  }\n  psVar12 = pVVar11->pVtab;\n  iVar18 = (*psVar12->pModule->xBestIndex)(psVar12,(sqlite3_index_info *)mUsable);\n  if ((iVar18 != 0) && (iVar18 != 0x13)) {\n    if (iVar18 == 7) {\n      psVar8 = pParse->db;\n      uVar22._0_1_ = psVar8->temp_store;\n      uVar22._1_1_ = psVar8->mallocFailed;\n      uVar22._2_1_ = psVar8->bBenignMalloc;\n      uVar22._3_1_ = psVar8->dfltLockMode;\n      if ((uVar22 & 0xffff00) == 0) {\n        sqlite3OomFault(psVar8);\n      }\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return 7;\n    }\n    if (psVar12->zErrMsg != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return iVar18;\n    }\n    pcVar23 = sqlite3ErrStr(iVar18);\n    sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23);\n    sqlite3_free(psVar12->zErrMsg);\n    psVar12->zErrMsg = (char *)0x0;\nLAB_0003e064:\n    iVar24 = 0;\n    if (iVar18 != 0x13) {\n      iVar24 = iVar18;\n    }\n    return iVar24;\n  }\n  sqlite3_free(psVar12->zErrMsg);\n  psVar12->zErrMsg = (char *)0x0;\n  if (iVar18 != 0) goto LAB_0003e064;\n  if ((int)uVar22 < 1) {\n    (pTemplate->u).btree.nDistinctCol = 0;\n    pTemplate->nLTerm = 0;\n  }\n  else {\n    ppWVar13 = pTemplate->aLTerm;\n    ppWVar19 = ppWVar13;\n    do {\n      *ppWVar19 = (WhereTerm *)0x0;\n      ppWVar19 = ppWVar19 + 1;\n    } while (ppWVar13 + uVar22 != ppWVar19);\n    psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n    (pTemplate->u).btree.nDistinctCol = 0;\n    uVar28 = 0;\n    local_50 = -1;\n    do {\n      iVar18 = __s[uVar28].argvIndex + -1;\n      if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n    pTemplate->nLTerm = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }\nLAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);\n      return 1;\n    }\n  }\nLAB_0003de32:\n  iVar18 = ((sqlite3_index_info *)mUsable)->orderByConsumed;\n  (pTemplate->u).vtab.idxNum = ((sqlite3_index_info *)mUsable)->idxNum;\n  (pTemplate->u).vtab.needFree = (u8)((sqlite3_index_info *)mUsable)->needToFreeIdxStr;\n  ((sqlite3_index_info *)mUsable)->needToFreeIdxStr = 0;\n  (pTemplate->u).btree.pIndex = (Index *)((sqlite3_index_info *)mUsable)->idxStr;\n  iVar16 = '\0';\n  if (iVar18 != 0) {\n    iVar16 = (i8)((sqlite3_index_info *)mUsable)->nOrderBy;\n  }\n  dVar3 = ((sqlite3_index_info *)mUsable)->estimatedCost;\n  (pTemplate->u).vtab.isOrdered = iVar16;\n  sVar17 = 0;\n  pTemplate->rSetup = 0;\n  if (1.0 < dVar3) {\n    if ((double)*(float *)(unaff_EDI + 0x7770b) < dVar3) {\n      sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }\n      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);\n      uVar22 = (uint)lVar4;\n      if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }\n      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar22 = *(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4);\n  pTemplate->rRun = sVar17;\n  uVar28 = (uint)((sqlite3_index_info *)mUsable)->estimatedRows;\n  if ((uVar22 == 0) && (uVar28 < 8)) {\n    LVar25 = 0;\n    if (uVar28 < 2) goto LAB_0003df5f;\n    sVar15 = 0x28;\n    do {\n      sVar17 = sVar15;\n      uVar21 = uVar28 * 2;\n      if ((int)uVar28 < 0) break;\n      uVar28 = uVar21;\n      sVar15 = sVar17 + -10;\n    } while (uVar21 < 8);\n    sVar17 = sVar17 + -0x14;\n  }\n  else {\n    if (uVar22 == 0) {\n      uVar27 = 0x1f;\n      if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }\n    uVar27 = 0x3c - uVar27;\n    bVar5 = (byte)uVar27 & 0x1f;\n    uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5;\n    if ((uVar27 & 0x20) != 0) {\n      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);\n    }\n    sVar17 = (short)uVar27 * 10 + 0x1e;\n  }\n  LVar25 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  pTemplate->nOut = LVar25;\n  uVar22 = pTemplate->wsFlags | 0x1000;\n  if ((((sqlite3_index_info *)mUsable)->idxFlags & 1) == 0) {\n    uVar22 = pTemplate->wsFlags & 0xffffefff;\n  }\n  pTemplate->wsFlags = uVar22;\n  iVar18 = whereLoopInsert(pBuilder_00,pTemplate);\n  if ((pTemplate->u).vtab.needFree != '\0') {\n    sqlite3_free((pTemplate->u).btree.pIndex);\n    (pTemplate->u).vtab.needFree = '\0';\n  }\n  return iVar18;\n}" primitive_type (function_declarator "whereLoopAddVirtualOne\n              (WhereLoopBuilder *pBuilder,Bitmask mPrereq,Bitmask mUsable,u16 mExclude,\n              sqlite3_index_info *pIdxInfo,u16 mNoOmit,int *pbIn)" identifier (parameter_list "(WhereLoopBuilder *pBuilder,Bitmask mPrereq,Bitmask mUsable,u16 mExclude,\n              sqlite3_index_info *pIdxInfo,u16 mNoOmit,int *pbIn)" ( (parameter_declaration "WhereLoopBuilder *pBuilder" type_identifier (pointer_declarator "*pBuilder" * identifier)) , (parameter_declaration "Bitmask mPrereq" type_identifier identifier) , (parameter_declaration "Bitmask mUsable" type_identifier identifier) , (parameter_declaration "u16 mExclude" type_identifier identifier) , (parameter_declaration "sqlite3_index_info *pIdxInfo" type_identifier (pointer_declarator "*pIdxInfo" * identifier)) , (parameter_declaration "u16 mNoOmit" type_identifier identifier) , (parameter_declaration "int *pbIn" primitive_type (pointer_declarator "*pbIn" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  u16 *puVar2;\n  double dVar3;\n  longlong lVar4;\n  byte bVar5;\n  WhereClause *pWVar6;\n  sqlite3_index_constraint_usage *__s;\n  WhereLoop *pTemplate;\n  Parse *pParse;\n  SrcList *pSVar7;\n  sqlite3 *psVar8;\n  undefined4 uVar9;\n  Table *pTVar10;\n  VTable *pVVar11;\n  sqlite3_vtab *psVar12;\n  WhereTerm **ppWVar13;\n  code *pcVar14;\n  short sVar15;\n  i8 iVar16;\n  short sVar17;\n  WhereLoopBuilder *pBuilder_00;\n  int iVar18;\n  WhereTerm **ppWVar19;\n  WhereTerm *pWVar20;\n  uint uVar21;\n  uint uVar22;\n  char *pcVar23;\n  int iVar24;\n  undefined4 extraout_ECX;\n  LogEst LVar25;\n  sqlite3_index_constraint *psVar26;\n  uint uVar27;\n  uint uVar28;\n  int unaff_EDI;\n  undefined8 uVar29;\n  undefined2 in_stack_0000001a;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar29 = __x86_get_pc_thunk_di();\n  pBuilder_00 = (WhereLoopBuilder *)uVar29;\n  pWVar6 = pBuilder_00->pWC;\n  __s = ((sqlite3_index_info *)mUsable)->aConstraintUsage;\n  pTemplate = pBuilder_00->pNew;\n  pParse = pBuilder_00->pWInfo->pParse;\n  pSVar7 = pBuilder_00->pWInfo->pTabList;\n  bVar5 = pTemplate->iTab;\n  uVar22 = ((sqlite3_index_info *)mUsable)->nConstraint;\n  *_mExclude = 0;\n  *(int *)&pTemplate->prereq = (int)((ulonglong)uVar29 >> 0x20);\n  *(undefined4 *)((int)&pTemplate->prereq + 4) = extraout_ECX;\n  psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n  if (0 < (int)uVar22) {\n    pWVar20 = pWVar6->a;\n    uVar28 = 0;\n    do {\n      while( true ) {\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar22 << 3);\n  dVar3 = *(double *)(unaff_EDI + 0x77777);\n  ((sqlite3_index_info *)mUsable)->idxStr = (char *)0x0;\n  ((sqlite3_index_info *)mUsable)->idxNum = 0;\n  ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n  ((sqlite3_index_info *)mUsable)->estimatedCost = dVar3;\n  *(undefined4 *)&((sqlite3_index_info *)mUsable)->estimatedRows = 0x19;\n  *(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4) = 0;\n  ((sqlite3_index_info *)mUsable)->idxFlags = 0;\n  psVar8 = pParse->db;\n  uVar9 = *(undefined4 *)((int)&pSVar7->a[bVar5].colUsed + 4);\n  pTVar10 = pSVar7->a[bVar5].pTab;\n  *(int *)&((sqlite3_index_info *)mUsable)->colUsed = (int)pSVar7->a[bVar5].colUsed;\n  *(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->colUsed + 4) = uVar9;\n  pVVar11 = pTVar10->pVTable;\n  while( true ) {\n    if (pVVar11 == (VTable *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar14 = (code *)invalidInstructionException();\n      (*pcVar14)();\n    }\n    if (psVar8 == pVVar11->db) break;\n    pVVar11 = pVVar11->pNext;\n  }\n  psVar12 = pVVar11->pVtab;\n  iVar18 = (*psVar12->pModule->xBestIndex)(psVar12,(sqlite3_index_info *)mUsable);\n  if ((iVar18 != 0) && (iVar18 != 0x13)) {\n    if (iVar18 == 7) {\n      psVar8 = pParse->db;\n      uVar22._0_1_ = psVar8->temp_store;\n      uVar22._1_1_ = psVar8->mallocFailed;\n      uVar22._2_1_ = psVar8->bBenignMalloc;\n      uVar22._3_1_ = psVar8->dfltLockMode;\n      if ((uVar22 & 0xffff00) == 0) {\n        sqlite3OomFault(psVar8);\n      }\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return 7;\n    }\n    if (psVar12->zErrMsg != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return iVar18;\n    }\n    pcVar23 = sqlite3ErrStr(iVar18);\n    sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23);\n    sqlite3_free(psVar12->zErrMsg);\n    psVar12->zErrMsg = (char *)0x0;\nLAB_0003e064:\n    iVar24 = 0;\n    if (iVar18 != 0x13) {\n      iVar24 = iVar18;\n    }\n    return iVar24;\n  }\n  sqlite3_free(psVar12->zErrMsg);\n  psVar12->zErrMsg = (char *)0x0;\n  if (iVar18 != 0) goto LAB_0003e064;\n  if ((int)uVar22 < 1) {\n    (pTemplate->u).btree.nDistinctCol = 0;\n    pTemplate->nLTerm = 0;\n  }\n  else {\n    ppWVar13 = pTemplate->aLTerm;\n    ppWVar19 = ppWVar13;\n    do {\n      *ppWVar19 = (WhereTerm *)0x0;\n      ppWVar19 = ppWVar19 + 1;\n    } while (ppWVar13 + uVar22 != ppWVar19);\n    psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n    (pTemplate->u).btree.nDistinctCol = 0;\n    uVar28 = 0;\n    local_50 = -1;\n    do {\n      iVar18 = __s[uVar28].argvIndex + -1;\n      if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n    pTemplate->nLTerm = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }\nLAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);\n      return 1;\n    }\n  }\nLAB_0003de32:\n  iVar18 = ((sqlite3_index_info *)mUsable)->orderByConsumed;\n  (pTemplate->u).vtab.idxNum = ((sqlite3_index_info *)mUsable)->idxNum;\n  (pTemplate->u).vtab.needFree = (u8)((sqlite3_index_info *)mUsable)->needToFreeIdxStr;\n  ((sqlite3_index_info *)mUsable)->needToFreeIdxStr = 0;\n  (pTemplate->u).btree.pIndex = (Index *)((sqlite3_index_info *)mUsable)->idxStr;\n  iVar16 = '\0';\n  if (iVar18 != 0) {\n    iVar16 = (i8)((sqlite3_index_info *)mUsable)->nOrderBy;\n  }\n  dVar3 = ((sqlite3_index_info *)mUsable)->estimatedCost;\n  (pTemplate->u).vtab.isOrdered = iVar16;\n  sVar17 = 0;\n  pTemplate->rSetup = 0;\n  if (1.0 < dVar3) {\n    if ((double)*(float *)(unaff_EDI + 0x7770b) < dVar3) {\n      sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }\n      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);\n      uVar22 = (uint)lVar4;\n      if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }\n      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar22 = *(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4);\n  pTemplate->rRun = sVar17;\n  uVar28 = (uint)((sqlite3_index_info *)mUsable)->estimatedRows;\n  if ((uVar22 == 0) && (uVar28 < 8)) {\n    LVar25 = 0;\n    if (uVar28 < 2) goto LAB_0003df5f;\n    sVar15 = 0x28;\n    do {\n      sVar17 = sVar15;\n      uVar21 = uVar28 * 2;\n      if ((int)uVar28 < 0) break;\n      uVar28 = uVar21;\n      sVar15 = sVar17 + -10;\n    } while (uVar21 < 8);\n    sVar17 = sVar17 + -0x14;\n  }\n  else {\n    if (uVar22 == 0) {\n      uVar27 = 0x1f;\n      if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }\n    uVar27 = 0x3c - uVar27;\n    bVar5 = (byte)uVar27 & 0x1f;\n    uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5;\n    if ((uVar27 & 0x20) != 0) {\n      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);\n    }\n    sVar17 = (short)uVar27 * 10 + 0x1e;\n  }\n  LVar25 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  pTemplate->nOut = LVar25;\n  uVar22 = pTemplate->wsFlags | 0x1000;\n  if ((((sqlite3_index_info *)mUsable)->idxFlags & 1) == 0) {\n    uVar22 = pTemplate->wsFlags & 0xffffefff;\n  }\n  pTemplate->wsFlags = uVar22;\n  iVar18 = whereLoopInsert(pBuilder_00,pTemplate);\n  if ((pTemplate->u).vtab.needFree != '\0') {\n    sqlite3_free((pTemplate->u).btree.pIndex);\n    (pTemplate->u).vtab.needFree = '\0';\n  }\n  return iVar18;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "u16 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "double dVar3;" primitive_type identifier ;) (declaration "longlong lVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "WhereClause *pWVar6;" type_identifier (pointer_declarator "*pWVar6" * identifier) ;) (declaration "sqlite3_index_constraint_usage *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "WhereLoop *pTemplate;" type_identifier (pointer_declarator "*pTemplate" * identifier) ;) (declaration "Parse *pParse;" type_identifier (pointer_declarator "*pParse" * identifier) ;) (declaration "SrcList *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "sqlite3 *psVar8;" type_identifier (pointer_declarator "*psVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "Table *pTVar10;" type_identifier (pointer_declarator "*pTVar10" * identifier) ;) (declaration "VTable *pVVar11;" type_identifier (pointer_declarator "*pVVar11" * identifier) ;) (declaration "sqlite3_vtab *psVar12;" type_identifier (pointer_declarator "*psVar12" * identifier) ;) (declaration "WhereTerm **ppWVar13;" type_identifier (pointer_declarator "**ppWVar13" * (pointer_declarator "*ppWVar13" * identifier)) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "short sVar15;" (sized_type_specifier "short" short) identifier ;) (declaration "i8 iVar16;" type_identifier identifier ;) (declaration "short sVar17;" (sized_type_specifier "short" short) identifier ;) (declaration "WhereLoopBuilder *pBuilder_00;" type_identifier (pointer_declarator "*pBuilder_00" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "WhereTerm **ppWVar19;" type_identifier (pointer_declarator "**ppWVar19" * (pointer_declarator "*ppWVar19" * identifier)) ;) (declaration "WhereTerm *pWVar20;" type_identifier (pointer_declarator "*pWVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "char *pcVar23;" primitive_type (pointer_declarator "*pcVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "LogEst LVar25;" type_identifier identifier ;) (declaration "sqlite3_index_constraint *psVar26;" type_identifier (pointer_declarator "*psVar26" * identifier) ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "uint uVar28;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar29;" type_identifier identifier ;) (declaration "undefined2 in_stack_0000001a;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int iStack_28;" primitive_type identifier ;) (expression_statement "uVar29 = __x86_get_pc_thunk_di();" (assignment_expression "uVar29 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "pBuilder_00 = (WhereLoopBuilder *)uVar29;" (assignment_expression "pBuilder_00 = (WhereLoopBuilder *)uVar29" identifier = (cast_expression "(WhereLoopBuilder *)uVar29" ( (type_descriptor "WhereLoopBuilder *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pWVar6 = pBuilder_00->pWC;" (assignment_expression "pWVar6 = pBuilder_00->pWC" identifier = (field_expression "pBuilder_00->pWC" identifier -> field_identifier)) ;) (expression_statement "__s = ((sqlite3_index_info *)mUsable)->aConstraintUsage;" (assignment_expression "__s = ((sqlite3_index_info *)mUsable)->aConstraintUsage" identifier = (field_expression "((sqlite3_index_info *)mUsable)->aConstraintUsage" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (expression_statement "pTemplate = pBuilder_00->pNew;" (assignment_expression "pTemplate = pBuilder_00->pNew" identifier = (field_expression "pBuilder_00->pNew" identifier -> field_identifier)) ;) (expression_statement "pParse = pBuilder_00->pWInfo->pParse;" (assignment_expression "pParse = pBuilder_00->pWInfo->pParse" identifier = (field_expression "pBuilder_00->pWInfo->pParse" (field_expression "pBuilder_00->pWInfo" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pSVar7 = pBuilder_00->pWInfo->pTabList;" (assignment_expression "pSVar7 = pBuilder_00->pWInfo->pTabList" identifier = (field_expression "pBuilder_00->pWInfo->pTabList" (field_expression "pBuilder_00->pWInfo" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "bVar5 = pTemplate->iTab;" (assignment_expression "bVar5 = pTemplate->iTab" identifier = (field_expression "pTemplate->iTab" identifier -> field_identifier)) ;) (expression_statement "uVar22 = ((sqlite3_index_info *)mUsable)->nConstraint;" (assignment_expression "uVar22 = ((sqlite3_index_info *)mUsable)->nConstraint" identifier = (field_expression "((sqlite3_index_info *)mUsable)->nConstraint" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (expression_statement "*_mExclude = 0;" (assignment_expression "*_mExclude = 0" (pointer_expression "*_mExclude" * identifier) = number_literal) ;) (expression_statement "*(int *)&pTemplate->prereq = (int)((ulonglong)uVar29 >> 0x20);" (assignment_expression "*(int *)&pTemplate->prereq = (int)((ulonglong)uVar29 >> 0x20)" (pointer_expression "*(int *)&pTemplate->prereq" * (cast_expression "(int *)&pTemplate->prereq" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pTemplate->prereq" & (field_expression "pTemplate->prereq" identifier -> field_identifier)))) = (cast_expression "(int)((ulonglong)uVar29 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar29 >> 0x20)" ( (binary_expression "(ulonglong)uVar29 >> 0x20" (cast_expression "(ulonglong)uVar29" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(undefined4 *)((int)&pTemplate->prereq + 4) = extraout_ECX;" (assignment_expression "*(undefined4 *)((int)&pTemplate->prereq + 4) = extraout_ECX" (pointer_expression "*(undefined4 *)((int)&pTemplate->prereq + 4)" * (cast_expression "(undefined4 *)((int)&pTemplate->prereq + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pTemplate->prereq + 4)" ( (binary_expression "(int)&pTemplate->prereq + 4" (cast_expression "(int)&pTemplate->prereq" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pTemplate->prereq" & (field_expression "pTemplate->prereq" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;" (assignment_expression "psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint" identifier = (field_expression "((sqlite3_index_info *)mUsable)->aConstraint" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (if_statement "if (0 < (int)uVar22) {\n    pWVar20 = pWVar6->a;\n    uVar28 = 0;\n    do {\n      while( true ) {\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n  }" if (parenthesized_expression "(0 < (int)uVar22)" ( (binary_expression "0 < (int)uVar22" number_literal < (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    pWVar20 = pWVar6->a;\n    uVar28 = 0;\n    do {\n      while( true ) {\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n  }" { (expression_statement "pWVar20 = pWVar6->a;" (assignment_expression "pWVar20 = pWVar6->a" identifier = (field_expression "pWVar6->a" identifier -> field_identifier)) ;) (expression_statement "uVar28 = 0;" (assignment_expression "uVar28 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);" do (compound_statement "{\n      while( true ) {\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    }" { (while_statement "while( true ) {\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar18 = psVar26->iTermOffset;\n        psVar26->usable = '\0';\n        if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;\n        psVar26->usable = '\x01';\n        uVar28 = uVar28 + 1;\n        psVar26 = psVar26 + 1;\n        if (uVar22 == uVar28) goto LAB_0003dba8;\n      }" { (expression_statement "iVar18 = psVar26->iTermOffset;" (assignment_expression "iVar18 = psVar26->iTermOffset" identifier = (field_expression "psVar26->iTermOffset" identifier -> field_identifier)) ;) (expression_statement "psVar26->usable = '\0';" (assignment_expression "psVar26->usable = '\0'" (field_expression "psVar26->usable" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)) break;" if (parenthesized_expression "(((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0))" ( (binary_expression "((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0) ||\n           ((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)" (parenthesized_expression "((~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0)" ( (binary_expression "(~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0 ||\n             (~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0" (binary_expression "(~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)) != 0" (parenthesized_expression "(~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4))" ( (binary_expression "~(uint)mPrereq & *(uint *)((int)&pWVar20[iVar18].prereqRight + 4)" (unary_expression "~(uint)mPrereq" ~ (cast_expression "(uint)mPrereq" ( (type_descriptor "uint" type_identifier) ) identifier)) & (pointer_expression "*(uint *)((int)&pWVar20[iVar18].prereqRight + 4)" * (cast_expression "(uint *)((int)&pWVar20[iVar18].prereqRight + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar20[iVar18].prereqRight + 4)" ( (binary_expression "(int)&pWVar20[iVar18].prereqRight + 4" (cast_expression "(int)&pWVar20[iVar18].prereqRight" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar20[iVar18].prereqRight" & (field_expression "pWVar20[iVar18].prereqRight" (subscript_expression "pWVar20[iVar18]" identifier [ identifier ]) . field_identifier))) + number_literal) ))))) )) != number_literal) || (binary_expression "(~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight) != 0" (parenthesized_expression "(~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight)" ( (binary_expression "~(uint)pBuilder & (uint)pWVar20[iVar18].prereqRight" (unary_expression "~(uint)pBuilder" ~ (cast_expression "(uint)pBuilder" ( (type_descriptor "uint" type_identifier) ) identifier)) & (cast_expression "(uint)pWVar20[iVar18].prereqRight" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar20[iVar18].prereqRight" (subscript_expression "pWVar20[iVar18]" identifier [ identifier ]) . field_identifier))) )) != number_literal)) )) || (parenthesized_expression "((pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0)" ( (binary_expression "(pWVar20[iVar18].eOperator & mPrereq._4_2_) != 0" (parenthesized_expression "(pWVar20[iVar18].eOperator & mPrereq._4_2_)" ( (binary_expression "pWVar20[iVar18].eOperator & mPrereq._4_2_" (field_expression "pWVar20[iVar18].eOperator" (subscript_expression "pWVar20[iVar18]" identifier [ identifier ]) . field_identifier) & (field_expression "mPrereq._4_2_" identifier . field_identifier)) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "psVar26->usable = '\x01';" (assignment_expression "psVar26->usable = '\x01'" (field_expression "psVar26->usable" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "uVar28 = uVar28 + 1;" (assignment_expression "uVar28 = uVar28 + 1" identifier = (binary_expression "uVar28 + 1" identifier + number_literal)) ;) (expression_statement "psVar26 = psVar26 + 1;" (assignment_expression "psVar26 = psVar26 + 1" identifier = (binary_expression "psVar26 + 1" identifier + number_literal)) ;) (if_statement "if (uVar22 == uVar28) goto LAB_0003dba8;" if (parenthesized_expression "(uVar22 == uVar28)" ( (binary_expression "uVar22 == uVar28" identifier == identifier) )) (goto_statement "goto LAB_0003dba8;" goto statement_identifier ;)) })) (expression_statement "uVar28 = uVar28 + 1;" (assignment_expression "uVar28 = uVar28 + 1" identifier = (binary_expression "uVar28 + 1" identifier + number_literal)) ;) (expression_statement "psVar26 = psVar26 + 1;" (assignment_expression "psVar26 = psVar26 + 1" identifier = (binary_expression "psVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 != uVar28)" ( (binary_expression "uVar22 != uVar28" identifier != identifier) )) ;) })) (labeled_statement "LAB_0003dba8:\n  memset(__s,0,uVar22 << 3);" statement_identifier : (expression_statement "memset(__s,0,uVar22 << 3);" (call_expression "memset(__s,0,uVar22 << 3)" identifier (argument_list "(__s,0,uVar22 << 3)" ( identifier , number_literal , (binary_expression "uVar22 << 3" identifier << number_literal) ))) ;)) (expression_statement "dVar3 = *(double *)(unaff_EDI + 0x77777);" (assignment_expression "dVar3 = *(double *)(unaff_EDI + 0x77777)" identifier = (pointer_expression "*(double *)(unaff_EDI + 0x77777)" * (cast_expression "(double *)(unaff_EDI + 0x77777)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x77777)" ( (binary_expression "unaff_EDI + 0x77777" identifier + number_literal) ))))) ;) (expression_statement "((sqlite3_index_info *)mUsable)->idxStr = (char *)0x0;" (assignment_expression "((sqlite3_index_info *)mUsable)->idxStr = (char *)0x0" (field_expression "((sqlite3_index_info *)mUsable)->idxStr" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "((sqlite3_index_info *)mUsable)->idxNum = 0;" (assignment_expression "((sqlite3_index_info *)mUsable)->idxNum = 0" (field_expression "((sqlite3_index_info *)mUsable)->idxNum" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "((sqlite3_index_info *)mUsable)->orderByConsumed = 0;" (assignment_expression "((sqlite3_index_info *)mUsable)->orderByConsumed = 0" (field_expression "((sqlite3_index_info *)mUsable)->orderByConsumed" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "((sqlite3_index_info *)mUsable)->estimatedCost = dVar3;" (assignment_expression "((sqlite3_index_info *)mUsable)->estimatedCost = dVar3" (field_expression "((sqlite3_index_info *)mUsable)->estimatedCost" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)&((sqlite3_index_info *)mUsable)->estimatedRows = 0x19;" (assignment_expression "*(undefined4 *)&((sqlite3_index_info *)mUsable)->estimatedRows = 0x19" (pointer_expression "*(undefined4 *)&((sqlite3_index_info *)mUsable)->estimatedRows" * (cast_expression "(undefined4 *)&((sqlite3_index_info *)mUsable)->estimatedRows" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&((sqlite3_index_info *)mUsable)->estimatedRows" & (field_expression "((sqlite3_index_info *)mUsable)->estimatedRows" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4) = 0" (pointer_expression "*(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4)" * (cast_expression "(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4)" ( (binary_expression "(int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4" (cast_expression "(int)&((sqlite3_index_info *)mUsable)->estimatedRows" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((sqlite3_index_info *)mUsable)->estimatedRows" & (field_expression "((sqlite3_index_info *)mUsable)->estimatedRows" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "((sqlite3_index_info *)mUsable)->idxFlags = 0;" (assignment_expression "((sqlite3_index_info *)mUsable)->idxFlags = 0" (field_expression "((sqlite3_index_info *)mUsable)->idxFlags" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "psVar8 = pParse->db;" (assignment_expression "psVar8 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "uVar9 = *(undefined4 *)((int)&pSVar7->a[bVar5].colUsed + 4);" (assignment_expression "uVar9 = *(undefined4 *)((int)&pSVar7->a[bVar5].colUsed + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&pSVar7->a[bVar5].colUsed + 4)" * (cast_expression "(undefined4 *)((int)&pSVar7->a[bVar5].colUsed + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSVar7->a[bVar5].colUsed + 4)" ( (binary_expression "(int)&pSVar7->a[bVar5].colUsed + 4" (cast_expression "(int)&pSVar7->a[bVar5].colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSVar7->a[bVar5].colUsed" & (field_expression "pSVar7->a[bVar5].colUsed" (subscript_expression "pSVar7->a[bVar5]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "pTVar10 = pSVar7->a[bVar5].pTab;" (assignment_expression "pTVar10 = pSVar7->a[bVar5].pTab" identifier = (field_expression "pSVar7->a[bVar5].pTab" (subscript_expression "pSVar7->a[bVar5]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "*(int *)&((sqlite3_index_info *)mUsable)->colUsed = (int)pSVar7->a[bVar5].colUsed;" (assignment_expression "*(int *)&((sqlite3_index_info *)mUsable)->colUsed = (int)pSVar7->a[bVar5].colUsed" (pointer_expression "*(int *)&((sqlite3_index_info *)mUsable)->colUsed" * (cast_expression "(int *)&((sqlite3_index_info *)mUsable)->colUsed" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&((sqlite3_index_info *)mUsable)->colUsed" & (field_expression "((sqlite3_index_info *)mUsable)->colUsed" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)))) = (cast_expression "(int)pSVar7->a[bVar5].colUsed" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar7->a[bVar5].colUsed" (subscript_expression "pSVar7->a[bVar5]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "*(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->colUsed + 4) = uVar9;" (assignment_expression "*(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->colUsed + 4) = uVar9" (pointer_expression "*(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->colUsed + 4)" * (cast_expression "(undefined4 *)((int)&((sqlite3_index_info *)mUsable)->colUsed + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((sqlite3_index_info *)mUsable)->colUsed + 4)" ( (binary_expression "(int)&((sqlite3_index_info *)mUsable)->colUsed + 4" (cast_expression "(int)&((sqlite3_index_info *)mUsable)->colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((sqlite3_index_info *)mUsable)->colUsed" & (field_expression "((sqlite3_index_info *)mUsable)->colUsed" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "pVVar11 = pTVar10->pVTable;" (assignment_expression "pVVar11 = pTVar10->pVTable" identifier = (field_expression "pTVar10->pVTable" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n    if (pVVar11 == (VTable *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar14 = (code *)invalidInstructionException();\n      (*pcVar14)();\n    }\n    if (psVar8 == pVVar11->db) break;\n    pVVar11 = pVVar11->pNext;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (pVVar11 == (VTable *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar14 = (code *)invalidInstructionException();\n      (*pcVar14)();\n    }\n    if (psVar8 == pVVar11->db) break;\n    pVVar11 = pVVar11->pNext;\n  }" { (if_statement "if (pVVar11 == (VTable *)0x0) {\n                    /* WARNING: Does not return */\n      pcVar14 = (code *)invalidInstructionException();\n      (*pcVar14)();\n    }" if (parenthesized_expression "(pVVar11 == (VTable *)0x0)" ( (binary_expression "pVVar11 == (VTable *)0x0" identifier == (cast_expression "(VTable *)0x0" ( (type_descriptor "VTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Does not return */\n      pcVar14 = (code *)invalidInstructionException();\n      (*pcVar14)();\n    }" { comment (expression_statement "pcVar14 = (code *)invalidInstructionException();" (assignment_expression "pcVar14 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar14)();" (call_expression "(*pcVar14)()" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "()" ( ))) ;) })) (if_statement "if (psVar8 == pVVar11->db) break;" if (parenthesized_expression "(psVar8 == pVVar11->db)" ( (binary_expression "psVar8 == pVVar11->db" identifier == (field_expression "pVVar11->db" identifier -> field_identifier)) )) (break_statement "break;" break ;)) (expression_statement "pVVar11 = pVVar11->pNext;" (assignment_expression "pVVar11 = pVVar11->pNext" identifier = (field_expression "pVVar11->pNext" identifier -> field_identifier)) ;) })) (expression_statement "psVar12 = pVVar11->pVtab;" (assignment_expression "psVar12 = pVVar11->pVtab" identifier = (field_expression "pVVar11->pVtab" identifier -> field_identifier)) ;) (expression_statement "iVar18 = (*psVar12->pModule->xBestIndex)(psVar12,(sqlite3_index_info *)mUsable);" (assignment_expression "iVar18 = (*psVar12->pModule->xBestIndex)(psVar12,(sqlite3_index_info *)mUsable)" identifier = (call_expression "(*psVar12->pModule->xBestIndex)(psVar12,(sqlite3_index_info *)mUsable)" (parenthesized_expression "(*psVar12->pModule->xBestIndex)" ( (pointer_expression "*psVar12->pModule->xBestIndex" * (field_expression "psVar12->pModule->xBestIndex" (field_expression "psVar12->pModule" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar12,(sqlite3_index_info *)mUsable)" ( identifier , (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if ((iVar18 != 0) && (iVar18 != 0x13)) {\n    if (iVar18 == 7) {\n      psVar8 = pParse->db;\n      uVar22._0_1_ = psVar8->temp_store;\n      uVar22._1_1_ = psVar8->mallocFailed;\n      uVar22._2_1_ = psVar8->bBenignMalloc;\n      uVar22._3_1_ = psVar8->dfltLockMode;\n      if ((uVar22 & 0xffff00) == 0) {\n        sqlite3OomFault(psVar8);\n      }\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return 7;\n    }\n    if (psVar12->zErrMsg != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return iVar18;\n    }\n    pcVar23 = sqlite3ErrStr(iVar18);\n    sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23);\n    sqlite3_free(psVar12->zErrMsg);\n    psVar12->zErrMsg = (char *)0x0;\nLAB_0003e064:\n    iVar24 = 0;\n    if (iVar18 != 0x13) {\n      iVar24 = iVar18;\n    }\n    return iVar24;\n  }" if (parenthesized_expression "((iVar18 != 0) && (iVar18 != 0x13))" ( (binary_expression "(iVar18 != 0) && (iVar18 != 0x13)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar18 != 0x13)" ( (binary_expression "iVar18 != 0x13" identifier != number_literal) ))) )) (compound_statement "{\n    if (iVar18 == 7) {\n      psVar8 = pParse->db;\n      uVar22._0_1_ = psVar8->temp_store;\n      uVar22._1_1_ = psVar8->mallocFailed;\n      uVar22._2_1_ = psVar8->bBenignMalloc;\n      uVar22._3_1_ = psVar8->dfltLockMode;\n      if ((uVar22 & 0xffff00) == 0) {\n        sqlite3OomFault(psVar8);\n      }\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return 7;\n    }\n    if (psVar12->zErrMsg != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return iVar18;\n    }\n    pcVar23 = sqlite3ErrStr(iVar18);\n    sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23);\n    sqlite3_free(psVar12->zErrMsg);\n    psVar12->zErrMsg = (char *)0x0;\nLAB_0003e064:\n    iVar24 = 0;\n    if (iVar18 != 0x13) {\n      iVar24 = iVar18;\n    }\n    return iVar24;\n  }" { (if_statement "if (iVar18 == 7) {\n      psVar8 = pParse->db;\n      uVar22._0_1_ = psVar8->temp_store;\n      uVar22._1_1_ = psVar8->mallocFailed;\n      uVar22._2_1_ = psVar8->bBenignMalloc;\n      uVar22._3_1_ = psVar8->dfltLockMode;\n      if ((uVar22 & 0xffff00) == 0) {\n        sqlite3OomFault(psVar8);\n      }\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return 7;\n    }" if (parenthesized_expression "(iVar18 == 7)" ( (binary_expression "iVar18 == 7" identifier == number_literal) )) (compound_statement "{\n      psVar8 = pParse->db;\n      uVar22._0_1_ = psVar8->temp_store;\n      uVar22._1_1_ = psVar8->mallocFailed;\n      uVar22._2_1_ = psVar8->bBenignMalloc;\n      uVar22._3_1_ = psVar8->dfltLockMode;\n      if ((uVar22 & 0xffff00) == 0) {\n        sqlite3OomFault(psVar8);\n      }\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return 7;\n    }" { (expression_statement "psVar8 = pParse->db;" (assignment_expression "psVar8 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "uVar22._0_1_ = psVar8->temp_store;" (assignment_expression "uVar22._0_1_ = psVar8->temp_store" (field_expression "uVar22._0_1_" identifier . field_identifier) = (field_expression "psVar8->temp_store" identifier -> field_identifier)) ;) (expression_statement "uVar22._1_1_ = psVar8->mallocFailed;" (assignment_expression "uVar22._1_1_ = psVar8->mallocFailed" (field_expression "uVar22._1_1_" identifier . field_identifier) = (field_expression "psVar8->mallocFailed" identifier -> field_identifier)) ;) (expression_statement "uVar22._2_1_ = psVar8->bBenignMalloc;" (assignment_expression "uVar22._2_1_ = psVar8->bBenignMalloc" (field_expression "uVar22._2_1_" identifier . field_identifier) = (field_expression "psVar8->bBenignMalloc" identifier -> field_identifier)) ;) (expression_statement "uVar22._3_1_ = psVar8->dfltLockMode;" (assignment_expression "uVar22._3_1_ = psVar8->dfltLockMode" (field_expression "uVar22._3_1_" identifier . field_identifier) = (field_expression "psVar8->dfltLockMode" identifier -> field_identifier)) ;) (if_statement "if ((uVar22 & 0xffff00) == 0) {\n        sqlite3OomFault(psVar8);\n      }" if (parenthesized_expression "((uVar22 & 0xffff00) == 0)" ( (binary_expression "(uVar22 & 0xffff00) == 0" (parenthesized_expression "(uVar22 & 0xffff00)" ( (binary_expression "uVar22 & 0xffff00" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        sqlite3OomFault(psVar8);\n      }" { (expression_statement "sqlite3OomFault(psVar8);" (call_expression "sqlite3OomFault(psVar8)" identifier (argument_list "(psVar8)" ( identifier ))) ;) })) (expression_statement "sqlite3_free(psVar12->zErrMsg);" (call_expression "sqlite3_free(psVar12->zErrMsg)" identifier (argument_list "(psVar12->zErrMsg)" ( (field_expression "psVar12->zErrMsg" identifier -> field_identifier) ))) ;) (expression_statement "psVar12->zErrMsg = (char *)0x0;" (assignment_expression "psVar12->zErrMsg = (char *)0x0" (field_expression "psVar12->zErrMsg" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return 7;" return number_literal ;) })) (if_statement "if (psVar12->zErrMsg != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return iVar18;\n    }" if (parenthesized_expression "(psVar12->zErrMsg != (char *)0x0)" ( (binary_expression "psVar12->zErrMsg != (char *)0x0" (field_expression "psVar12->zErrMsg" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);\n      sqlite3_free(psVar12->zErrMsg);\n      psVar12->zErrMsg = (char *)0x0;\n      return iVar18;\n    }" { (expression_statement "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg);" (call_expression "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg)" identifier (argument_list "(pParse,(char *)(unaff_EDI + 0x6c964),psVar12->zErrMsg)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6c964)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6c964)" ( (binary_expression "unaff_EDI + 0x6c964" identifier + number_literal) ))) , (field_expression "psVar12->zErrMsg" identifier -> field_identifier) ))) ;) (expression_statement "sqlite3_free(psVar12->zErrMsg);" (call_expression "sqlite3_free(psVar12->zErrMsg)" identifier (argument_list "(psVar12->zErrMsg)" ( (field_expression "psVar12->zErrMsg" identifier -> field_identifier) ))) ;) (expression_statement "psVar12->zErrMsg = (char *)0x0;" (assignment_expression "psVar12->zErrMsg = (char *)0x0" (field_expression "psVar12->zErrMsg" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return iVar18;" return identifier ;) })) (expression_statement "pcVar23 = sqlite3ErrStr(iVar18);" (assignment_expression "pcVar23 = sqlite3ErrStr(iVar18)" identifier = (call_expression "sqlite3ErrStr(iVar18)" identifier (argument_list "(iVar18)" ( identifier )))) ;) (expression_statement "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23);" (call_expression "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23)" identifier (argument_list "(pParse,(char *)(unaff_EDI + 0x6c964),pcVar23)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6c964)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6c964)" ( (binary_expression "unaff_EDI + 0x6c964" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "sqlite3_free(psVar12->zErrMsg);" (call_expression "sqlite3_free(psVar12->zErrMsg)" identifier (argument_list "(psVar12->zErrMsg)" ( (field_expression "psVar12->zErrMsg" identifier -> field_identifier) ))) ;) (expression_statement "psVar12->zErrMsg = (char *)0x0;" (assignment_expression "psVar12->zErrMsg = (char *)0x0" (field_expression "psVar12->zErrMsg" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0003e064:\n    iVar24 = 0;" statement_identifier : (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;)) (if_statement "if (iVar18 != 0x13) {\n      iVar24 = iVar18;\n    }" if (parenthesized_expression "(iVar18 != 0x13)" ( (binary_expression "iVar18 != 0x13" identifier != number_literal) )) (compound_statement "{\n      iVar24 = iVar18;\n    }" { (expression_statement "iVar24 = iVar18;" (assignment_expression "iVar24 = iVar18" identifier = identifier) ;) })) (return_statement "return iVar24;" return identifier ;) })) (expression_statement "sqlite3_free(psVar12->zErrMsg);" (call_expression "sqlite3_free(psVar12->zErrMsg)" identifier (argument_list "(psVar12->zErrMsg)" ( (field_expression "psVar12->zErrMsg" identifier -> field_identifier) ))) ;) (expression_statement "psVar12->zErrMsg = (char *)0x0;" (assignment_expression "psVar12->zErrMsg = (char *)0x0" (field_expression "psVar12->zErrMsg" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar18 != 0) goto LAB_0003e064;" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003e064;" goto statement_identifier ;)) (if_statement "if ((int)uVar22 < 1) {\n    (pTemplate->u).btree.nDistinctCol = 0;\n    pTemplate->nLTerm = 0;\n  }\n  else {\n    ppWVar13 = pTemplate->aLTerm;\n    ppWVar19 = ppWVar13;\n    do {\n      *ppWVar19 = (WhereTerm *)0x0;\n      ppWVar19 = ppWVar19 + 1;\n    } while (ppWVar13 + uVar22 != ppWVar19);\n    psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n    (pTemplate->u).btree.nDistinctCol = 0;\n    uVar28 = 0;\n    local_50 = -1;\n    do {\n      iVar18 = __s[uVar28].argvIndex + -1;\n      if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n    pTemplate->nLTerm = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }\nLAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);\n      return 1;\n    }\n  }" if (parenthesized_expression "((int)uVar22 < 1)" ( (binary_expression "(int)uVar22 < 1" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    (pTemplate->u).btree.nDistinctCol = 0;\n    pTemplate->nLTerm = 0;\n  }" { (expression_statement "(pTemplate->u).btree.nDistinctCol = 0;" (assignment_expression "(pTemplate->u).btree.nDistinctCol = 0" (field_expression "(pTemplate->u).btree.nDistinctCol" (field_expression "(pTemplate->u).btree" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "pTemplate->nLTerm = 0;" (assignment_expression "pTemplate->nLTerm = 0" (field_expression "pTemplate->nLTerm" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n    ppWVar13 = pTemplate->aLTerm;\n    ppWVar19 = ppWVar13;\n    do {\n      *ppWVar19 = (WhereTerm *)0x0;\n      ppWVar19 = ppWVar19 + 1;\n    } while (ppWVar13 + uVar22 != ppWVar19);\n    psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n    (pTemplate->u).btree.nDistinctCol = 0;\n    uVar28 = 0;\n    local_50 = -1;\n    do {\n      iVar18 = __s[uVar28].argvIndex + -1;\n      if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n    pTemplate->nLTerm = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }\nLAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);\n      return 1;\n    }\n  }" else (compound_statement "{\n    ppWVar13 = pTemplate->aLTerm;\n    ppWVar19 = ppWVar13;\n    do {\n      *ppWVar19 = (WhereTerm *)0x0;\n      ppWVar19 = ppWVar19 + 1;\n    } while (ppWVar13 + uVar22 != ppWVar19);\n    psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;\n    (pTemplate->u).btree.nDistinctCol = 0;\n    uVar28 = 0;\n    local_50 = -1;\n    do {\n      iVar18 = __s[uVar28].argvIndex + -1;\n      if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);\n    pTemplate->nLTerm = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }\nLAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);\n      return 1;\n    }\n  }" { (expression_statement "ppWVar13 = pTemplate->aLTerm;" (assignment_expression "ppWVar13 = pTemplate->aLTerm" identifier = (field_expression "pTemplate->aLTerm" identifier -> field_identifier)) ;) (expression_statement "ppWVar19 = ppWVar13;" (assignment_expression "ppWVar19 = ppWVar13" identifier = identifier) ;) (do_statement "do {\n      *ppWVar19 = (WhereTerm *)0x0;\n      ppWVar19 = ppWVar19 + 1;\n    } while (ppWVar13 + uVar22 != ppWVar19);" do (compound_statement "{\n      *ppWVar19 = (WhereTerm *)0x0;\n      ppWVar19 = ppWVar19 + 1;\n    }" { (expression_statement "*ppWVar19 = (WhereTerm *)0x0;" (assignment_expression "*ppWVar19 = (WhereTerm *)0x0" (pointer_expression "*ppWVar19" * identifier) = (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppWVar19 = ppWVar19 + 1;" (assignment_expression "ppWVar19 = ppWVar19 + 1" identifier = (binary_expression "ppWVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(ppWVar13 + uVar22 != ppWVar19)" ( (binary_expression "ppWVar13 + uVar22 != ppWVar19" (binary_expression "ppWVar13 + uVar22" identifier + identifier) != identifier) )) ;) (expression_statement "psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint;" (assignment_expression "psVar26 = ((sqlite3_index_info *)mUsable)->aConstraint" identifier = (field_expression "((sqlite3_index_info *)mUsable)->aConstraint" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (expression_statement "(pTemplate->u).btree.nDistinctCol = 0;" (assignment_expression "(pTemplate->u).btree.nDistinctCol = 0" (field_expression "(pTemplate->u).btree.nDistinctCol" (field_expression "(pTemplate->u).btree" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "uVar28 = 0;" (assignment_expression "uVar28 = 0" identifier = number_literal) ;) (expression_statement "local_50 = -1;" (assignment_expression "local_50 = -1" identifier = number_literal) ;) (do_statement "do {\n      iVar18 = __s[uVar28].argvIndex + -1;\n      if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    } while (uVar22 != uVar28);" do (compound_statement "{\n      iVar18 = __s[uVar28].argvIndex + -1;\n      if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }\n      uVar28 = uVar28 + 1;\n      psVar26 = psVar26 + 1;\n    }" { (expression_statement "iVar18 = __s[uVar28].argvIndex + -1;" (assignment_expression "iVar18 = __s[uVar28].argvIndex + -1" identifier = (binary_expression "__s[uVar28].argvIndex + -1" (field_expression "__s[uVar28].argvIndex" (subscript_expression "__s[uVar28]" identifier [ identifier ]) . field_identifier) + number_literal)) ;) (if_statement "if (-1 < iVar18) {\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }" if (parenthesized_expression "(-1 < iVar18)" ( (binary_expression "-1 < iVar18" number_literal < identifier) )) (compound_statement "{\n        iVar24 = psVar26->iTermOffset;\n        if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;\n        pWVar20 = pWVar6->a + iVar24;\n        *(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;\n        puVar1 = (uint *)((int)&pTemplate->prereq + 4);\n        *puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);\n        ppWVar13[iVar18] = pWVar20;\n        if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }\n        if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }\n        if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }\n      }" { (expression_statement "iVar24 = psVar26->iTermOffset;" (assignment_expression "iVar24 = psVar26->iTermOffset" identifier = (field_expression "psVar26->iTermOffset" identifier -> field_identifier)) ;) (if_statement "if (((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))) goto LAB_0003dfb0;" if (parenthesized_expression "(((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0'))))" ( (binary_expression "((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)) ||\n           ((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))" (parenthesized_expression "((((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24))" ( (binary_expression "(((int)uVar22 <= iVar18) || (iVar24 < 0)) || (pWVar6->nTerm <= iVar24)" (parenthesized_expression "(((int)uVar22 <= iVar18) || (iVar24 < 0))" ( (binary_expression "((int)uVar22 <= iVar18) || (iVar24 < 0)" (parenthesized_expression "((int)uVar22 <= iVar18)" ( (binary_expression "(int)uVar22 <= iVar18" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) || (parenthesized_expression "(iVar24 < 0)" ( (binary_expression "iVar24 < 0" identifier < number_literal) ))) )) || (parenthesized_expression "(pWVar6->nTerm <= iVar24)" ( (binary_expression "pWVar6->nTerm <= iVar24" (field_expression "pWVar6->nTerm" identifier -> field_identifier) <= identifier) ))) )) || (parenthesized_expression "((ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')))" ( (parenthesized_expression "(ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0'))" ( (binary_expression "ppWVar13[iVar18] != (WhereTerm *)0x0 || (psVar26->usable == '\0')" (binary_expression "ppWVar13[iVar18] != (WhereTerm *)0x0" (subscript_expression "ppWVar13[iVar18]" identifier [ identifier ]) != (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(psVar26->usable == '\0')" ( (binary_expression "psVar26->usable == '\0'" (field_expression "psVar26->usable" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (goto_statement "goto LAB_0003dfb0;" goto statement_identifier ;)) (expression_statement "pWVar20 = pWVar6->a + iVar24;" (assignment_expression "pWVar20 = pWVar6->a + iVar24" identifier = (binary_expression "pWVar6->a + iVar24" (field_expression "pWVar6->a" identifier -> field_identifier) + identifier)) ;) (expression_statement "*(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight;" (assignment_expression "*(uint *)&pTemplate->prereq = (uint)pTemplate->prereq | (uint)pWVar20->prereqRight" (pointer_expression "*(uint *)&pTemplate->prereq" * (cast_expression "(uint *)&pTemplate->prereq" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pTemplate->prereq" & (field_expression "pTemplate->prereq" identifier -> field_identifier)))) = (binary_expression "(uint)pTemplate->prereq | (uint)pWVar20->prereqRight" (cast_expression "(uint)pTemplate->prereq" ( (type_descriptor "uint" type_identifier) ) (field_expression "pTemplate->prereq" identifier -> field_identifier)) | (cast_expression "(uint)pWVar20->prereqRight" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar20->prereqRight" identifier -> field_identifier)))) ;) (expression_statement "puVar1 = (uint *)((int)&pTemplate->prereq + 4);" (assignment_expression "puVar1 = (uint *)((int)&pTemplate->prereq + 4)" identifier = (cast_expression "(uint *)((int)&pTemplate->prereq + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pTemplate->prereq + 4)" ( (binary_expression "(int)&pTemplate->prereq + 4" (cast_expression "(int)&pTemplate->prereq" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pTemplate->prereq" & (field_expression "pTemplate->prereq" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4);" (assignment_expression "*puVar1 = *puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4)" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | *(uint *)((int)&pWVar20->prereqRight + 4)" (pointer_expression "*puVar1" * identifier) | (pointer_expression "*(uint *)((int)&pWVar20->prereqRight + 4)" * (cast_expression "(uint *)((int)&pWVar20->prereqRight + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar20->prereqRight + 4)" ( (binary_expression "(int)&pWVar20->prereqRight + 4" (cast_expression "(int)&pWVar20->prereqRight" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar20->prereqRight" & (field_expression "pWVar20->prereqRight" identifier -> field_identifier))) + number_literal) )))))) ;) (expression_statement "ppWVar13[iVar18] = pWVar20;" (assignment_expression "ppWVar13[iVar18] = pWVar20" (subscript_expression "ppWVar13[iVar18]" identifier [ identifier ]) = identifier) ;) (if_statement "if (local_50 < iVar18) {\n          local_50 = iVar18;\n        }" if (parenthesized_expression "(local_50 < iVar18)" ( (binary_expression "local_50 < iVar18" identifier < identifier) )) (compound_statement "{\n          local_50 = iVar18;\n        }" { (expression_statement "local_50 = iVar18;" (assignment_expression "local_50 = iVar18" identifier = identifier) ;) })) (if_statement "if (((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)) {\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }" if (parenthesized_expression "(((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0))" ( (binary_expression "((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)) &&\n           ((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)" (parenthesized_expression "((__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10))" ( (binary_expression "(__s[uVar28].omit != '\0') && ((int)uVar28 < 0x10)" (parenthesized_expression "(__s[uVar28].omit != '\0')" ( (binary_expression "__s[uVar28].omit != '\0'" (field_expression "__s[uVar28].omit" (subscript_expression "__s[uVar28]" identifier [ identifier ]) . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((int)uVar28 < 0x10)" ( (binary_expression "(int)uVar28 < 0x10" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))) )) && (parenthesized_expression "((mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0)" ( (binary_expression "(mUsable._4_2_ >> (uVar28 & 0x1f) & 1) == 0" (parenthesized_expression "(mUsable._4_2_ >> (uVar28 & 0x1f) & 1)" ( (binary_expression "mUsable._4_2_ >> (uVar28 & 0x1f) & 1" (binary_expression "mUsable._4_2_ >> (uVar28 & 0x1f)" (field_expression "mUsable._4_2_" identifier . field_identifier) >> (parenthesized_expression "(uVar28 & 0x1f)" ( (binary_expression "uVar28 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          puVar2 = &(pTemplate->u).btree.nDistinctCol;\n          *puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));\n        }" { (expression_statement "puVar2 = &(pTemplate->u).btree.nDistinctCol;" (assignment_expression "puVar2 = &(pTemplate->u).btree.nDistinctCol" identifier = (pointer_expression "&(pTemplate->u).btree.nDistinctCol" & (field_expression "(pTemplate->u).btree.nDistinctCol" (field_expression "(pTemplate->u).btree" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f));" (assignment_expression "*puVar2 = *puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f))" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | (ushort)(1 << ((byte)iVar18 & 0x1f))" (pointer_expression "*puVar2" * identifier) | (call_expression "(ushort)(1 << ((byte)iVar18 & 0x1f))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(1 << ((byte)iVar18 & 0x1f))" ( (binary_expression "1 << ((byte)iVar18 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar18 & 0x1f)" ( (binary_expression "(byte)iVar18 & 0x1f" (cast_expression "(byte)iVar18" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) })) (if_statement "if ((pWVar20->eOperator & 1) != 0) {\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }" if (parenthesized_expression "((pWVar20->eOperator & 1) != 0)" ( (binary_expression "(pWVar20->eOperator & 1) != 0" (parenthesized_expression "(pWVar20->eOperator & 1)" ( (binary_expression "pWVar20->eOperator & 1" (field_expression "pWVar20->eOperator" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          ((sqlite3_index_info *)mUsable)->orderByConsumed = 0;\n          ((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;\n          *_mExclude = 1;\n        }" { (expression_statement "((sqlite3_index_info *)mUsable)->orderByConsumed = 0;" (assignment_expression "((sqlite3_index_info *)mUsable)->orderByConsumed = 0" (field_expression "((sqlite3_index_info *)mUsable)->orderByConsumed" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe;" (assignment_expression "((sqlite3_index_info *)mUsable)->idxFlags =\n               ((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe" (field_expression "((sqlite3_index_info *)mUsable)->idxFlags" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = (binary_expression "((sqlite3_index_info *)mUsable)->idxFlags & 0xfffffffe" (field_expression "((sqlite3_index_info *)mUsable)->idxFlags" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) & number_literal)) ;) (expression_statement "*_mExclude = 1;" (assignment_expression "*_mExclude = 1" (pointer_expression "*_mExclude" * identifier) = number_literal) ;) })) })) (expression_statement "uVar28 = uVar28 + 1;" (assignment_expression "uVar28 = uVar28 + 1" identifier = (binary_expression "uVar28 + 1" identifier + number_literal)) ;) (expression_statement "psVar26 = psVar26 + 1;" (assignment_expression "psVar26 = psVar26 + 1" identifier = (binary_expression "psVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 != uVar28)" ( (binary_expression "uVar22 != uVar28" identifier != identifier) )) ;) (expression_statement "pTemplate->nLTerm = (short)local_50 + 1;" (assignment_expression "pTemplate->nLTerm = (short)local_50 + 1" (field_expression "pTemplate->nLTerm" identifier -> field_identifier) = (binary_expression "(short)local_50 + 1" (cast_expression "(short)local_50" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) (if_statement "if (local_50 != -1) {\n      if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }\nLAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);\n      return 1;\n    }" if (parenthesized_expression "(local_50 != -1)" ( (binary_expression "local_50 != -1" identifier != number_literal) )) (compound_statement "{\n      if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }\nLAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);\n      return 1;\n    }" { (if_statement "if (*ppWVar13 != (WhereTerm *)0x0) {\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }" if (parenthesized_expression "(*ppWVar13 != (WhereTerm *)0x0)" ( (binary_expression "*ppWVar13 != (WhereTerm *)0x0" (pointer_expression "*ppWVar13" * identifier) != (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar18 = 0;\n        do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);\n      }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        } while (ppWVar13[iVar18] != (WhereTerm *)0x0);" do (compound_statement "{\n          iVar18 = iVar18 + 1;\n          if (local_50 < iVar18) goto LAB_0003de32;\n        }" { (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (if_statement "if (local_50 < iVar18) goto LAB_0003de32;" if (parenthesized_expression "(local_50 < iVar18)" ( (binary_expression "local_50 < iVar18" identifier < identifier) )) (goto_statement "goto LAB_0003de32;" goto statement_identifier ;)) }) while (parenthesized_expression "(ppWVar13[iVar18] != (WhereTerm *)0x0)" ( (binary_expression "ppWVar13[iVar18] != (WhereTerm *)0x0" (subscript_expression "ppWVar13[iVar18]" identifier [ identifier ]) != (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (labeled_statement "LAB_0003dfb0:\n      sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName);" (call_expression "sqlite3ErrorMsg(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName)" identifier (argument_list "(pParse,(char *)(unaff_EDI + 0x6c937),(pSVar7->a[bVar5].pTab)->zName)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6c937)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6c937)" ( (binary_expression "unaff_EDI + 0x6c937" identifier + number_literal) ))) , (field_expression "(pSVar7->a[bVar5].pTab)->zName" (parenthesized_expression "(pSVar7->a[bVar5].pTab)" ( (field_expression "pSVar7->a[bVar5].pTab" (subscript_expression "pSVar7->a[bVar5]" (field_expression "pSVar7->a" identifier -> field_identifier) [ identifier ]) . field_identifier) )) -> field_identifier) ))) ;)) (return_statement "return 1;" return number_literal ;) })) }))) (labeled_statement "LAB_0003de32:\n  iVar18 = ((sqlite3_index_info *)mUsable)->orderByConsumed;" statement_identifier : (expression_statement "iVar18 = ((sqlite3_index_info *)mUsable)->orderByConsumed;" (assignment_expression "iVar18 = ((sqlite3_index_info *)mUsable)->orderByConsumed" identifier = (field_expression "((sqlite3_index_info *)mUsable)->orderByConsumed" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;)) (expression_statement "(pTemplate->u).vtab.idxNum = ((sqlite3_index_info *)mUsable)->idxNum;" (assignment_expression "(pTemplate->u).vtab.idxNum = ((sqlite3_index_info *)mUsable)->idxNum" (field_expression "(pTemplate->u).vtab.idxNum" (field_expression "(pTemplate->u).vtab" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "((sqlite3_index_info *)mUsable)->idxNum" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (expression_statement "(pTemplate->u).vtab.needFree = (u8)((sqlite3_index_info *)mUsable)->needToFreeIdxStr;" (assignment_expression "(pTemplate->u).vtab.needFree = (u8)((sqlite3_index_info *)mUsable)->needToFreeIdxStr" (field_expression "(pTemplate->u).vtab.needFree" (field_expression "(pTemplate->u).vtab" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "(u8)((sqlite3_index_info *)mUsable)->needToFreeIdxStr" (call_expression "(u8)((sqlite3_index_info *)mUsable)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) -> field_identifier)) ;) (expression_statement "((sqlite3_index_info *)mUsable)->needToFreeIdxStr = 0;" (assignment_expression "((sqlite3_index_info *)mUsable)->needToFreeIdxStr = 0" (field_expression "((sqlite3_index_info *)mUsable)->needToFreeIdxStr" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "(pTemplate->u).btree.pIndex = (Index *)((sqlite3_index_info *)mUsable)->idxStr;" (assignment_expression "(pTemplate->u).btree.pIndex = (Index *)((sqlite3_index_info *)mUsable)->idxStr" (field_expression "(pTemplate->u).btree.pIndex" (field_expression "(pTemplate->u).btree" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(Index *)((sqlite3_index_info *)mUsable)->idxStr" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((sqlite3_index_info *)mUsable)->idxStr" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) ;) (expression_statement "iVar16 = '\0';" (assignment_expression "iVar16 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (iVar18 != 0) {\n    iVar16 = (i8)((sqlite3_index_info *)mUsable)->nOrderBy;\n  }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar16 = (i8)((sqlite3_index_info *)mUsable)->nOrderBy;\n  }" { (expression_statement "iVar16 = (i8)((sqlite3_index_info *)mUsable)->nOrderBy;" (assignment_expression "iVar16 = (i8)((sqlite3_index_info *)mUsable)->nOrderBy" identifier = (field_expression "(i8)((sqlite3_index_info *)mUsable)->nOrderBy" (call_expression "(i8)((sqlite3_index_info *)mUsable)" (parenthesized_expression "(i8)" ( identifier )) (argument_list "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) -> field_identifier)) ;) })) (expression_statement "dVar3 = ((sqlite3_index_info *)mUsable)->estimatedCost;" (assignment_expression "dVar3 = ((sqlite3_index_info *)mUsable)->estimatedCost" identifier = (field_expression "((sqlite3_index_info *)mUsable)->estimatedCost" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (expression_statement "(pTemplate->u).vtab.isOrdered = iVar16;" (assignment_expression "(pTemplate->u).vtab.isOrdered = iVar16" (field_expression "(pTemplate->u).vtab.isOrdered" (field_expression "(pTemplate->u).vtab" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "sVar17 = 0;" (assignment_expression "sVar17 = 0" identifier = number_literal) ;) (expression_statement "pTemplate->rSetup = 0;" (assignment_expression "pTemplate->rSetup = 0" (field_expression "pTemplate->rSetup" identifier -> field_identifier) = number_literal) ;) (if_statement "if (1.0 < dVar3) {\n    if ((double)*(float *)(unaff_EDI + 0x7770b) < dVar3) {\n      sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }\n      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);\n      uVar22 = (uint)lVar4;\n      if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }\n      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);\n    }\n  }" if (parenthesized_expression "(1.0 < dVar3)" ( (binary_expression "1.0 < dVar3" number_literal < identifier) )) (compound_statement "{\n    if ((double)*(float *)(unaff_EDI + 0x7770b) < dVar3) {\n      sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }\n      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);\n      uVar22 = (uint)lVar4;\n      if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }\n      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);\n    }\n  }" { (if_statement "if ((double)*(float *)(unaff_EDI + 0x7770b) < dVar3) {\n      sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }\n      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);\n      uVar22 = (uint)lVar4;\n      if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }\n      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);\n    }" if (parenthesized_expression "((double)*(float *)(unaff_EDI + 0x7770b) < dVar3)" ( (binary_expression "(double)*(float *)(unaff_EDI + 0x7770b) < dVar3" (cast_expression "(double)*(float *)(unaff_EDI + 0x7770b)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EDI + 0x7770b)" * (cast_expression "(float *)(unaff_EDI + 0x7770b)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x7770b)" ( (binary_expression "unaff_EDI + 0x7770b" identifier + number_literal) ))))) < identifier) )) (compound_statement "{\n      sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;\n    }" { (expression_statement "sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10;" (assignment_expression "sVar17 = ((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10" identifier = (binary_expression "((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe) * 10" (parenthesized_expression "((ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe)" ( (binary_expression "(ushort)((ulonglong)dVar3 >> 0x34) - 0x3fe" (call_expression "(ushort)((ulonglong)dVar3 >> 0x34)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((ulonglong)dVar3 >> 0x34)" ( (binary_expression "(ulonglong)dVar3 >> 0x34" (cast_expression "(ulonglong)dVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) - number_literal) )) * number_literal)) ;) }) (else_clause "else {\n      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }\n      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);\n      uVar22 = (uint)lVar4;\n      if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }\n      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);\n    }" else (compound_statement "{\n      if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }\n      uVar28 = (uint)((ulonglong)lVar4 >> 0x20);\n      uVar22 = (uint)lVar4;\n      if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }\n      sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);\n    }" { (if_statement "if ((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3) {\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }" if (parenthesized_expression "((double)*(float *)(unaff_EDI + 0x776d7) <= dVar3)" ( (binary_expression "(double)*(float *)(unaff_EDI + 0x776d7) <= dVar3" (cast_expression "(double)*(float *)(unaff_EDI + 0x776d7)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EDI + 0x776d7)" * (cast_expression "(float *)(unaff_EDI + 0x776d7)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x776d7)" ( (binary_expression "unaff_EDI + 0x776d7" identifier + number_literal) ))))) <= identifier) )) (compound_statement "{\n        lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));\n        iStack_28 = (int)((ulonglong)lVar4 >> 0x20);\n        local_2c = (undefined4)lVar4;\n        lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }" { (expression_statement "lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7));" (assignment_expression "lVar4 = (longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7))" identifier = (cast_expression "(longlong)ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7))" identifier (argument_list "(dVar3 - (double)*(float *)(unaff_EDI + 0x776d7))" ( (binary_expression "dVar3 - (double)*(float *)(unaff_EDI + 0x776d7)" identifier - (cast_expression "(double)*(float *)(unaff_EDI + 0x776d7)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(unaff_EDI + 0x776d7)" * (cast_expression "(float *)(unaff_EDI + 0x776d7)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x776d7)" ( (binary_expression "unaff_EDI + 0x776d7" identifier + number_literal) )))))) ))))) ;) (expression_statement "iStack_28 = (int)((ulonglong)lVar4 >> 0x20);" (assignment_expression "iStack_28 = (int)((ulonglong)lVar4 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_2c = (undefined4)lVar4;" (assignment_expression "local_2c = (undefined4)lVar4" identifier = (cast_expression "(undefined4)lVar4" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c);" (assignment_expression "lVar4 = CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier = (call_expression "CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier (argument_list "(iStack_28 + -0x80000000,local_2c)" ( (binary_expression "iStack_28 + -0x80000000" identifier + number_literal) , identifier )))) ;) }) (else_clause "else {\n        lVar4 = (longlong)ROUND(dVar3);\n      }" else (compound_statement "{\n        lVar4 = (longlong)ROUND(dVar3);\n      }" { (expression_statement "lVar4 = (longlong)ROUND(dVar3);" (assignment_expression "lVar4 = (longlong)ROUND(dVar3)" identifier = (cast_expression "(longlong)ROUND(dVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar3)" identifier (argument_list "(dVar3)" ( identifier ))))) ;) }))) (expression_statement "uVar28 = (uint)((ulonglong)lVar4 >> 0x20);" (assignment_expression "uVar28 = (uint)((ulonglong)lVar4 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar22 = (uint)lVar4;" (assignment_expression "uVar22 = (uint)lVar4" identifier = (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((uVar28 == 0) && (uVar22 < 8)) {\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }\n      else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }" if (parenthesized_expression "((uVar28 == 0) && (uVar22 < 8))" ( (binary_expression "(uVar28 == 0) && (uVar22 < 8)" (parenthesized_expression "(uVar28 == 0)" ( (binary_expression "uVar28 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar22 < 8)" ( (binary_expression "uVar22 < 8" identifier < number_literal) ))) )) (compound_statement "{\n        sVar17 = 0;\n        if (uVar22 < 2) goto LAB_0003df0c;\n        sVar15 = 0x28;\n        do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);\n        sVar17 = sVar17 + -0x14;\n      }" { (expression_statement "sVar17 = 0;" (assignment_expression "sVar17 = 0" identifier = number_literal) ;) (if_statement "if (uVar22 < 2) goto LAB_0003df0c;" if (parenthesized_expression "(uVar22 < 2)" ( (binary_expression "uVar22 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003df0c;" goto statement_identifier ;)) (expression_statement "sVar15 = 0x28;" (assignment_expression "sVar15 = 0x28" identifier = number_literal) ;) (do_statement "do {\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        } while (uVar22 < 8);" do (compound_statement "{\n          sVar17 = sVar15;\n          uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;\n          uVar22 = (uint)lVar4 * 2;\n          lVar4 = CONCAT44(uVar28,uVar22);\n          if (uVar28 != 0) break;\n          sVar15 = sVar17 + -10;\n        }" { (expression_statement "sVar17 = sVar15;" (assignment_expression "sVar17 = sVar15" identifier = identifier) ;) (expression_statement "uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f;" (assignment_expression "uVar28 = (int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f" identifier = (binary_expression "(int)((ulonglong)lVar4 >> 0x20) << 1 | (uint)lVar4 >> 0x1f" (binary_expression "(int)((ulonglong)lVar4 >> 0x20) << 1" (cast_expression "(int)((ulonglong)lVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar4 >> 0x20)" ( (binary_expression "(ulonglong)lVar4 >> 0x20" (cast_expression "(ulonglong)lVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) << number_literal) | (binary_expression "(uint)lVar4 >> 0x1f" (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal))) ;) (expression_statement "uVar22 = (uint)lVar4 * 2;" (assignment_expression "uVar22 = (uint)lVar4 * 2" identifier = (binary_expression "(uint)lVar4 * 2" (cast_expression "(uint)lVar4" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "lVar4 = CONCAT44(uVar28,uVar22);" (assignment_expression "lVar4 = CONCAT44(uVar28,uVar22)" identifier = (call_expression "CONCAT44(uVar28,uVar22)" identifier (argument_list "(uVar28,uVar22)" ( identifier , identifier )))) ;) (if_statement "if (uVar28 != 0) break;" if (parenthesized_expression "(uVar28 != 0)" ( (binary_expression "uVar28 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "sVar15 = sVar17 + -10;" (assignment_expression "sVar15 = sVar17 + -10" identifier = (binary_expression "sVar17 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 < 8)" ( (binary_expression "uVar22 < 8" identifier < number_literal) )) ;) (expression_statement "sVar17 = sVar17 + -0x14;" (assignment_expression "sVar17 = sVar17 + -0x14" identifier = (binary_expression "sVar17 + -0x14" identifier + number_literal)) ;) }) (else_clause "else {\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }" else (compound_statement "{\n        if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }\n        uVar27 = 0x3c - uVar27;\n        bVar5 = (byte)uVar27 & 0x1f;\n        uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;\n        if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }\n        sVar17 = (short)uVar27 * 10 + 0x1e;\n      }" { (if_statement "if (uVar28 == 0) {\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }" if (parenthesized_expression "(uVar28 == 0)" ( (binary_expression "uVar28 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar27 = 0x1f;\n          if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = (uVar27 ^ 0x1f) + 0x20;\n        }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar22 != 0) {\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }" if (parenthesized_expression "(uVar22 != 0)" ( (binary_expression "uVar22 != 0" identifier != number_literal) )) (compound_statement "{\n            for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }" { (for_statement "for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }" for ( ; (binary_expression "uVar22 >> uVar27 == 0" (binary_expression "uVar22 >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n            }" { })) })) (expression_statement "uVar27 = (uVar27 ^ 0x1f) + 0x20;" (assignment_expression "uVar27 = (uVar27 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar27 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar27 ^ 0x1f)" ( (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }) (else_clause "else {\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }" else (compound_statement "{\n          uVar27 = 0x1f;\n          if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }\n          uVar27 = uVar27 ^ 0x1f;\n        }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar28 != 0) {\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }" if (parenthesized_expression "(uVar28 != 0)" ( (binary_expression "uVar28 != 0" identifier != number_literal) )) (compound_statement "{\n            for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }\n          }" { (for_statement "for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n            }" for ( ; (binary_expression "uVar28 >> uVar27 == 0" (binary_expression "uVar28 >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n            }" { })) })) (expression_statement "uVar27 = uVar27 ^ 0x1f;" (assignment_expression "uVar27 = uVar27 ^ 0x1f" identifier = (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal)) ;) }))) (expression_statement "uVar27 = 0x3c - uVar27;" (assignment_expression "uVar27 = 0x3c - uVar27" identifier = (binary_expression "0x3c - uVar27" number_literal - identifier)) ;) (expression_statement "bVar5 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar5 = (byte)uVar27 & 0x1f" identifier = (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5;" (assignment_expression "uVar22 = uVar22 >> bVar5 | uVar28 << 0x20 - bVar5" identifier = (binary_expression "uVar22 >> bVar5 | uVar28 << 0x20 - bVar5" (binary_expression "uVar22 >> bVar5" identifier >> identifier) | (binary_expression "uVar28 << 0x20 - bVar5" identifier << (binary_expression "0x20 - bVar5" number_literal - identifier)))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);\n        }" { (expression_statement "uVar22 = uVar28 >> ((byte)uVar27 & 0x1f);" (assignment_expression "uVar22 = uVar28 >> ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar28 >> ((byte)uVar27 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "sVar17 = (short)uVar27 * 10 + 0x1e;" (assignment_expression "sVar17 = (short)uVar27 * 10 + 0x1e" identifier = (binary_expression "(short)uVar27 * 10 + 0x1e" (binary_expression "(short)uVar27 * 10" (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) }))) (expression_statement "sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2);" (assignment_expression "sVar17 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2)" identifier = (binary_expression "sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2)" identifier + (pointer_expression "*(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2)" * (cast_expression "(short *)(unaff_EDI + 0x73693 + (uVar22 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x73693 + (uVar22 & 7) * 2)" ( (binary_expression "unaff_EDI + 0x73693 + (uVar22 & 7) * 2" (binary_expression "unaff_EDI + 0x73693" identifier + number_literal) + (binary_expression "(uVar22 & 7) * 2" (parenthesized_expression "(uVar22 & 7)" ( (binary_expression "uVar22 & 7" identifier & number_literal) )) * number_literal)) )))))) ;) }))) })) (labeled_statement "LAB_0003df0c:\n  uVar22 = *(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4);" statement_identifier : (expression_statement "uVar22 = *(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4);" (assignment_expression "uVar22 = *(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4)" identifier = (pointer_expression "*(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4)" * (cast_expression "(uint *)((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4)" ( (binary_expression "(int)&((sqlite3_index_info *)mUsable)->estimatedRows + 4" (cast_expression "(int)&((sqlite3_index_info *)mUsable)->estimatedRows" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((sqlite3_index_info *)mUsable)->estimatedRows" & (field_expression "((sqlite3_index_info *)mUsable)->estimatedRows" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) ))))) ;)) (expression_statement "pTemplate->rRun = sVar17;" (assignment_expression "pTemplate->rRun = sVar17" (field_expression "pTemplate->rRun" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar28 = (uint)((sqlite3_index_info *)mUsable)->estimatedRows;" (assignment_expression "uVar28 = (uint)((sqlite3_index_info *)mUsable)->estimatedRows" identifier = (field_expression "(uint)((sqlite3_index_info *)mUsable)->estimatedRows" (call_expression "(uint)((sqlite3_index_info *)mUsable)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) -> field_identifier)) ;) (if_statement "if ((uVar22 == 0) && (uVar28 < 8)) {\n    LVar25 = 0;\n    if (uVar28 < 2) goto LAB_0003df5f;\n    sVar15 = 0x28;\n    do {\n      sVar17 = sVar15;\n      uVar21 = uVar28 * 2;\n      if ((int)uVar28 < 0) break;\n      uVar28 = uVar21;\n      sVar15 = sVar17 + -10;\n    } while (uVar21 < 8);\n    sVar17 = sVar17 + -0x14;\n  }\n  else {\n    if (uVar22 == 0) {\n      uVar27 = 0x1f;\n      if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }\n    uVar27 = 0x3c - uVar27;\n    bVar5 = (byte)uVar27 & 0x1f;\n    uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5;\n    if ((uVar27 & 0x20) != 0) {\n      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);\n    }\n    sVar17 = (short)uVar27 * 10 + 0x1e;\n  }" if (parenthesized_expression "((uVar22 == 0) && (uVar28 < 8))" ( (binary_expression "(uVar22 == 0) && (uVar28 < 8)" (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar28 < 8)" ( (binary_expression "uVar28 < 8" identifier < number_literal) ))) )) (compound_statement "{\n    LVar25 = 0;\n    if (uVar28 < 2) goto LAB_0003df5f;\n    sVar15 = 0x28;\n    do {\n      sVar17 = sVar15;\n      uVar21 = uVar28 * 2;\n      if ((int)uVar28 < 0) break;\n      uVar28 = uVar21;\n      sVar15 = sVar17 + -10;\n    } while (uVar21 < 8);\n    sVar17 = sVar17 + -0x14;\n  }" { (expression_statement "LVar25 = 0;" (assignment_expression "LVar25 = 0" identifier = number_literal) ;) (if_statement "if (uVar28 < 2) goto LAB_0003df5f;" if (parenthesized_expression "(uVar28 < 2)" ( (binary_expression "uVar28 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003df5f;" goto statement_identifier ;)) (expression_statement "sVar15 = 0x28;" (assignment_expression "sVar15 = 0x28" identifier = number_literal) ;) (do_statement "do {\n      sVar17 = sVar15;\n      uVar21 = uVar28 * 2;\n      if ((int)uVar28 < 0) break;\n      uVar28 = uVar21;\n      sVar15 = sVar17 + -10;\n    } while (uVar21 < 8);" do (compound_statement "{\n      sVar17 = sVar15;\n      uVar21 = uVar28 * 2;\n      if ((int)uVar28 < 0) break;\n      uVar28 = uVar21;\n      sVar15 = sVar17 + -10;\n    }" { (expression_statement "sVar17 = sVar15;" (assignment_expression "sVar17 = sVar15" identifier = identifier) ;) (expression_statement "uVar21 = uVar28 * 2;" (assignment_expression "uVar21 = uVar28 * 2" identifier = (binary_expression "uVar28 * 2" identifier * number_literal)) ;) (if_statement "if ((int)uVar28 < 0) break;" if (parenthesized_expression "((int)uVar28 < 0)" ( (binary_expression "(int)uVar28 < 0" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar28 = uVar21;" (assignment_expression "uVar28 = uVar21" identifier = identifier) ;) (expression_statement "sVar15 = sVar17 + -10;" (assignment_expression "sVar15 = sVar17 + -10" identifier = (binary_expression "sVar17 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar21 < 8)" ( (binary_expression "uVar21 < 8" identifier < number_literal) )) ;) (expression_statement "sVar17 = sVar17 + -0x14;" (assignment_expression "sVar17 = sVar17 + -0x14" identifier = (binary_expression "sVar17 + -0x14" identifier + number_literal)) ;) }) (else_clause "else {\n    if (uVar22 == 0) {\n      uVar27 = 0x1f;\n      if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }\n    uVar27 = 0x3c - uVar27;\n    bVar5 = (byte)uVar27 & 0x1f;\n    uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5;\n    if ((uVar27 & 0x20) != 0) {\n      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);\n    }\n    sVar17 = (short)uVar27 * 10 + 0x1e;\n  }" else (compound_statement "{\n    if (uVar22 == 0) {\n      uVar27 = 0x1f;\n      if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }\n    uVar27 = 0x3c - uVar27;\n    bVar5 = (byte)uVar27 & 0x1f;\n    uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5;\n    if ((uVar27 & 0x20) != 0) {\n      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);\n    }\n    sVar17 = (short)uVar27 * 10 + 0x1e;\n  }" { (if_statement "if (uVar22 == 0) {\n      uVar27 = 0x1f;\n      if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar27 = 0x1f;\n      if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n    }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar28 != 0) {\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }" if (parenthesized_expression "(uVar28 != 0)" ( (binary_expression "uVar28 != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }" { (for_statement "for (; uVar28 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }" for ( ; (binary_expression "uVar28 >> uVar27 == 0" (binary_expression "uVar28 >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (expression_statement "uVar27 = (uVar27 ^ 0x1f) + 0x20;" (assignment_expression "uVar27 = (uVar27 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar27 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar27 ^ 0x1f)" ( (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }) (else_clause "else {\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }" else (compound_statement "{\n      uVar27 = 0x1f;\n      if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }\n      uVar27 = uVar27 ^ 0x1f;\n    }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar22 != 0) {\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }" if (parenthesized_expression "(uVar22 != 0)" ( (binary_expression "uVar22 != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }\n      }" { (for_statement "for (; uVar22 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n        }" for ( ; (binary_expression "uVar22 >> uVar27 == 0" (binary_expression "uVar22 >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (expression_statement "uVar27 = uVar27 ^ 0x1f;" (assignment_expression "uVar27 = uVar27 ^ 0x1f" identifier = (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal)) ;) }))) (expression_statement "uVar27 = 0x3c - uVar27;" (assignment_expression "uVar27 = 0x3c - uVar27" identifier = (binary_expression "0x3c - uVar27" number_literal - identifier)) ;) (expression_statement "bVar5 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar5 = (byte)uVar27 & 0x1f" identifier = (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5;" (assignment_expression "uVar21 = uVar28 >> bVar5 | uVar22 << 0x20 - bVar5" identifier = (binary_expression "uVar28 >> bVar5 | uVar22 << 0x20 - bVar5" (binary_expression "uVar28 >> bVar5" identifier >> identifier) | (binary_expression "uVar22 << 0x20 - bVar5" identifier << (binary_expression "0x20 - bVar5" number_literal - identifier)))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);\n    }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);\n    }" { (expression_statement "uVar21 = uVar22 >> ((byte)uVar27 & 0x1f);" (assignment_expression "uVar21 = uVar22 >> ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar22 >> ((byte)uVar27 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "sVar17 = (short)uVar27 * 10 + 0x1e;" (assignment_expression "sVar17 = (short)uVar27 * 10 + 0x1e" identifier = (binary_expression "(short)uVar27 * 10 + 0x1e" (binary_expression "(short)uVar27 * 10" (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) }))) (expression_statement "LVar25 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);" (assignment_expression "LVar25 = sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" identifier = (binary_expression "sVar17 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" identifier + (pointer_expression "*(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" * (cast_expression "(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" ( (binary_expression "unaff_EDI + 0x73693 + (uVar21 & 7) * 2" (binary_expression "unaff_EDI + 0x73693" identifier + number_literal) + (binary_expression "(uVar21 & 7) * 2" (parenthesized_expression "(uVar21 & 7)" ( (binary_expression "uVar21 & 7" identifier & number_literal) )) * number_literal)) )))))) ;) (labeled_statement "LAB_0003df5f:\n  pTemplate->nOut = LVar25;" statement_identifier : (expression_statement "pTemplate->nOut = LVar25;" (assignment_expression "pTemplate->nOut = LVar25" (field_expression "pTemplate->nOut" identifier -> field_identifier) = identifier) ;)) (expression_statement "uVar22 = pTemplate->wsFlags | 0x1000;" (assignment_expression "uVar22 = pTemplate->wsFlags | 0x1000" identifier = (binary_expression "pTemplate->wsFlags | 0x1000" (field_expression "pTemplate->wsFlags" identifier -> field_identifier) | number_literal)) ;) (if_statement "if ((((sqlite3_index_info *)mUsable)->idxFlags & 1) == 0) {\n    uVar22 = pTemplate->wsFlags & 0xffffefff;\n  }" if (parenthesized_expression "((((sqlite3_index_info *)mUsable)->idxFlags & 1) == 0)" ( (binary_expression "(((sqlite3_index_info *)mUsable)->idxFlags & 1) == 0" (parenthesized_expression "(((sqlite3_index_info *)mUsable)->idxFlags & 1)" ( (binary_expression "((sqlite3_index_info *)mUsable)->idxFlags & 1" (field_expression "((sqlite3_index_info *)mUsable)->idxFlags" (parenthesized_expression "((sqlite3_index_info *)mUsable)" ( (cast_expression "(sqlite3_index_info *)mUsable" ( (type_descriptor "sqlite3_index_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar22 = pTemplate->wsFlags & 0xffffefff;\n  }" { (expression_statement "uVar22 = pTemplate->wsFlags & 0xffffefff;" (assignment_expression "uVar22 = pTemplate->wsFlags & 0xffffefff" identifier = (binary_expression "pTemplate->wsFlags & 0xffffefff" (field_expression "pTemplate->wsFlags" identifier -> field_identifier) & number_literal)) ;) })) (expression_statement "pTemplate->wsFlags = uVar22;" (assignment_expression "pTemplate->wsFlags = uVar22" (field_expression "pTemplate->wsFlags" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar18 = whereLoopInsert(pBuilder_00,pTemplate);" (assignment_expression "iVar18 = whereLoopInsert(pBuilder_00,pTemplate)" identifier = (call_expression "whereLoopInsert(pBuilder_00,pTemplate)" identifier (argument_list "(pBuilder_00,pTemplate)" ( identifier , identifier )))) ;) (if_statement "if ((pTemplate->u).vtab.needFree != '\0') {\n    sqlite3_free((pTemplate->u).btree.pIndex);\n    (pTemplate->u).vtab.needFree = '\0';\n  }" if (parenthesized_expression "((pTemplate->u).vtab.needFree != '\0')" ( (binary_expression "(pTemplate->u).vtab.needFree != '\0'" (field_expression "(pTemplate->u).vtab.needFree" (field_expression "(pTemplate->u).vtab" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    sqlite3_free((pTemplate->u).btree.pIndex);\n    (pTemplate->u).vtab.needFree = '\0';\n  }" { (expression_statement "sqlite3_free((pTemplate->u).btree.pIndex);" (call_expression "sqlite3_free((pTemplate->u).btree.pIndex)" identifier (argument_list "((pTemplate->u).btree.pIndex)" ( (field_expression "(pTemplate->u).btree.pIndex" (field_expression "(pTemplate->u).btree" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) (expression_statement "(pTemplate->u).vtab.needFree = '\0';" (assignment_expression "(pTemplate->u).vtab.needFree = '\0'" (field_expression "(pTemplate->u).vtab.needFree" (field_expression "(pTemplate->u).vtab" (parenthesized_expression "(pTemplate->u)" ( (field_expression "pTemplate->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (return_statement "return iVar18;" return identifier ;) })))
(translation_unit "int FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)\n\n{\n  double dVar1;\n  longlong lVar2;\n  void *__s;\n  uint *puVar3;\n  int *piVar4;\n  int iVar5;\n  byte bVar6;\n  code *pcVar7;\n  short sVar8;\n  undefined1 uVar9;\n  short sVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  uint extraout_ECX;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  int unaff_EDI;\n  undefined8 uVar22;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar22 = FUN_000a94ff();\n  piVar11 = (int *)uVar22;\n  iVar16 = piVar11[1];\n  __s = (void *)param_4[4];\n  puVar3 = (uint *)piVar11[3];\n  piVar4 = *(int **)*piVar11;\n  iVar5 = ((undefined4 *)*piVar11)[1];\n  uVar20 = puVar3[4];\n  uVar17 = *param_4;\n  *param_6 = 0;\n  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);\n  puVar3[1] = extraout_ECX;\n  uVar19 = param_4[1];\n  if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar17 << 3);\n  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);\n  param_4[6] = 0;\n  param_4[5] = 0;\n  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;\n  param_4[8] = 0;\n  *(undefined8 *)(param_4 + 9) = uVar22;\n  param_4[0xb] = 0x19;\n  param_4[0xc] = 0;\n  param_4[0xd] = 0;\n  iVar14 = *piVar4;\n  uVar19 = *(uint *)(iVar13 + 0x40);\n  iVar12 = *(int *)(iVar13 + 0x18);\n  param_4[0xe] = *(uint *)(iVar13 + 0x3c);\n  param_4[0xf] = uVar19;\n  piVar11 = *(int **)(iVar12 + 0x40);\n  while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }\n  piVar11 = (int *)piVar11[2];\n  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);\n  if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }\n  sqlite3_free(piVar11[2]);\n  piVar11[2] = 0;\n  if (iVar14 != 0) goto LAB_0003e064;\n  if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }\nLAB_0003de32:\n  uVar17 = param_4[8];\n  puVar3[6] = param_4[5];\n  *(char *)(puVar3 + 7) = (char)param_4[7];\n  param_4[7] = 0;\n  puVar3[8] = param_4[6];\n  uVar9 = 0;\n  if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }\n  dVar1 = *(double *)(param_4 + 9);\n  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;\n  sVar10 = 0;\n  *(undefined2 *)((int)puVar3 + 0x12) = 0;\n  if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar17 = param_4[0xc];\n  *(short *)(puVar3 + 5) = sVar10;\n  uVar19 = param_4[0xb];\n  if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }\n  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;\n  uVar17 = puVar3[9] | 0x1000;\n  if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }\n  puVar3[9] = uVar17;\n  iVar16 = FUN_0002fed0();\n  if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }\n  return iVar16;\n}\n\n" (function_definition "int FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)\n\n{\n  double dVar1;\n  longlong lVar2;\n  void *__s;\n  uint *puVar3;\n  int *piVar4;\n  int iVar5;\n  byte bVar6;\n  code *pcVar7;\n  short sVar8;\n  undefined1 uVar9;\n  short sVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  uint extraout_ECX;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  int unaff_EDI;\n  undefined8 uVar22;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar22 = FUN_000a94ff();\n  piVar11 = (int *)uVar22;\n  iVar16 = piVar11[1];\n  __s = (void *)param_4[4];\n  puVar3 = (uint *)piVar11[3];\n  piVar4 = *(int **)*piVar11;\n  iVar5 = ((undefined4 *)*piVar11)[1];\n  uVar20 = puVar3[4];\n  uVar17 = *param_4;\n  *param_6 = 0;\n  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);\n  puVar3[1] = extraout_ECX;\n  uVar19 = param_4[1];\n  if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar17 << 3);\n  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);\n  param_4[6] = 0;\n  param_4[5] = 0;\n  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;\n  param_4[8] = 0;\n  *(undefined8 *)(param_4 + 9) = uVar22;\n  param_4[0xb] = 0x19;\n  param_4[0xc] = 0;\n  param_4[0xd] = 0;\n  iVar14 = *piVar4;\n  uVar19 = *(uint *)(iVar13 + 0x40);\n  iVar12 = *(int *)(iVar13 + 0x18);\n  param_4[0xe] = *(uint *)(iVar13 + 0x3c);\n  param_4[0xf] = uVar19;\n  piVar11 = *(int **)(iVar12 + 0x40);\n  while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }\n  piVar11 = (int *)piVar11[2];\n  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);\n  if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }\n  sqlite3_free(piVar11[2]);\n  piVar11[2] = 0;\n  if (iVar14 != 0) goto LAB_0003e064;\n  if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }\nLAB_0003de32:\n  uVar17 = param_4[8];\n  puVar3[6] = param_4[5];\n  *(char *)(puVar3 + 7) = (char)param_4[7];\n  param_4[7] = 0;\n  puVar3[8] = param_4[6];\n  uVar9 = 0;\n  if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }\n  dVar1 = *(double *)(param_4 + 9);\n  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;\n  sVar10 = 0;\n  *(undefined2 *)((int)puVar3 + 0x12) = 0;\n  if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar17 = param_4[0xc];\n  *(short *)(puVar3 + 5) = sVar10;\n  uVar19 = param_4[0xb];\n  if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }\n  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;\n  uVar17 = puVar3[9] | 0x1000;\n  if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }\n  puVar3[9] = uVar17;\n  iVar16 = FUN_0002fed0();\n  if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }\n  return iVar16;\n}" primitive_type (function_declarator "FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)" identifier (parameter_list "(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "ushort param_3" type_identifier identifier) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "ushort param_5" type_identifier identifier) , (parameter_declaration "undefined4 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  double dVar1;\n  longlong lVar2;\n  void *__s;\n  uint *puVar3;\n  int *piVar4;\n  int iVar5;\n  byte bVar6;\n  code *pcVar7;\n  short sVar8;\n  undefined1 uVar9;\n  short sVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  uint extraout_ECX;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  int unaff_EDI;\n  undefined8 uVar22;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar22 = FUN_000a94ff();\n  piVar11 = (int *)uVar22;\n  iVar16 = piVar11[1];\n  __s = (void *)param_4[4];\n  puVar3 = (uint *)piVar11[3];\n  piVar4 = *(int **)*piVar11;\n  iVar5 = ((undefined4 *)*piVar11)[1];\n  uVar20 = puVar3[4];\n  uVar17 = *param_4;\n  *param_6 = 0;\n  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);\n  puVar3[1] = extraout_ECX;\n  uVar19 = param_4[1];\n  if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar17 << 3);\n  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);\n  param_4[6] = 0;\n  param_4[5] = 0;\n  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;\n  param_4[8] = 0;\n  *(undefined8 *)(param_4 + 9) = uVar22;\n  param_4[0xb] = 0x19;\n  param_4[0xc] = 0;\n  param_4[0xd] = 0;\n  iVar14 = *piVar4;\n  uVar19 = *(uint *)(iVar13 + 0x40);\n  iVar12 = *(int *)(iVar13 + 0x18);\n  param_4[0xe] = *(uint *)(iVar13 + 0x3c);\n  param_4[0xf] = uVar19;\n  piVar11 = *(int **)(iVar12 + 0x40);\n  while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }\n  piVar11 = (int *)piVar11[2];\n  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);\n  if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }\n  sqlite3_free(piVar11[2]);\n  piVar11[2] = 0;\n  if (iVar14 != 0) goto LAB_0003e064;\n  if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }\nLAB_0003de32:\n  uVar17 = param_4[8];\n  puVar3[6] = param_4[5];\n  *(char *)(puVar3 + 7) = (char)param_4[7];\n  param_4[7] = 0;\n  puVar3[8] = param_4[6];\n  uVar9 = 0;\n  if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }\n  dVar1 = *(double *)(param_4 + 9);\n  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;\n  sVar10 = 0;\n  *(undefined2 *)((int)puVar3 + 0x12) = 0;\n  if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar17 = param_4[0xc];\n  *(short *)(puVar3 + 5) = sVar10;\n  uVar19 = param_4[0xb];\n  if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }\n  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;\n  uVar17 = puVar3[9] | 0x1000;\n  if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }\n  puVar3[9] = uVar17;\n  iVar16 = FUN_0002fed0();\n  if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }\n  return iVar16;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "short sVar8;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined1 uVar9;" type_identifier identifier ;) (declaration "short sVar10;" (sized_type_specifier "short" short) identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar22;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int iStack_28;" primitive_type identifier ;) (expression_statement "uVar22 = FUN_000a94ff();" (assignment_expression "uVar22 = FUN_000a94ff()" identifier = (call_expression "FUN_000a94ff()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar11 = (int *)uVar22;" (assignment_expression "piVar11 = (int *)uVar22" identifier = (cast_expression "(int *)uVar22" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar16 = piVar11[1];" (assignment_expression "iVar16 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "__s = (void *)param_4[4];" (assignment_expression "__s = (void *)param_4[4]" identifier = (cast_expression "(void *)param_4[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[4]" identifier [ number_literal ]))) ;) (expression_statement "puVar3 = (uint *)piVar11[3];" (assignment_expression "puVar3 = (uint *)piVar11[3]" identifier = (cast_expression "(uint *)piVar11[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[3]" identifier [ number_literal ]))) ;) (expression_statement "piVar4 = *(int **)*piVar11;" (assignment_expression "piVar4 = *(int **)*piVar11" identifier = (pointer_expression "*(int **)*piVar11" * (cast_expression "(int **)*piVar11" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar11" * identifier)))) ;) (expression_statement "iVar5 = ((undefined4 *)*piVar11)[1];" (assignment_expression "iVar5 = ((undefined4 *)*piVar11)[1]" identifier = (subscript_expression "((undefined4 *)*piVar11)[1]" (parenthesized_expression "((undefined4 *)*piVar11)" ( (cast_expression "(undefined4 *)*piVar11" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier)) )) [ number_literal ])) ;) (expression_statement "uVar20 = puVar3[4];" (assignment_expression "uVar20 = puVar3[4]" identifier = (subscript_expression "puVar3[4]" identifier [ number_literal ])) ;) (expression_statement "uVar17 = *param_4;" (assignment_expression "uVar17 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) (expression_statement "*puVar3 = (uint)((ulonglong)uVar22 >> 0x20);" (assignment_expression "*puVar3 = (uint)((ulonglong)uVar22 >> 0x20)" (pointer_expression "*puVar3" * identifier) = (call_expression "(uint)((ulonglong)uVar22 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar22 >> 0x20)" ( (binary_expression "(ulonglong)uVar22 >> 0x20" (cast_expression "(ulonglong)uVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3[1] = extraout_ECX;" (assignment_expression "puVar3[1] = extraout_ECX" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar19 = param_4[1];" (assignment_expression "uVar19 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (if_statement "if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }" if (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }" { (expression_statement "iVar14 = *(int *)(iVar16 + 0x14);" (assignment_expression "iVar14 = *(int *)(iVar16 + 0x14)" identifier = (pointer_expression "*(int *)(iVar16 + 0x14)" * (cast_expression "(int *)(iVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x14)" ( (binary_expression "iVar16 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);" do (compound_statement "{\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    }" { (while_statement "while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }" { (expression_statement "*(undefined1 *)(uVar19 + 5) = 0;" (assignment_expression "*(undefined1 *)(uVar19 + 5) = 0" (pointer_expression "*(undefined1 *)(uVar19 + 5)" * (cast_expression "(undefined1 *)(uVar19 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 5)" ( (binary_expression "uVar19 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;" (assignment_expression "iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14" identifier = (binary_expression "*(int *)(uVar19 + 8) * 0x30 + iVar14" (binary_expression "*(int *)(uVar19 + 8) * 0x30" (pointer_expression "*(int *)(uVar19 + 8)" * (cast_expression "(int *)(uVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 8)" ( (binary_expression "uVar19 + 8" identifier + number_literal) )))) * number_literal) + identifier)) ;) (if_statement "if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;" if (parenthesized_expression "(((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0))" ( (binary_expression "((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)" (parenthesized_expression "((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0)" ( (binary_expression "(~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0" (binary_expression "(~param_2 & *(uint *)(iVar12 + 0x24)) != 0" (parenthesized_expression "(~param_2 & *(uint *)(iVar12 + 0x24))" ( (binary_expression "~param_2 & *(uint *)(iVar12 + 0x24)" (unary_expression "~param_2" ~ identifier) & (pointer_expression "*(uint *)(iVar12 + 0x24)" * (cast_expression "(uint *)(iVar12 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x24)" ( (binary_expression "iVar12 + 0x24" identifier + number_literal) ))))) )) != number_literal) || (binary_expression "(~param_1 & *(uint *)(iVar12 + 0x20)) != 0" (parenthesized_expression "(~param_1 & *(uint *)(iVar12 + 0x20))" ( (binary_expression "~param_1 & *(uint *)(iVar12 + 0x20)" (unary_expression "~param_1" ~ identifier) & (pointer_expression "*(uint *)(iVar12 + 0x20)" * (cast_expression "(uint *)(iVar12 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x20)" ( (binary_expression "iVar12 + 0x20" identifier + number_literal) ))))) )) != number_literal)) )) || (parenthesized_expression "((*(ushort *)(iVar12 + 0xc) & param_3) != 0)" ( (binary_expression "(*(ushort *)(iVar12 + 0xc) & param_3) != 0" (parenthesized_expression "(*(ushort *)(iVar12 + 0xc) & param_3)" ( (binary_expression "*(ushort *)(iVar12 + 0xc) & param_3" (pointer_expression "*(ushort *)(iVar12 + 0xc)" * (cast_expression "(ushort *)(iVar12 + 0xc)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) )))) & identifier) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*(undefined1 *)(uVar19 + 5) = 1;" (assignment_expression "*(undefined1 *)(uVar19 + 5) = 1" (pointer_expression "*(undefined1 *)(uVar19 + 5)" * (cast_expression "(undefined1 *)(uVar19 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 5)" ( (binary_expression "uVar19 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" identifier = (binary_expression "uVar19 + 0xc" identifier + number_literal)) ;) (if_statement "if (uVar17 == uVar21) goto LAB_0003dba8;" if (parenthesized_expression "(uVar17 == uVar21)" ( (binary_expression "uVar17 == uVar21" identifier == identifier) )) (goto_statement "goto LAB_0003dba8;" goto statement_identifier ;)) })) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" identifier = (binary_expression "uVar19 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != uVar21)" ( (binary_expression "uVar17 != uVar21" identifier != identifier) )) ;) })) (labeled_statement "LAB_0003dba8:\n  memset(__s,0,uVar17 << 3);" statement_identifier : (expression_statement "memset(__s,0,uVar17 << 3);" (call_expression "memset(__s,0,uVar17 << 3)" identifier (argument_list "(__s,0,uVar17 << 3)" ( identifier , number_literal , (binary_expression "uVar17 << 3" identifier << number_literal) ))) ;)) (expression_statement "uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);" (assignment_expression "uVar22 = *(undefined8 *)(unaff_EDI + 0x77777)" identifier = (pointer_expression "*(undefined8 *)(unaff_EDI + 0x77777)" * (cast_expression "(undefined8 *)(unaff_EDI + 0x77777)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x77777)" ( (binary_expression "unaff_EDI + 0x77777" identifier + number_literal) ))))) ;) (expression_statement "param_4[6] = 0;" (assignment_expression "param_4[6] = 0" (subscript_expression "param_4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[5] = 0;" (assignment_expression "param_4[5] = 0" (subscript_expression "param_4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;" (assignment_expression "iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5" identifier = (binary_expression "(uint)(byte)uVar20 * 0x44 + iVar5" (binary_expression "(uint)(byte)uVar20 * 0x44" (cast_expression "(uint)(byte)uVar20" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) * number_literal) + identifier)) ;) (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined8 *)(param_4 + 9) = uVar22;" (assignment_expression "*(undefined8 *)(param_4 + 9) = uVar22" (pointer_expression "*(undefined8 *)(param_4 + 9)" * (cast_expression "(undefined8 *)(param_4 + 9)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 9)" ( (binary_expression "param_4 + 9" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_4[0xb] = 0x19;" (assignment_expression "param_4[0xb] = 0x19" (subscript_expression "param_4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[0xc] = 0;" (assignment_expression "param_4[0xc] = 0" (subscript_expression "param_4[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[0xd] = 0;" (assignment_expression "param_4[0xd] = 0" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar14 = *piVar4;" (assignment_expression "iVar14 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "uVar19 = *(uint *)(iVar13 + 0x40);" (assignment_expression "uVar19 = *(uint *)(iVar13 + 0x40)" identifier = (pointer_expression "*(uint *)(iVar13 + 0x40)" * (cast_expression "(uint *)(iVar13 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x40)" ( (binary_expression "iVar13 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar13 + 0x18);" (assignment_expression "iVar12 = *(int *)(iVar13 + 0x18)" identifier = (pointer_expression "*(int *)(iVar13 + 0x18)" * (cast_expression "(int *)(iVar13 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x18)" ( (binary_expression "iVar13 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "param_4[0xe] = *(uint *)(iVar13 + 0x3c);" (assignment_expression "param_4[0xe] = *(uint *)(iVar13 + 0x3c)" (subscript_expression "param_4[0xe]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(iVar13 + 0x3c)" * (cast_expression "(uint *)(iVar13 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x3c)" ( (binary_expression "iVar13 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "param_4[0xf] = uVar19;" (assignment_expression "param_4[0xf] = uVar19" (subscript_expression "param_4[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar11 = *(int **)(iVar12 + 0x40);" (assignment_expression "piVar11 = *(int **)(iVar12 + 0x40)" identifier = (pointer_expression "*(int **)(iVar12 + 0x40)" * (cast_expression "(int **)(iVar12 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0x40)" ( (binary_expression "iVar12 + 0x40" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }" { (if_statement "if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }" { (expression_statement "pcVar7 = (code *)invalidInstructionException();" (assignment_expression "pcVar7 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar7)();" (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( ))) ;) })) (if_statement "if (iVar14 == *piVar11) break;" if (parenthesized_expression "(iVar14 == *piVar11)" ( (binary_expression "iVar14 == *piVar11" identifier == (pointer_expression "*piVar11" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "piVar11 = (int *)piVar11[6];" (assignment_expression "piVar11 = (int *)piVar11[6]" identifier = (cast_expression "(int *)piVar11[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[6]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar11 = (int *)piVar11[2];" (assignment_expression "piVar11 = (int *)piVar11[2]" identifier = (cast_expression "(int *)piVar11[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);" (assignment_expression "iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4)" identifier = (call_expression "(**(code **)(*piVar11 + 0xc))(piVar11,param_4)" (parenthesized_expression "(**(code **)(*piVar11 + 0xc))" ( (pointer_expression "**(code **)(*piVar11 + 0xc)" * (pointer_expression "*(code **)(*piVar11 + 0xc)" * (cast_expression "(code **)(*piVar11 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar11 + 0xc)" ( (binary_expression "*piVar11 + 0xc" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) )) (argument_list "(piVar11,param_4)" ( identifier , identifier )))) ;) (if_statement "if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }" if (parenthesized_expression "((iVar14 != 0) && (iVar14 != 0x13))" ( (binary_expression "(iVar14 != 0) && (iVar14 != 0x13)" (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar14 != 0x13)" ( (binary_expression "iVar14 != 0x13" identifier != number_literal) ))) )) (compound_statement "{\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }" { (if_statement "if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }" if (parenthesized_expression "(iVar14 == 7)" ( (binary_expression "iVar14 == 7" identifier == number_literal) )) (compound_statement "{\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }" { (if_statement "if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }" if (parenthesized_expression "((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0)" ( (binary_expression "(*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0" (parenthesized_expression "(*(uint *)(*piVar4 + 0x4c) & 0xffff00)" ( (binary_expression "*(uint *)(*piVar4 + 0x4c) & 0xffff00" (pointer_expression "*(uint *)(*piVar4 + 0x4c)" * (cast_expression "(uint *)(*piVar4 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + 0x4c)" ( (binary_expression "*piVar4 + 0x4c" (pointer_expression "*piVar4" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        FUN_0002e050();\n      }" { (expression_statement "FUN_0002e050();" (call_expression "FUN_0002e050()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" identifier (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 7;" return number_literal ;) })) (if_statement "if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }" if (parenthesized_expression "(piVar11[2] != 0)" ( (binary_expression "piVar11[2] != 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }" { (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2])" identifier (argument_list "(piVar4,unaff_EDI + 0x6c964,piVar11[2])" ( identifier , (binary_expression "unaff_EDI + 0x6c964" identifier + number_literal) , (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" identifier (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return iVar14;" return identifier ;) })) (expression_statement "uVar18 = FUN_0002c4f0();" (assignment_expression "uVar18 = FUN_0002c4f0()" identifier = (call_expression "FUN_0002c4f0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18)" identifier (argument_list "(piVar4,unaff_EDI + 0x6c964,uVar18)" ( identifier , (binary_expression "unaff_EDI + 0x6c964" identifier + number_literal) , identifier ))) ;) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" identifier (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0003e064:\n    iVar16 = 0;" statement_identifier : (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;)) (if_statement "if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }" if (parenthesized_expression "(iVar14 != 0x13)" ( (binary_expression "iVar14 != 0x13" identifier != number_literal) )) (compound_statement "{\n      iVar16 = iVar14;\n    }" { (expression_statement "iVar16 = iVar14;" (assignment_expression "iVar16 = iVar14" identifier = identifier) ;) })) (return_statement "return iVar16;" return identifier ;) })) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" identifier (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar14 != 0) goto LAB_0003e064;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003e064;" goto statement_identifier ;)) (if_statement "if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" if (parenthesized_expression "((int)uVar17 < 1)" ( (binary_expression "(int)uVar17 < 1" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }" { (expression_statement "*(undefined2 *)((int)puVar3 + 0x1e) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x1e) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x1e)" * (cast_expression "(undefined2 *)((int)puVar3 + 0x1e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1e)" ( (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar3 + 10) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 10) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 10)" * (cast_expression "(undefined2 *)(puVar3 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 10)" ( (binary_expression "puVar3 + 10" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" else (compound_statement "{\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" { (expression_statement "piVar11 = (int *)puVar3[0xc];" (assignment_expression "piVar11 = (int *)puVar3[0xc]" identifier = (cast_expression "(int *)puVar3[0xc]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[0xc]" identifier [ number_literal ]))) ;) (expression_statement "piVar15 = piVar11;" (assignment_expression "piVar15 = piVar11" identifier = identifier) ;) (do_statement "do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);" do (compound_statement "{\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    }" { (expression_statement "*piVar15 = 0;" (assignment_expression "*piVar15 = 0" (pointer_expression "*piVar15" * identifier) = number_literal) ;) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" identifier = (binary_expression "piVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar11 + uVar17 != piVar15)" ( (binary_expression "piVar11 + uVar17 != piVar15" (binary_expression "piVar11 + uVar17" identifier + identifier) != identifier) )) ;) (expression_statement "uVar19 = param_4[1];" (assignment_expression "uVar19 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined2 *)((int)puVar3 + 0x1e) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x1e) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x1e)" * (cast_expression "(undefined2 *)((int)puVar3 + 0x1e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1e)" ( (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" identifier = number_literal) ;) (expression_statement "local_50 = -1;" (assignment_expression "local_50 = -1" identifier = number_literal) ;) (do_statement "do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);" do (compound_statement "{\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    }" { (expression_statement "iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;" (assignment_expression "iVar14 = *(int *)((int)__s + uVar21 * 8) + -1" identifier = (binary_expression "*(int *)((int)__s + uVar21 * 8) + -1" (pointer_expression "*(int *)((int)__s + uVar21 * 8)" * (cast_expression "(int *)((int)__s + uVar21 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar21 * 8)" ( (binary_expression "(int)__s + uVar21 * 8" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar21 * 8" identifier * number_literal)) )))) + number_literal)) ;) (if_statement "if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }" if (parenthesized_expression "(-1 < iVar14)" ( (binary_expression "-1 < iVar14" number_literal < identifier) )) (compound_statement "{\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }" { (expression_statement "iVar12 = *(int *)(uVar19 + 8);" (assignment_expression "iVar12 = *(int *)(uVar19 + 8)" identifier = (pointer_expression "*(int *)(uVar19 + 8)" * (cast_expression "(int *)(uVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 8)" ( (binary_expression "uVar19 + 8" identifier + number_literal) ))))) ;) (if_statement "if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;" if (parenthesized_expression "(((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0'))))" ( (binary_expression "((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))" (parenthesized_expression "((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12))" ( (binary_expression "(((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)" (parenthesized_expression "(((int)uVar17 <= iVar14) || (iVar12 < 0))" ( (binary_expression "((int)uVar17 <= iVar14) || (iVar12 < 0)" (parenthesized_expression "((int)uVar17 <= iVar14)" ( (binary_expression "(int)uVar17 <= iVar14" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) || (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar16 + 0xc) <= iVar12)" ( (binary_expression "*(int *)(iVar16 + 0xc) <= iVar12" (pointer_expression "*(int *)(iVar16 + 0xc)" * (cast_expression "(int *)(iVar16 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0xc)" ( (binary_expression "iVar16 + 0xc" identifier + number_literal) )))) <= identifier) ))) )) || (parenthesized_expression "((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))" ( (parenthesized_expression "(piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0'))" ( (binary_expression "piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')" (binary_expression "piVar11[iVar14] != 0" (subscript_expression "piVar11[iVar14]" identifier [ identifier ]) != number_literal) || (parenthesized_expression "(*(char *)(uVar19 + 5) == '\0')" ( (binary_expression "*(char *)(uVar19 + 5) == '\0'" (pointer_expression "*(char *)(uVar19 + 5)" * (cast_expression "(char *)(uVar19 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar19 + 5)" ( (binary_expression "uVar19 + 5" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (goto_statement "goto LAB_0003dfb0;" goto statement_identifier ;)) (expression_statement "iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);" (assignment_expression "iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14)" identifier = (binary_expression "iVar12 * 0x30 + *(int *)(iVar16 + 0x14)" (binary_expression "iVar12 * 0x30" identifier * number_literal) + (pointer_expression "*(int *)(iVar16 + 0x14)" * (cast_expression "(int *)(iVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x14)" ( (binary_expression "iVar16 + 0x14" identifier + number_literal) )))))) ;) (expression_statement "*puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);" (assignment_expression "*puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20)" (pointer_expression "*puVar3" * identifier) = (binary_expression "*puVar3 | *(uint *)(iVar12 + 0x20)" (pointer_expression "*puVar3" * identifier) | (pointer_expression "*(uint *)(iVar12 + 0x20)" * (cast_expression "(uint *)(iVar12 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x20)" ( (binary_expression "iVar12 + 0x20" identifier + number_literal) )))))) ;) (expression_statement "puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);" (assignment_expression "puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (binary_expression "puVar3[1] | *(uint *)(iVar12 + 0x24)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) | (pointer_expression "*(uint *)(iVar12 + 0x24)" * (cast_expression "(uint *)(iVar12 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x24)" ( (binary_expression "iVar12 + 0x24" identifier + number_literal) )))))) ;) (expression_statement "piVar11[iVar14] = iVar12;" (assignment_expression "piVar11[iVar14] = iVar12" (subscript_expression "piVar11[iVar14]" identifier [ identifier ]) = identifier) ;) (if_statement "if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }" if (parenthesized_expression "(local_50 < iVar14)" ( (binary_expression "local_50 < iVar14" identifier < identifier) )) (compound_statement "{\n          local_50 = iVar14;\n        }" { (expression_statement "local_50 = iVar14;" (assignment_expression "local_50 = iVar14" identifier = identifier) ;) })) (if_statement "if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }" if (parenthesized_expression "(((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0))" ( (binary_expression "((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)" (parenthesized_expression "((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10))" ( (binary_expression "(*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)" (parenthesized_expression "(*(char *)((int)__s + uVar21 * 8 + 4) != '\0')" ( (binary_expression "*(char *)((int)__s + uVar21 * 8 + 4) != '\0'" (pointer_expression "*(char *)((int)__s + uVar21 * 8 + 4)" * (cast_expression "(char *)((int)__s + uVar21 * 8 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__s + uVar21 * 8 + 4)" ( (binary_expression "(int)__s + uVar21 * 8 + 4" (binary_expression "(int)__s + uVar21 * 8" (cast_expression "(int)__s" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar21 * 8" identifier * number_literal)) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((int)uVar21 < 0x10)" ( (binary_expression "(int)uVar21 < 0x10" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))) )) && (parenthesized_expression "((param_5 >> (uVar21 & 0x1f) & 1) == 0)" ( (binary_expression "(param_5 >> (uVar21 & 0x1f) & 1) == 0" (parenthesized_expression "(param_5 >> (uVar21 & 0x1f) & 1)" ( (binary_expression "param_5 >> (uVar21 & 0x1f) & 1" (binary_expression "param_5 >> (uVar21 & 0x1f)" identifier >> (parenthesized_expression "(uVar21 & 0x1f)" ( (binary_expression "uVar21 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }" { (expression_statement "*(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));" (assignment_expression "*(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f))" (pointer_expression "*(ushort *)((int)puVar3 + 0x1e)" * (cast_expression "(ushort *)((int)puVar3 + 0x1e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1e)" ( (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f))" (pointer_expression "*(ushort *)((int)puVar3 + 0x1e)" * (cast_expression "(ushort *)((int)puVar3 + 0x1e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1e)" ( (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | (call_expression "(ushort)(1 << ((byte)iVar14 & 0x1f))" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(1 << ((byte)iVar14 & 0x1f))" ( (binary_expression "1 << ((byte)iVar14 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar14 & 0x1f)" ( (binary_expression "(byte)iVar14 & 0x1f" (cast_expression "(byte)iVar14" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) })) (if_statement "if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }" if (parenthesized_expression "((*(byte *)(iVar12 + 0xc) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar12 + 0xc) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar12 + 0xc) & 1)" ( (binary_expression "*(byte *)(iVar12 + 0xc) & 1" (pointer_expression "*(byte *)(iVar12 + 0xc)" * (cast_expression "(byte *)(iVar12 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }" { (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[0xd] = param_4[0xd] & 0xfffffffe;" (assignment_expression "param_4[0xd] = param_4[0xd] & 0xfffffffe" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) = (binary_expression "param_4[0xd] & 0xfffffffe" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "*param_6 = 1;" (assignment_expression "*param_6 = 1" (pointer_expression "*param_6" * identifier) = number_literal) ;) })) })) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" identifier = (binary_expression "uVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" identifier = (binary_expression "uVar19 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != uVar21)" ( (binary_expression "uVar17 != uVar21" identifier != identifier) )) ;) (expression_statement "*(short *)(puVar3 + 10) = (short)local_50 + 1;" (assignment_expression "*(short *)(puVar3 + 10) = (short)local_50 + 1" (pointer_expression "*(short *)(puVar3 + 10)" * (cast_expression "(short *)(puVar3 + 10)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 10)" ( (binary_expression "puVar3 + 10" identifier + number_literal) )))) = (binary_expression "(short)local_50 + 1" (cast_expression "(short)local_50" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) (if_statement "if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }" if (parenthesized_expression "(local_50 != -1)" ( (binary_expression "local_50 != -1" identifier != number_literal) )) (compound_statement "{\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }" { (if_statement "if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }" if (parenthesized_expression "(*piVar11 != 0)" ( (binary_expression "*piVar11 != 0" (pointer_expression "*piVar11" * identifier) != number_literal) )) (compound_statement "{\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);" do (compound_statement "{\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        }" { (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (local_50 < iVar16) goto LAB_0003de32;" if (parenthesized_expression "(local_50 < iVar16)" ( (binary_expression "local_50 < iVar16" identifier < identifier) )) (goto_statement "goto LAB_0003de32;" goto statement_identifier ;)) }) while (parenthesized_expression "(piVar11[iVar16] != 0)" ( (binary_expression "piVar11[iVar16] != 0" (subscript_expression "piVar11[iVar16]" identifier [ identifier ]) != number_literal) )) ;) })) (labeled_statement "LAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));" statement_identifier : (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44))" identifier (argument_list "(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44))" ( identifier , (binary_expression "unaff_EDI + 0x6c937" identifier + number_literal) , (pointer_expression "**(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" * (pointer_expression "*(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" * (cast_expression "(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" ( (binary_expression "iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44" (binary_expression "iVar5 + 0x18" identifier + number_literal) + (binary_expression "(uint)(byte)uVar20 * 0x44" (cast_expression "(uint)(byte)uVar20" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier)) * number_literal)) ))))) ))) ;)) (return_statement "return 1;" return number_literal ;) })) }))) (labeled_statement "LAB_0003de32:\n  uVar17 = param_4[8];" statement_identifier : (expression_statement "uVar17 = param_4[8];" (assignment_expression "uVar17 = param_4[8]" identifier = (subscript_expression "param_4[8]" identifier [ number_literal ])) ;)) (expression_statement "puVar3[6] = param_4[5];" (assignment_expression "puVar3[6] = param_4[5]" (subscript_expression "puVar3[6]" identifier [ number_literal ]) = (subscript_expression "param_4[5]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(puVar3 + 7) = (char)param_4[7];" (assignment_expression "*(char *)(puVar3 + 7) = (char)param_4[7]" (pointer_expression "*(char *)(puVar3 + 7)" * (cast_expression "(char *)(puVar3 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 7)" ( (binary_expression "puVar3 + 7" identifier + number_literal) )))) = (cast_expression "(char)param_4[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_4[7]" identifier [ number_literal ]))) ;) (expression_statement "param_4[7] = 0;" (assignment_expression "param_4[7] = 0" (subscript_expression "param_4[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[8] = param_4[6];" (assignment_expression "puVar3[8] = param_4[6]" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = (subscript_expression "param_4[6]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar9 = (undefined1)param_4[2];\n  }" { (expression_statement "uVar9 = (undefined1)param_4[2];" (assignment_expression "uVar9 = (undefined1)param_4[2]" identifier = (cast_expression "(undefined1)param_4[2]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ]))) ;) })) (expression_statement "dVar1 = *(double *)(param_4 + 9);" (assignment_expression "dVar1 = *(double *)(param_4 + 9)" identifier = (pointer_expression "*(double *)(param_4 + 9)" * (cast_expression "(double *)(param_4 + 9)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 9)" ( (binary_expression "param_4 + 9" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar3 + 0x1d) = uVar9;" (assignment_expression "*(undefined1 *)((int)puVar3 + 0x1d) = uVar9" (pointer_expression "*(undefined1 *)((int)puVar3 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar3 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x1d)" ( (binary_expression "(int)puVar3 + 0x1d" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (expression_statement "*(undefined2 *)((int)puVar3 + 0x12) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x12) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x12)" * (cast_expression "(undefined2 *)((int)puVar3 + 0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x12)" ( (binary_expression "(int)puVar3 + 0x12" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }" if (parenthesized_expression "(1.0 < dVar1)" ( (binary_expression "1.0 < dVar1" number_literal < identifier) )) (compound_statement "{\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }" { (if_statement "if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" if (parenthesized_expression "((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1)" ( (binary_expression "(double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1" (cast_expression "(double)*(float *)(&DAT_0007770b + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_0007770b + unaff_EDI)" * (cast_expression "(float *)(&DAT_0007770b + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007770b + unaff_EDI)" ( (binary_expression "&DAT_0007770b + unaff_EDI" (pointer_expression "&DAT_0007770b" & identifier) + identifier) ))))) < identifier) )) (compound_statement "{\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }" { (expression_statement "sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;" (assignment_expression "sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10" identifier = (binary_expression "((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10" (parenthesized_expression "((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe)" ( (binary_expression "(ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe" (call_expression "(ushort)((ulonglong)dVar1 >> 0x34)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((ulonglong)dVar1 >> 0x34)" ( (binary_expression "(ulonglong)dVar1 >> 0x34" (cast_expression "(ulonglong)dVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) - number_literal) )) * number_literal)) ;) }) (else_clause "else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" else (compound_statement "{\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" { (if_statement "if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }" if (parenthesized_expression "((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1)" ( (binary_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1" (cast_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_000776d7 + unaff_EDI)" * (cast_expression "(float *)(&DAT_000776d7 + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000776d7 + unaff_EDI)" ( (binary_expression "&DAT_000776d7 + unaff_EDI" (pointer_expression "&DAT_000776d7" & identifier) + identifier) ))))) <= identifier) )) (compound_statement "{\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }" { (expression_statement "lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));" (assignment_expression "lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" identifier = (cast_expression "(longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" identifier (argument_list "(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" ( (binary_expression "dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI)" identifier - (cast_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(float *)(&DAT_000776d7 + unaff_EDI)" * (cast_expression "(float *)(&DAT_000776d7 + unaff_EDI)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000776d7 + unaff_EDI)" ( (binary_expression "&DAT_000776d7 + unaff_EDI" (pointer_expression "&DAT_000776d7" & identifier) + identifier) )))))) ))))) ;) (expression_statement "iStack_28 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iStack_28 = (int)((ulonglong)lVar2 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" identifier = (cast_expression "(undefined4)lVar2" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);" (assignment_expression "lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier = (call_expression "CONCAT44(iStack_28 + -0x80000000,local_2c)" identifier (argument_list "(iStack_28 + -0x80000000,local_2c)" ( (binary_expression "iStack_28 + -0x80000000" identifier + number_literal) , identifier )))) ;) }) (else_clause "else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }" else (compound_statement "{\n        lVar2 = (longlong)ROUND(dVar1);\n      }" { (expression_statement "lVar2 = (longlong)ROUND(dVar1);" (assignment_expression "lVar2 = (longlong)ROUND(dVar1)" identifier = (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier ))))) ;) }))) (expression_statement "uVar19 = (uint)((ulonglong)lVar2 >> 0x20);" (assignment_expression "uVar19 = (uint)((ulonglong)lVar2 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar17 = (uint)lVar2;" (assignment_expression "uVar17 = (uint)lVar2" identifier = (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" if (parenthesized_expression "((uVar19 == 0) && (uVar17 < 8))" ( (binary_expression "(uVar19 == 0) && (uVar17 < 8)" (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar17 < 8)" ( (binary_expression "uVar17 < 8" identifier < number_literal) ))) )) (compound_statement "{\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }" { (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar17 < 2) goto LAB_0003df0c;" if (parenthesized_expression "(uVar17 < 2)" ( (binary_expression "uVar17 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003df0c;" goto statement_identifier ;)) (expression_statement "sVar8 = 0x28;" (assignment_expression "sVar8 = 0x28" identifier = number_literal) ;) (do_statement "do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);" do (compound_statement "{\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        }" { (expression_statement "sVar10 = sVar8;" (assignment_expression "sVar10 = sVar8" identifier = identifier) ;) (expression_statement "uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;" (assignment_expression "uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f" identifier = (binary_expression "(int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f" (binary_expression "(int)((ulonglong)lVar2 >> 0x20) << 1" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) << number_literal) | (binary_expression "(uint)lVar2 >> 0x1f" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal))) ;) (expression_statement "uVar17 = (uint)lVar2 * 2;" (assignment_expression "uVar17 = (uint)lVar2 * 2" identifier = (binary_expression "(uint)lVar2 * 2" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "lVar2 = CONCAT44(uVar19,uVar17);" (assignment_expression "lVar2 = CONCAT44(uVar19,uVar17)" identifier = (call_expression "CONCAT44(uVar19,uVar17)" identifier (argument_list "(uVar19,uVar17)" ( identifier , identifier )))) ;) (if_statement "if (uVar19 != 0) break;" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "sVar8 = sVar10 + -10;" (assignment_expression "sVar8 = sVar10 + -10" identifier = (binary_expression "sVar10 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 < 8)" ( (binary_expression "uVar17 < 8" identifier < number_literal) )) ;) (expression_statement "sVar10 = sVar10 + -0x14;" (assignment_expression "sVar10 = sVar10 + -0x14" identifier = (binary_expression "sVar10 + -0x14" identifier + number_literal)) ;) }) (else_clause "else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" else (compound_statement "{\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" { (if_statement "if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }" { (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" { (for_statement "for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }" for ( ; (binary_expression "uVar17 >> uVar20 == 0" (binary_expression "uVar17 >> uVar20" identifier >> identifier) == number_literal) ; (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ) (compound_statement "{\n            }" { })) })) (expression_statement "uVar20 = (uVar20 ^ 0x1f) + 0x20;" (assignment_expression "uVar20 = (uVar20 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar20 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar20 ^ 0x1f)" ( (binary_expression "uVar20 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }) (else_clause "else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" else (compound_statement "{\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" { (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" { (for_statement "for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }" for ( ; (binary_expression "uVar19 >> uVar20 == 0" (binary_expression "uVar19 >> uVar20" identifier >> identifier) == number_literal) ; (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ) (compound_statement "{\n            }" { })) })) (expression_statement "uVar20 = uVar20 ^ 0x1f;" (assignment_expression "uVar20 = uVar20 ^ 0x1f" identifier = (binary_expression "uVar20 ^ 0x1f" identifier ^ number_literal)) ;) }))) (expression_statement "uVar20 = 0x3c - uVar20;" (assignment_expression "uVar20 = 0x3c - uVar20" identifier = (binary_expression "0x3c - uVar20" number_literal - identifier)) ;) (expression_statement "bVar6 = (byte)uVar20 & 0x1f;" (assignment_expression "bVar6 = (byte)uVar20 & 0x1f" identifier = (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;" (assignment_expression "uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6" identifier = (binary_expression "uVar17 >> bVar6 | uVar19 << 0x20 - bVar6" (binary_expression "uVar17 >> bVar6" identifier >> identifier) | (binary_expression "uVar19 << 0x20 - bVar6" identifier << (binary_expression "0x20 - bVar6" number_literal - identifier)))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }" { (expression_statement "uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);" (assignment_expression "uVar17 = uVar19 >> ((byte)uVar20 & 0x1f)" identifier = (binary_expression "uVar19 >> ((byte)uVar20 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "sVar10 = (short)uVar20 * 10 + 0x1e;" (assignment_expression "sVar10 = (short)uVar20 * 10 + 0x1e" identifier = (binary_expression "(short)uVar20 * 10 + 0x1e" (binary_expression "(short)uVar20 * 10" (cast_expression "(short)uVar20" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) }))) (expression_statement "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);" (assignment_expression "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" identifier = (binary_expression "sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" identifier + (pointer_expression "*(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" * (cast_expression "(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" ( (binary_expression "unaff_EDI + 0x73693 + (uVar17 & 7) * 2" (binary_expression "unaff_EDI + 0x73693" identifier + number_literal) + (binary_expression "(uVar17 & 7) * 2" (parenthesized_expression "(uVar17 & 7)" ( (binary_expression "uVar17 & 7" identifier & number_literal) )) * number_literal)) )))))) ;) }))) })) (labeled_statement "LAB_0003df0c:\n  uVar17 = param_4[0xc];" statement_identifier : (expression_statement "uVar17 = param_4[0xc];" (assignment_expression "uVar17 = param_4[0xc]" identifier = (subscript_expression "param_4[0xc]" identifier [ number_literal ])) ;)) (expression_statement "*(short *)(puVar3 + 5) = sVar10;" (assignment_expression "*(short *)(puVar3 + 5) = sVar10" (pointer_expression "*(short *)(puVar3 + 5)" * (cast_expression "(short *)(puVar3 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 5)" ( (binary_expression "puVar3 + 5" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = param_4[0xb];" (assignment_expression "uVar19 = param_4[0xb]" identifier = (subscript_expression "param_4[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" if (parenthesized_expression "((uVar17 == 0) && (uVar19 < 8))" ( (binary_expression "(uVar17 == 0) && (uVar19 < 8)" (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar19 < 8)" ( (binary_expression "uVar19 < 8" identifier < number_literal) ))) )) (compound_statement "{\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }" { (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar19 < 2) goto LAB_0003df5f;" if (parenthesized_expression "(uVar19 < 2)" ( (binary_expression "uVar19 < 2" identifier < number_literal) )) (goto_statement "goto LAB_0003df5f;" goto statement_identifier ;)) (expression_statement "sVar8 = 0x28;" (assignment_expression "sVar8 = 0x28" identifier = number_literal) ;) (do_statement "do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);" do (compound_statement "{\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    }" { (expression_statement "sVar10 = sVar8;" (assignment_expression "sVar10 = sVar8" identifier = identifier) ;) (expression_statement "uVar21 = uVar19 * 2;" (assignment_expression "uVar21 = uVar19 * 2" identifier = (binary_expression "uVar19 * 2" identifier * number_literal)) ;) (if_statement "if ((int)uVar19 < 0) break;" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = uVar21;" (assignment_expression "uVar19 = uVar21" identifier = identifier) ;) (expression_statement "sVar8 = sVar10 + -10;" (assignment_expression "sVar8 = sVar10 + -10" identifier = (binary_expression "sVar10 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar21 < 8)" ( (binary_expression "uVar21 < 8" identifier < number_literal) )) ;) (expression_statement "sVar10 = sVar10 + -0x14;" (assignment_expression "sVar10 = sVar10 + -0x14" identifier = (binary_expression "sVar10 + -0x14" identifier + number_literal)) ;) }) (else_clause "else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" else (compound_statement "{\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" { (if_statement "if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }" { (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" { (for_statement "for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }" for ( ; (binary_expression "uVar19 >> uVar20 == 0" (binary_expression "uVar19 >> uVar20" identifier >> identifier) == number_literal) ; (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (expression_statement "uVar20 = (uVar20 ^ 0x1f) + 0x20;" (assignment_expression "uVar20 = (uVar20 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar20 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar20 ^ 0x1f)" ( (binary_expression "uVar20 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }) (else_clause "else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" else (compound_statement "{\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" { (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" { (for_statement "for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }" for ( ; (binary_expression "uVar17 >> uVar20 == 0" (binary_expression "uVar17 >> uVar20" identifier >> identifier) == number_literal) ; (assignment_expression "uVar20 = uVar20 - 1" identifier = (binary_expression "uVar20 - 1" identifier - number_literal)) ) (compound_statement "{\n        }" { })) })) (expression_statement "uVar20 = uVar20 ^ 0x1f;" (assignment_expression "uVar20 = uVar20 ^ 0x1f" identifier = (binary_expression "uVar20 ^ 0x1f" identifier ^ number_literal)) ;) }))) (expression_statement "uVar20 = 0x3c - uVar20;" (assignment_expression "uVar20 = 0x3c - uVar20" identifier = (binary_expression "0x3c - uVar20" number_literal - identifier)) ;) (expression_statement "bVar6 = (byte)uVar20 & 0x1f;" (assignment_expression "bVar6 = (byte)uVar20 & 0x1f" identifier = (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;" (assignment_expression "uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6" identifier = (binary_expression "uVar19 >> bVar6 | uVar17 << 0x20 - bVar6" (binary_expression "uVar19 >> bVar6" identifier >> identifier) | (binary_expression "uVar17 << 0x20 - bVar6" identifier << (binary_expression "0x20 - bVar6" number_literal - identifier)))) ;) (if_statement "if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }" if (parenthesized_expression "((uVar20 & 0x20) != 0)" ( (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" ( (binary_expression "uVar20 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }" { (expression_statement "uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);" (assignment_expression "uVar21 = uVar17 >> ((byte)uVar20 & 0x1f)" identifier = (binary_expression "uVar17 >> ((byte)uVar20 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar20 & 0x1f)" ( (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "sVar10 = (short)uVar20 * 10 + 0x1e;" (assignment_expression "sVar10 = (short)uVar20 * 10 + 0x1e" identifier = (binary_expression "(short)uVar20 * 10 + 0x1e" (binary_expression "(short)uVar20 * 10" (cast_expression "(short)uVar20" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) }))) (expression_statement "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);" (assignment_expression "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" identifier = (binary_expression "sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" identifier + (pointer_expression "*(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" * (cast_expression "(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" ( (binary_expression "unaff_EDI + 0x73693 + (uVar21 & 7) * 2" (binary_expression "unaff_EDI + 0x73693" identifier + number_literal) + (binary_expression "(uVar21 & 7) * 2" (parenthesized_expression "(uVar21 & 7)" ( (binary_expression "uVar21 & 7" identifier & number_literal) )) * number_literal)) )))))) ;) (labeled_statement "LAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;" statement_identifier : (expression_statement "*(short *)((int)puVar3 + 0x16) = sVar10;" (assignment_expression "*(short *)((int)puVar3 + 0x16) = sVar10" (pointer_expression "*(short *)((int)puVar3 + 0x16)" * (cast_expression "(short *)((int)puVar3 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar3 + 0x16)" ( (binary_expression "(int)puVar3 + 0x16" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "uVar17 = puVar3[9] | 0x1000;" (assignment_expression "uVar17 = puVar3[9] | 0x1000" identifier = (binary_expression "puVar3[9] | 0x1000" (subscript_expression "puVar3[9]" identifier [ number_literal ]) | number_literal)) ;) (if_statement "if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }" if (parenthesized_expression "((param_4[0xd] & 1) == 0)" ( (binary_expression "(param_4[0xd] & 1) == 0" (parenthesized_expression "(param_4[0xd] & 1)" ( (binary_expression "param_4[0xd] & 1" (subscript_expression "param_4[0xd]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar17 = puVar3[9] & 0xffffefff;\n  }" { (expression_statement "uVar17 = puVar3[9] & 0xffffefff;" (assignment_expression "uVar17 = puVar3[9] & 0xffffefff" identifier = (binary_expression "puVar3[9] & 0xffffefff" (subscript_expression "puVar3[9]" identifier [ number_literal ]) & number_literal)) ;) })) (expression_statement "puVar3[9] = uVar17;" (assignment_expression "puVar3[9] = uVar17" (subscript_expression "puVar3[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar16 = FUN_0002fed0();" (assignment_expression "iVar16 = FUN_0002fed0()" identifier = (call_expression "FUN_0002fed0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }" if (parenthesized_expression "((char)puVar3[7] != '\0')" ( (binary_expression "(char)puVar3[7] != '\0'" (cast_expression "(char)puVar3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar3[7]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }" { (expression_statement "sqlite3_free(puVar3[8]);" (call_expression "sqlite3_free(puVar3[8])" identifier (argument_list "(puVar3[8])" ( (subscript_expression "puVar3[8]" identifier [ number_literal ]) ))) ;) (expression_statement "*(undefined1 *)(puVar3 + 7) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 7) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 7)" * (cast_expression "(undefined1 *)(puVar3 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 7)" ( (binary_expression "puVar3 + 7" identifier + number_literal) )))) = number_literal) ;) })) (return_statement "return iVar16;" 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 (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) 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 ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT) || (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT)) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & IDENT) )) != LIT) ))) )) (break_statement break ;)) (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 IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT << LIT) ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) * LIT) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) || (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ IDENT ]) != LIT) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != LIT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) * LIT)) ))))) ))) ;)) (return_statement return LIT ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) - LIT) )) * LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))))) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) << LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression IDENT << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) * LIT) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))))) ;) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (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) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression IDENT << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) * LIT) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)\n\n{\n  double dVar1;\n  longlong lVar2;\n  void *__s;\n  uint *puVar3;\n  int *piVar4;\n  int iVar5;\n  byte bVar6;\n  code *pcVar7;\n  short sVar8;\n  undefined1 uVar9;\n  short sVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  uint extraout_ECX;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  int unaff_EDI;\n  undefined8 uVar22;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar22 = FUN_000a94ff();\n  piVar11 = (int *)uVar22;\n  iVar16 = piVar11[1];\n  __s = (void *)param_4[4];\n  puVar3 = (uint *)piVar11[3];\n  piVar4 = *(int **)*piVar11;\n  iVar5 = ((undefined4 *)*piVar11)[1];\n  uVar20 = puVar3[4];\n  uVar17 = *param_4;\n  *param_6 = 0;\n  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);\n  puVar3[1] = extraout_ECX;\n  uVar19 = param_4[1];\n  if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar17 << 3);\n  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);\n  param_4[6] = 0;\n  param_4[5] = 0;\n  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;\n  param_4[8] = 0;\n  *(undefined8 *)(param_4 + 9) = uVar22;\n  param_4[0xb] = 0x19;\n  param_4[0xc] = 0;\n  param_4[0xd] = 0;\n  iVar14 = *piVar4;\n  uVar19 = *(uint *)(iVar13 + 0x40);\n  iVar12 = *(int *)(iVar13 + 0x18);\n  param_4[0xe] = *(uint *)(iVar13 + 0x3c);\n  param_4[0xf] = uVar19;\n  piVar11 = *(int **)(iVar12 + 0x40);\n  while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }\n  piVar11 = (int *)piVar11[2];\n  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);\n  if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }\n  sqlite3_free(piVar11[2]);\n  piVar11[2] = 0;\n  if (iVar14 != 0) goto LAB_0003e064;\n  if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }\nLAB_0003de32:\n  uVar17 = param_4[8];\n  puVar3[6] = param_4[5];\n  *(char *)(puVar3 + 7) = (char)param_4[7];\n  param_4[7] = 0;\n  puVar3[8] = param_4[6];\n  uVar9 = 0;\n  if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }\n  dVar1 = *(double *)(param_4 + 9);\n  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;\n  sVar10 = 0;\n  *(undefined2 *)((int)puVar3 + 0x12) = 0;\n  if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar17 = param_4[0xc];\n  *(short *)(puVar3 + 5) = sVar10;\n  uVar19 = param_4[0xb];\n  if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }\n  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;\n  uVar17 = puVar3[9] | 0x1000;\n  if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }\n  puVar3[9] = uVar17;\n  iVar16 = FUN_0002fed0();\n  if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }\n  return iVar16;\n}" (primitive_type "int") (function_declarator "FUN_0003dab0(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)" (identifier "FUN_0003dab0") (parameter_list "(uint param_1,uint param_2,ushort param_3,uint *param_4,ushort param_5,\n                undefined4 *param_6)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "ushort param_3" (type_identifier "ushort") (identifier "param_3")) (, ",") (parameter_declaration "uint *param_4" (type_identifier "uint") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "ushort param_5" (type_identifier "ushort") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 *param_6" (type_identifier "undefined4") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) () ")"))) (compound_statement "{\n  double dVar1;\n  longlong lVar2;\n  void *__s;\n  uint *puVar3;\n  int *piVar4;\n  int iVar5;\n  byte bVar6;\n  code *pcVar7;\n  short sVar8;\n  undefined1 uVar9;\n  short sVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  uint uVar17;\n  undefined4 uVar18;\n  uint extraout_ECX;\n  uint uVar19;\n  uint uVar20;\n  uint uVar21;\n  int unaff_EDI;\n  undefined8 uVar22;\n  int local_50;\n  undefined4 local_2c;\n  int iStack_28;\n  \n  uVar22 = FUN_000a94ff();\n  piVar11 = (int *)uVar22;\n  iVar16 = piVar11[1];\n  __s = (void *)param_4[4];\n  puVar3 = (uint *)piVar11[3];\n  piVar4 = *(int **)*piVar11;\n  iVar5 = ((undefined4 *)*piVar11)[1];\n  uVar20 = puVar3[4];\n  uVar17 = *param_4;\n  *param_6 = 0;\n  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);\n  puVar3[1] = extraout_ECX;\n  uVar19 = param_4[1];\n  if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }\nLAB_0003dba8:\n  memset(__s,0,uVar17 << 3);\n  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);\n  param_4[6] = 0;\n  param_4[5] = 0;\n  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;\n  param_4[8] = 0;\n  *(undefined8 *)(param_4 + 9) = uVar22;\n  param_4[0xb] = 0x19;\n  param_4[0xc] = 0;\n  param_4[0xd] = 0;\n  iVar14 = *piVar4;\n  uVar19 = *(uint *)(iVar13 + 0x40);\n  iVar12 = *(int *)(iVar13 + 0x18);\n  param_4[0xe] = *(uint *)(iVar13 + 0x3c);\n  param_4[0xf] = uVar19;\n  piVar11 = *(int **)(iVar12 + 0x40);\n  while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }\n  piVar11 = (int *)piVar11[2];\n  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);\n  if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }\n  sqlite3_free(piVar11[2]);\n  piVar11[2] = 0;\n  if (iVar14 != 0) goto LAB_0003e064;\n  if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }\nLAB_0003de32:\n  uVar17 = param_4[8];\n  puVar3[6] = param_4[5];\n  *(char *)(puVar3 + 7) = (char)param_4[7];\n  param_4[7] = 0;\n  puVar3[8] = param_4[6];\n  uVar9 = 0;\n  if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }\n  dVar1 = *(double *)(param_4 + 9);\n  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;\n  sVar10 = 0;\n  *(undefined2 *)((int)puVar3 + 0x12) = 0;\n  if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }\nLAB_0003df0c:\n  uVar17 = param_4[0xc];\n  *(short *)(puVar3 + 5) = sVar10;\n  uVar19 = param_4[0xb];\n  if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }\n  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);\nLAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;\n  uVar17 = puVar3[9] | 0x1000;\n  if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }\n  puVar3[9] = uVar17;\n  iVar16 = FUN_0002fed0();\n  if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }\n  return iVar16;\n}" ({ "{") (declaration "double dVar1;" (primitive_type "double") (identifier "dVar1") (; ";")) (declaration "longlong lVar2;" (type_identifier "longlong") (identifier "lVar2") (; ";")) (declaration "void *__s;" (primitive_type "void") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "short sVar8;" (sized_type_specifier "short" (short "short")) (identifier "sVar8") (; ";")) (declaration "undefined1 uVar9;" (type_identifier "undefined1") (identifier "uVar9") (; ";")) (declaration "short sVar10;" (sized_type_specifier "short" (short "short")) (identifier "sVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "undefined4 uVar18;" (type_identifier "undefined4") (identifier "uVar18") (; ";")) (declaration "uint extraout_ECX;" (type_identifier "uint") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined8 uVar22;" (type_identifier "undefined8") (identifier "uVar22") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "int iStack_28;" (primitive_type "int") (identifier "iStack_28") (; ";")) (expression_statement "uVar22 = FUN_000a94ff();" (assignment_expression "uVar22 = FUN_000a94ff()" (identifier "uVar22") (= "=") (call_expression "FUN_000a94ff()" (identifier "FUN_000a94ff") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar11 = (int *)uVar22;" (assignment_expression "piVar11 = (int *)uVar22" (identifier "piVar11") (= "=") (cast_expression "(int *)uVar22" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar22"))) (; ";")) (expression_statement "iVar16 = piVar11[1];" (assignment_expression "iVar16 = piVar11[1]" (identifier "iVar16") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "__s = (void *)param_4[4];" (assignment_expression "__s = (void *)param_4[4]" (identifier "__s") (= "=") (cast_expression "(void *)param_4[4]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[4]" (identifier "param_4") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "puVar3 = (uint *)piVar11[3];" (assignment_expression "puVar3 = (uint *)piVar11[3]" (identifier "puVar3") (= "=") (cast_expression "(uint *)piVar11[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "piVar4 = *(int **)*piVar11;" (assignment_expression "piVar4 = *(int **)*piVar11" (identifier "piVar4") (= "=") (pointer_expression "*(int **)*piVar11" (* "*") (cast_expression "(int **)*piVar11" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))))) (; ";")) (expression_statement "iVar5 = ((undefined4 *)*piVar11)[1];" (assignment_expression "iVar5 = ((undefined4 *)*piVar11)[1]" (identifier "iVar5") (= "=") (subscript_expression "((undefined4 *)*piVar11)[1]" (parenthesized_expression "((undefined4 *)*piVar11)" (( "(") (cast_expression "(undefined4 *)*piVar11" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar20 = puVar3[4];" (assignment_expression "uVar20 = puVar3[4]" (identifier "uVar20") (= "=") (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar17 = *param_4;" (assignment_expression "uVar17 = *param_4" (identifier "uVar17") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = (uint)((ulonglong)uVar22 >> 0x20);" (assignment_expression "*puVar3 = (uint)((ulonglong)uVar22 >> 0x20)" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (call_expression "(uint)((ulonglong)uVar22 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar22 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar22 >> 0x20" (cast_expression "(ulonglong)uVar22" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar22")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "puVar3[1] = extraout_ECX;" (assignment_expression "puVar3[1] = extraout_ECX" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "extraout_ECX")) (; ";")) (expression_statement "uVar19 = param_4[1];" (assignment_expression "uVar19 = param_4[1]" (identifier "uVar19") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (0 < (int)uVar17) {\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }" (if "if") (parenthesized_expression "(0 < (int)uVar17)" (( "(") (binary_expression "0 < (int)uVar17" (number_literal "0") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n    iVar14 = *(int *)(iVar16 + 0x14);\n    uVar21 = 0;\n    do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n  }" ({ "{") (expression_statement "iVar14 = *(int *)(iVar16 + 0x14);" (assignment_expression "iVar14 = *(int *)(iVar16 + 0x14)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(iVar16 + 0x14)" (* "*") (cast_expression "(int *)(iVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x14)" (( "(") (binary_expression "iVar16 + 0x14" (identifier "iVar16") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);" (do "do") (compound_statement "{\n      while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    }" ({ "{") (while_statement "while( true ) {\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        *(undefined1 *)(uVar19 + 5) = 0;\n        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;\n        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;\n        *(undefined1 *)(uVar19 + 5) = 1;\n        uVar21 = uVar21 + 1;\n        uVar19 = uVar19 + 0xc;\n        if (uVar17 == uVar21) goto LAB_0003dba8;\n      }" ({ "{") (expression_statement "*(undefined1 *)(uVar19 + 5) = 0;" (assignment_expression "*(undefined1 *)(uVar19 + 5) = 0" (pointer_expression "*(undefined1 *)(uVar19 + 5)" (* "*") (cast_expression "(undefined1 *)(uVar19 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar19 + 5)" (( "(") (binary_expression "uVar19 + 5" (identifier "uVar19") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;" (assignment_expression "iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14" (identifier "iVar12") (= "=") (binary_expression "*(int *)(uVar19 + 8) * 0x30 + iVar14" (binary_expression "*(int *)(uVar19 + 8) * 0x30" (pointer_expression "*(int *)(uVar19 + 8)" (* "*") (cast_expression "(int *)(uVar19 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar19 + 8)" (( "(") (binary_expression "uVar19 + 8" (identifier "uVar19") (+ "+") (number_literal "8")) () ")")))) (* "*") (number_literal "0x30")) (+ "+") (identifier "iVar14"))) (; ";")) (if_statement "if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;" (if "if") (parenthesized_expression "(((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0))" (( "(") (binary_expression "((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||\n           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)" (parenthesized_expression "((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0)" (( "(") (binary_expression "(~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||\n             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0" (binary_expression "(~param_2 & *(uint *)(iVar12 + 0x24)) != 0" (parenthesized_expression "(~param_2 & *(uint *)(iVar12 + 0x24))" (( "(") (binary_expression "~param_2 & *(uint *)(iVar12 + 0x24)" (unary_expression "~param_2" (~ "~") (identifier "param_2")) (& "&") (pointer_expression "*(uint *)(iVar12 + 0x24)" (* "*") (cast_expression "(uint *)(iVar12 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x24)" (( "(") (binary_expression "iVar12 + 0x24" (identifier "iVar12") (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(~param_1 & *(uint *)(iVar12 + 0x20)) != 0" (parenthesized_expression "(~param_1 & *(uint *)(iVar12 + 0x20))" (( "(") (binary_expression "~param_1 & *(uint *)(iVar12 + 0x20)" (unary_expression "~param_1" (~ "~") (identifier "param_1")) (& "&") (pointer_expression "*(uint *)(iVar12 + 0x20)" (* "*") (cast_expression "(uint *)(iVar12 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x20)" (( "(") (binary_expression "iVar12 + 0x20" (identifier "iVar12") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (!= "!=") (number_literal "0"))) () ")")) (|| "||") (parenthesized_expression "((*(ushort *)(iVar12 + 0xc) & param_3) != 0)" (( "(") (binary_expression "(*(ushort *)(iVar12 + 0xc) & param_3) != 0" (parenthesized_expression "(*(ushort *)(iVar12 + 0xc) & param_3)" (( "(") (binary_expression "*(ushort *)(iVar12 + 0xc) & param_3" (pointer_expression "*(ushort *)(iVar12 + 0xc)" (* "*") (cast_expression "(ushort *)(iVar12 + 0xc)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0xc)" (( "(") (binary_expression "iVar12 + 0xc" (identifier "iVar12") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (identifier "param_3")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(undefined1 *)(uVar19 + 5) = 1;" (assignment_expression "*(undefined1 *)(uVar19 + 5) = 1" (pointer_expression "*(undefined1 *)(uVar19 + 5)" (* "*") (cast_expression "(undefined1 *)(uVar19 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar19 + 5)" (( "(") (binary_expression "uVar19 + 5" (identifier "uVar19") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" (identifier "uVar21") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 0xc" (identifier "uVar19") (+ "+") (number_literal "0xc"))) (; ";")) (if_statement "if (uVar17 == uVar21) goto LAB_0003dba8;" (if "if") (parenthesized_expression "(uVar17 == uVar21)" (( "(") (binary_expression "uVar17 == uVar21" (identifier "uVar17") (== "==") (identifier "uVar21")) () ")")) (goto_statement "goto LAB_0003dba8;" (goto "goto") (statement_identifier "LAB_0003dba8") (; ";"))) (} "}"))) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" (identifier "uVar21") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 0xc" (identifier "uVar19") (+ "+") (number_literal "0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != uVar21)" (( "(") (binary_expression "uVar17 != uVar21" (identifier "uVar17") (!= "!=") (identifier "uVar21")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0003dba8:\n  memset(__s,0,uVar17 << 3);" (statement_identifier "LAB_0003dba8") (: ":") (expression_statement "memset(__s,0,uVar17 << 3);" (call_expression "memset(__s,0,uVar17 << 3)" (identifier "memset") (argument_list "(__s,0,uVar17 << 3)" (( "(") (identifier "__s") (, ",") (number_literal "0") (, ",") (binary_expression "uVar17 << 3" (identifier "uVar17") (<< "<<") (number_literal "3")) () ")"))) (; ";"))) (expression_statement "uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);" (assignment_expression "uVar22 = *(undefined8 *)(unaff_EDI + 0x77777)" (identifier "uVar22") (= "=") (pointer_expression "*(undefined8 *)(unaff_EDI + 0x77777)" (* "*") (cast_expression "(undefined8 *)(unaff_EDI + 0x77777)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x77777)" (( "(") (binary_expression "unaff_EDI + 0x77777" (identifier "unaff_EDI") (+ "+") (number_literal "0x77777")) () ")"))))) (; ";")) (expression_statement "param_4[6] = 0;" (assignment_expression "param_4[6] = 0" (subscript_expression "param_4[6]" (identifier "param_4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_4[5] = 0;" (assignment_expression "param_4[5] = 0" (subscript_expression "param_4[5]" (identifier "param_4") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;" (assignment_expression "iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5" (identifier "iVar13") (= "=") (binary_expression "(uint)(byte)uVar20 * 0x44 + iVar5" (binary_expression "(uint)(byte)uVar20 * 0x44" (cast_expression "(uint)(byte)uVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (* "*") (number_literal "0x44")) (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" (identifier "param_4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(param_4 + 9) = uVar22;" (assignment_expression "*(undefined8 *)(param_4 + 9) = uVar22" (pointer_expression "*(undefined8 *)(param_4 + 9)" (* "*") (cast_expression "(undefined8 *)(param_4 + 9)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 9)" (( "(") (binary_expression "param_4 + 9" (identifier "param_4") (+ "+") (number_literal "9")) () ")")))) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "param_4[0xb] = 0x19;" (assignment_expression "param_4[0xb] = 0x19" (subscript_expression "param_4[0xb]" (identifier "param_4") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0x19")) (; ";")) (expression_statement "param_4[0xc] = 0;" (assignment_expression "param_4[0xc] = 0" (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_4[0xd] = 0;" (assignment_expression "param_4[0xd] = 0" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = *piVar4;" (assignment_expression "iVar14 = *piVar4" (identifier "iVar14") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "uVar19 = *(uint *)(iVar13 + 0x40);" (assignment_expression "uVar19 = *(uint *)(iVar13 + 0x40)" (identifier "uVar19") (= "=") (pointer_expression "*(uint *)(iVar13 + 0x40)" (* "*") (cast_expression "(uint *)(iVar13 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x40)" (( "(") (binary_expression "iVar13 + 0x40" (identifier "iVar13") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "iVar12 = *(int *)(iVar13 + 0x18);" (assignment_expression "iVar12 = *(int *)(iVar13 + 0x18)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar13 + 0x18)" (* "*") (cast_expression "(int *)(iVar13 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x18)" (( "(") (binary_expression "iVar13 + 0x18" (identifier "iVar13") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "param_4[0xe] = *(uint *)(iVar13 + 0x3c);" (assignment_expression "param_4[0xe] = *(uint *)(iVar13 + 0x3c)" (subscript_expression "param_4[0xe]" (identifier "param_4") ([ "[") (number_literal "0xe") (] "]")) (= "=") (pointer_expression "*(uint *)(iVar13 + 0x3c)" (* "*") (cast_expression "(uint *)(iVar13 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x3c)" (( "(") (binary_expression "iVar13 + 0x3c" (identifier "iVar13") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "param_4[0xf] = uVar19;" (assignment_expression "param_4[0xf] = uVar19" (subscript_expression "param_4[0xf]" (identifier "param_4") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar19")) (; ";")) (expression_statement "piVar11 = *(int **)(iVar12 + 0x40);" (assignment_expression "piVar11 = *(int **)(iVar12 + 0x40)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)(iVar12 + 0x40)" (* "*") (cast_expression "(int **)(iVar12 + 0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0x40)" (( "(") (binary_expression "iVar12 + 0x40" (identifier "iVar12") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (while_statement "while( true ) {\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    if (iVar14 == *piVar11) break;\n    piVar11 = (int *)piVar11[6];\n  }" ({ "{") (if_statement "if (piVar11 == (int *)0x0) {\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }" (if "if") (parenthesized_expression "(piVar11 == (int *)0x0)" (( "(") (binary_expression "piVar11 == (int *)0x0" (identifier "piVar11") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }" ({ "{") (expression_statement "pcVar7 = (code *)invalidInstructionException();" (assignment_expression "pcVar7 = (code *)invalidInstructionException()" (identifier "pcVar7") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "(*pcVar7)();" (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar14 == *piVar11) break;" (if "if") (parenthesized_expression "(iVar14 == *piVar11)" (( "(") (binary_expression "iVar14 == *piVar11" (identifier "iVar14") (== "==") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar11 = (int *)piVar11[6];" (assignment_expression "piVar11 = (int *)piVar11[6]" (identifier "piVar11") (= "=") (cast_expression "(int *)piVar11[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[6]" (identifier "piVar11") ([ "[") (number_literal "6") (] "]")))) (; ";")) (} "}"))) (expression_statement "piVar11 = (int *)piVar11[2];" (assignment_expression "piVar11 = (int *)piVar11[2]" (identifier "piVar11") (= "=") (cast_expression "(int *)piVar11[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);" (assignment_expression "iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4)" (identifier "iVar14") (= "=") (call_expression "(**(code **)(*piVar11 + 0xc))(piVar11,param_4)" (parenthesized_expression "(**(code **)(*piVar11 + 0xc))" (( "(") (pointer_expression "**(code **)(*piVar11 + 0xc)" (* "*") (pointer_expression "*(code **)(*piVar11 + 0xc)" (* "*") (cast_expression "(code **)(*piVar11 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar11 + 0xc)" (( "(") (binary_expression "*piVar11 + 0xc" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(piVar11,param_4)" (( "(") (identifier "piVar11") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if ((iVar14 != 0) && (iVar14 != 0x13)) {\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }" (if "if") (parenthesized_expression "((iVar14 != 0) && (iVar14 != 0x13))" (( "(") (binary_expression "(iVar14 != 0) && (iVar14 != 0x13)" (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar14 != 0x13)" (( "(") (binary_expression "iVar14 != 0x13" (identifier "iVar14") (!= "!=") (number_literal "0x13")) () ")"))) () ")")) (compound_statement "{\n    if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }\n    if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }\n    uVar18 = FUN_0002c4f0();\n    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);\n    sqlite3_free(piVar11[2]);\n    piVar11[2] = 0;\nLAB_0003e064:\n    iVar16 = 0;\n    if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }\n    return iVar16;\n  }" ({ "{") (if_statement "if (iVar14 == 7) {\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }" (if "if") (parenthesized_expression "(iVar14 == 7)" (( "(") (binary_expression "iVar14 == 7" (identifier "iVar14") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return 7;\n    }" ({ "{") (if_statement "if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {\n        FUN_0002e050();\n      }" (if "if") (parenthesized_expression "((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0)" (( "(") (binary_expression "(*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0" (parenthesized_expression "(*(uint *)(*piVar4 + 0x4c) & 0xffff00)" (( "(") (binary_expression "*(uint *)(*piVar4 + 0x4c) & 0xffff00" (pointer_expression "*(uint *)(*piVar4 + 0x4c)" (* "*") (cast_expression "(uint *)(*piVar4 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar4 + 0x4c)" (( "(") (binary_expression "*piVar4 + 0x4c" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (number_literal "0x4c")) () ")")))) (& "&") (number_literal "0xffff00")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0002e050();\n      }" ({ "{") (expression_statement "FUN_0002e050();" (call_expression "FUN_0002e050()" (identifier "FUN_0002e050") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" (identifier "sqlite3_free") (argument_list "(piVar11[2])" (( "(") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (if_statement "if (piVar11[2] != 0) {\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }" (if "if") (parenthesized_expression "(piVar11[2] != 0)" (( "(") (binary_expression "piVar11[2] != 0" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);\n      sqlite3_free(piVar11[2]);\n      piVar11[2] = 0;\n      return iVar14;\n    }" ({ "{") (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2])" (identifier "FUN_0003c160") (argument_list "(piVar4,unaff_EDI + 0x6c964,piVar11[2])" (( "(") (identifier "piVar4") (, ",") (binary_expression "unaff_EDI + 0x6c964" (identifier "unaff_EDI") (+ "+") (number_literal "0x6c964")) (, ",") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" (identifier "sqlite3_free") (argument_list "(piVar11[2])" (( "(") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return iVar14;" (return "return") (identifier "iVar14") (; ";")) (} "}"))) (expression_statement "uVar18 = FUN_0002c4f0();" (assignment_expression "uVar18 = FUN_0002c4f0()" (identifier "uVar18") (= "=") (call_expression "FUN_0002c4f0()" (identifier "FUN_0002c4f0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18)" (identifier "FUN_0003c160") (argument_list "(piVar4,unaff_EDI + 0x6c964,uVar18)" (( "(") (identifier "piVar4") (, ",") (binary_expression "unaff_EDI + 0x6c964" (identifier "unaff_EDI") (+ "+") (number_literal "0x6c964")) (, ",") (identifier "uVar18") () ")"))) (; ";")) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" (identifier "sqlite3_free") (argument_list "(piVar11[2])" (( "(") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0003e064:\n    iVar16 = 0;" (statement_identifier "LAB_0003e064") (: ":") (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" (identifier "iVar16") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (iVar14 != 0x13) {\n      iVar16 = iVar14;\n    }" (if "if") (parenthesized_expression "(iVar14 != 0x13)" (( "(") (binary_expression "iVar14 != 0x13" (identifier "iVar14") (!= "!=") (number_literal "0x13")) () ")")) (compound_statement "{\n      iVar16 = iVar14;\n    }" ({ "{") (expression_statement "iVar16 = iVar14;" (assignment_expression "iVar16 = iVar14" (identifier "iVar16") (= "=") (identifier "iVar14")) (; ";")) (} "}"))) (return_statement "return iVar16;" (return "return") (identifier "iVar16") (; ";")) (} "}"))) (expression_statement "sqlite3_free(piVar11[2]);" (call_expression "sqlite3_free(piVar11[2])" (identifier "sqlite3_free") (argument_list "(piVar11[2])" (( "(") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "piVar11[2] = 0;" (assignment_expression "piVar11[2] = 0" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar14 != 0) goto LAB_0003e064;" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003e064;" (goto "goto") (statement_identifier "LAB_0003e064") (; ";"))) (if_statement "if ((int)uVar17 < 1) {\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }\n  else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" (if "if") (parenthesized_expression "((int)uVar17 < 1)" (( "(") (binary_expression "(int)uVar17 < 1" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    *(undefined2 *)(puVar3 + 10) = 0;\n  }" ({ "{") (expression_statement "*(undefined2 *)((int)puVar3 + 0x1e) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x1e) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x1e)" (* "*") (cast_expression "(undefined2 *)((int)puVar3 + 0x1e)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar3 + 0x1e)" (( "(") (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x1e")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar3 + 10) = 0;" (assignment_expression "*(undefined2 *)(puVar3 + 10) = 0" (pointer_expression "*(undefined2 *)(puVar3 + 10)" (* "*") (cast_expression "(undefined2 *)(puVar3 + 10)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 10)" (( "(") (binary_expression "puVar3 + 10" (identifier "puVar3") (+ "+") (number_literal "10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" (else "else") (compound_statement "{\n    piVar11 = (int *)puVar3[0xc];\n    piVar15 = piVar11;\n    do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);\n    uVar19 = param_4[1];\n    *(undefined2 *)((int)puVar3 + 0x1e) = 0;\n    uVar21 = 0;\n    local_50 = -1;\n    do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);\n    *(short *)(puVar3 + 10) = (short)local_50 + 1;\n    if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }\n  }" ({ "{") (expression_statement "piVar11 = (int *)puVar3[0xc];" (assignment_expression "piVar11 = (int *)puVar3[0xc]" (identifier "piVar11") (= "=") (cast_expression "(int *)puVar3[0xc]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar3[0xc]" (identifier "puVar3") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (expression_statement "piVar15 = piVar11;" (assignment_expression "piVar15 = piVar11" (identifier "piVar15") (= "=") (identifier "piVar11")) (; ";")) (do_statement "do {\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    } while (piVar11 + uVar17 != piVar15);" (do "do") (compound_statement "{\n      *piVar15 = 0;\n      piVar15 = piVar15 + 1;\n    }" ({ "{") (expression_statement "*piVar15 = 0;" (assignment_expression "*piVar15 = 0" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" (identifier "piVar15") (= "=") (binary_expression "piVar15 + 1" (identifier "piVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar11 + uVar17 != piVar15)" (( "(") (binary_expression "piVar11 + uVar17 != piVar15" (binary_expression "piVar11 + uVar17" (identifier "piVar11") (+ "+") (identifier "uVar17")) (!= "!=") (identifier "piVar15")) () ")")) (; ";")) (expression_statement "uVar19 = param_4[1];" (assignment_expression "uVar19 = param_4[1]" (identifier "uVar19") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined2 *)((int)puVar3 + 0x1e) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x1e) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x1e)" (* "*") (cast_expression "(undefined2 *)((int)puVar3 + 0x1e)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar3 + 0x1e)" (( "(") (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x1e")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar21 = 0;" (assignment_expression "uVar21 = 0" (identifier "uVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50 = -1;" (assignment_expression "local_50 = -1" (identifier "local_50") (= "=") (number_literal "-1")) (; ";")) (do_statement "do {\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    } while (uVar17 != uVar21);" (do "do") (compound_statement "{\n      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;\n      if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }\n      uVar21 = uVar21 + 1;\n      uVar19 = uVar19 + 0xc;\n    }" ({ "{") (expression_statement "iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;" (assignment_expression "iVar14 = *(int *)((int)__s + uVar21 * 8) + -1" (identifier "iVar14") (= "=") (binary_expression "*(int *)((int)__s + uVar21 * 8) + -1" (pointer_expression "*(int *)((int)__s + uVar21 * 8)" (* "*") (cast_expression "(int *)((int)__s + uVar21 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + uVar21 * 8)" (( "(") (binary_expression "(int)__s + uVar21 * 8" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (binary_expression "uVar21 * 8" (identifier "uVar21") (* "*") (number_literal "8"))) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < iVar14) {\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }" (if "if") (parenthesized_expression "(-1 < iVar14)" (( "(") (binary_expression "-1 < iVar14" (number_literal "-1") (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n        iVar12 = *(int *)(uVar19 + 8);\n        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;\n        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);\n        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);\n        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);\n        piVar11[iVar14] = iVar12;\n        if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }\n        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }\n        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }\n      }" ({ "{") (expression_statement "iVar12 = *(int *)(uVar19 + 8);" (assignment_expression "iVar12 = *(int *)(uVar19 + 8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(uVar19 + 8)" (* "*") (cast_expression "(int *)(uVar19 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar19 + 8)" (( "(") (binary_expression "uVar19 + 8" (identifier "uVar19") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;" (if "if") (parenthesized_expression "(((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0'))))" (( "(") (binary_expression "((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||\n           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))" (parenthesized_expression "((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12))" (( "(") (binary_expression "(((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)" (parenthesized_expression "(((int)uVar17 <= iVar14) || (iVar12 < 0))" (( "(") (binary_expression "((int)uVar17 <= iVar14) || (iVar12 < 0)" (parenthesized_expression "((int)uVar17 <= iVar14)" (( "(") (binary_expression "(int)uVar17 <= iVar14" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (<= "<=") (identifier "iVar14")) () ")")) (|| "||") (parenthesized_expression "(iVar12 < 0)" (( "(") (binary_expression "iVar12 < 0" (identifier "iVar12") (< "<") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar16 + 0xc) <= iVar12)" (( "(") (binary_expression "*(int *)(iVar16 + 0xc) <= iVar12" (pointer_expression "*(int *)(iVar16 + 0xc)" (* "*") (cast_expression "(int *)(iVar16 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0xc)" (( "(") (binary_expression "iVar16 + 0xc" (identifier "iVar16") (+ "+") (number_literal "0xc")) () ")")))) (<= "<=") (identifier "iVar12")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))" (( "(") (parenthesized_expression "(piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0'))" (( "(") (binary_expression "piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')" (binary_expression "piVar11[iVar14] != 0" (subscript_expression "piVar11[iVar14]" (identifier "piVar11") ([ "[") (identifier "iVar14") (] "]")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(*(char *)(uVar19 + 5) == '\0')" (( "(") (binary_expression "*(char *)(uVar19 + 5) == '\0'" (pointer_expression "*(char *)(uVar19 + 5)" (* "*") (cast_expression "(char *)(uVar19 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar19 + 5)" (( "(") (binary_expression "uVar19 + 5" (identifier "uVar19") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0003dfb0;" (goto "goto") (statement_identifier "LAB_0003dfb0") (; ";"))) (expression_statement "iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);" (assignment_expression "iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14)" (identifier "iVar12") (= "=") (binary_expression "iVar12 * 0x30 + *(int *)(iVar16 + 0x14)" (binary_expression "iVar12 * 0x30" (identifier "iVar12") (* "*") (number_literal "0x30")) (+ "+") (pointer_expression "*(int *)(iVar16 + 0x14)" (* "*") (cast_expression "(int *)(iVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x14)" (( "(") (binary_expression "iVar16 + 0x14" (identifier "iVar16") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (expression_statement "*puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);" (assignment_expression "*puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20)" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (binary_expression "*puVar3 | *(uint *)(iVar12 + 0x20)" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (| "|") (pointer_expression "*(uint *)(iVar12 + 0x20)" (* "*") (cast_expression "(uint *)(iVar12 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x20)" (( "(") (binary_expression "iVar12 + 0x20" (identifier "iVar12") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (expression_statement "puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);" (assignment_expression "puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24)" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar3[1] | *(uint *)(iVar12 + 0x24)" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (| "|") (pointer_expression "*(uint *)(iVar12 + 0x24)" (* "*") (cast_expression "(uint *)(iVar12 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x24)" (( "(") (binary_expression "iVar12 + 0x24" (identifier "iVar12") (+ "+") (number_literal "0x24")) () ")")))))) (; ";")) (expression_statement "piVar11[iVar14] = iVar12;" (assignment_expression "piVar11[iVar14] = iVar12" (subscript_expression "piVar11[iVar14]" (identifier "piVar11") ([ "[") (identifier "iVar14") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (if_statement "if (local_50 < iVar14) {\n          local_50 = iVar14;\n        }" (if "if") (parenthesized_expression "(local_50 < iVar14)" (( "(") (binary_expression "local_50 < iVar14" (identifier "local_50") (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n          local_50 = iVar14;\n        }" ({ "{") (expression_statement "local_50 = iVar14;" (assignment_expression "local_50 = iVar14" (identifier "local_50") (= "=") (identifier "iVar14")) (; ";")) (} "}"))) (if_statement "if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }" (if "if") (parenthesized_expression "(((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0))" (( "(") (binary_expression "((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&\n           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)" (parenthesized_expression "((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10))" (( "(") (binary_expression "(*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)" (parenthesized_expression "(*(char *)((int)__s + uVar21 * 8 + 4) != '\0')" (( "(") (binary_expression "*(char *)((int)__s + uVar21 * 8 + 4) != '\0'" (pointer_expression "*(char *)((int)__s + uVar21 * 8 + 4)" (* "*") (cast_expression "(char *)((int)__s + uVar21 * 8 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__s + uVar21 * 8 + 4)" (( "(") (binary_expression "(int)__s + uVar21 * 8 + 4" (binary_expression "(int)__s + uVar21 * 8" (cast_expression "(int)__s" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__s")) (+ "+") (binary_expression "uVar21 * 8" (identifier "uVar21") (* "*") (number_literal "8"))) (+ "+") (number_literal "4")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((int)uVar21 < 0x10)" (( "(") (binary_expression "(int)uVar21 < 0x10" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "0x10")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((param_5 >> (uVar21 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(param_5 >> (uVar21 & 0x1f) & 1) == 0" (parenthesized_expression "(param_5 >> (uVar21 & 0x1f) & 1)" (( "(") (binary_expression "param_5 >> (uVar21 & 0x1f) & 1" (binary_expression "param_5 >> (uVar21 & 0x1f)" (identifier "param_5") (>> ">>") (parenthesized_expression "(uVar21 & 0x1f)" (( "(") (binary_expression "uVar21 & 0x1f" (identifier "uVar21") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          *(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));\n        }" ({ "{") (expression_statement "*(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));" (assignment_expression "*(ushort *)((int)puVar3 + 0x1e) =\n               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f))" (pointer_expression "*(ushort *)((int)puVar3 + 0x1e)" (* "*") (cast_expression "(ushort *)((int)puVar3 + 0x1e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar3 + 0x1e)" (( "(") (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x1e")) () ")")))) (= "=") (binary_expression "*(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f))" (pointer_expression "*(ushort *)((int)puVar3 + 0x1e)" (* "*") (cast_expression "(ushort *)((int)puVar3 + 0x1e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar3 + 0x1e)" (( "(") (binary_expression "(int)puVar3 + 0x1e" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x1e")) () ")")))) (| "|") (call_expression "(ushort)(1 << ((byte)iVar14 & 0x1f))" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(1 << ((byte)iVar14 & 0x1f))" (( "(") (binary_expression "1 << ((byte)iVar14 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)iVar14 & 0x1f)" (( "(") (binary_expression "(byte)iVar14 & 0x1f" (cast_expression "(byte)iVar14" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar14")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }" (if "if") (parenthesized_expression "((*(byte *)(iVar12 + 0xc) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar12 + 0xc) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar12 + 0xc) & 1)" (( "(") (binary_expression "*(byte *)(iVar12 + 0xc) & 1" (pointer_expression "*(byte *)(iVar12 + 0xc)" (* "*") (cast_expression "(byte *)(iVar12 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0xc)" (( "(") (binary_expression "iVar12 + 0xc" (identifier "iVar12") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          param_4[8] = 0;\n          param_4[0xd] = param_4[0xd] & 0xfffffffe;\n          *param_6 = 1;\n        }" ({ "{") (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" (identifier "param_4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_4[0xd] = param_4[0xd] & 0xfffffffe;" (assignment_expression "param_4[0xd] = param_4[0xd] & 0xfffffffe" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (binary_expression "param_4[0xd] & 0xfffffffe" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (& "&") (number_literal "0xfffffffe"))) (; ";")) (expression_statement "*param_6 = 1;" (assignment_expression "*param_6 = 1" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar21 = uVar21 + 1;" (assignment_expression "uVar21 = uVar21 + 1" (identifier "uVar21") (= "=") (binary_expression "uVar21 + 1" (identifier "uVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar19 = uVar19 + 0xc;" (assignment_expression "uVar19 = uVar19 + 0xc" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 0xc" (identifier "uVar19") (+ "+") (number_literal "0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != uVar21)" (( "(") (binary_expression "uVar17 != uVar21" (identifier "uVar17") (!= "!=") (identifier "uVar21")) () ")")) (; ";")) (expression_statement "*(short *)(puVar3 + 10) = (short)local_50 + 1;" (assignment_expression "*(short *)(puVar3 + 10) = (short)local_50 + 1" (pointer_expression "*(short *)(puVar3 + 10)" (* "*") (cast_expression "(short *)(puVar3 + 10)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 10)" (( "(") (binary_expression "puVar3 + 10" (identifier "puVar3") (+ "+") (number_literal "10")) () ")")))) (= "=") (binary_expression "(short)local_50 + 1" (cast_expression "(short)local_50" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_50")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_50 != -1) {\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }" (if "if") (parenthesized_expression "(local_50 != -1)" (( "(") (binary_expression "local_50 != -1" (identifier "local_50") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n      if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }\nLAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));\n      return 1;\n    }" ({ "{") (if_statement "if (*piVar11 != 0) {\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }" (if "if") (parenthesized_expression "(*piVar11 != 0)" (( "(") (binary_expression "*piVar11 != 0" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar16 = 0;\n        do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);\n      }" ({ "{") (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" (identifier "iVar16") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        } while (piVar11[iVar16] != 0);" (do "do") (compound_statement "{\n          iVar16 = iVar16 + 1;\n          if (local_50 < iVar16) goto LAB_0003de32;\n        }" ({ "{") (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_50 < iVar16) goto LAB_0003de32;" (if "if") (parenthesized_expression "(local_50 < iVar16)" (( "(") (binary_expression "local_50 < iVar16" (identifier "local_50") (< "<") (identifier "iVar16")) () ")")) (goto_statement "goto LAB_0003de32;" (goto "goto") (statement_identifier "LAB_0003de32") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(piVar11[iVar16] != 0)" (( "(") (binary_expression "piVar11[iVar16] != 0" (subscript_expression "piVar11[iVar16]" (identifier "piVar11") ([ "[") (identifier "iVar16") (] "]")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0003dfb0:\n      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));" (statement_identifier "LAB_0003dfb0") (: ":") (expression_statement "FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));" (call_expression "FUN_0003c160(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44))" (identifier "FUN_0003c160") (argument_list "(piVar4,unaff_EDI + 0x6c937,\n                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44))" (( "(") (identifier "piVar4") (, ",") (binary_expression "unaff_EDI + 0x6c937" (identifier "unaff_EDI") (+ "+") (number_literal "0x6c937")) (, ",") (pointer_expression "**(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" (* "*") (pointer_expression "*(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44)" (( "(") (binary_expression "iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44" (binary_expression "iVar5 + 0x18" (identifier "iVar5") (+ "+") (number_literal "0x18")) (+ "+") (binary_expression "(uint)(byte)uVar20 * 0x44" (cast_expression "(uint)(byte)uVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20"))) (* "*") (number_literal "0x44"))) () ")"))))) () ")"))) (; ";"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0003de32:\n  uVar17 = param_4[8];" (statement_identifier "LAB_0003de32") (: ":") (expression_statement "uVar17 = param_4[8];" (assignment_expression "uVar17 = param_4[8]" (identifier "uVar17") (= "=") (subscript_expression "param_4[8]" (identifier "param_4") ([ "[") (number_literal "8") (] "]"))) (; ";"))) (expression_statement "puVar3[6] = param_4[5];" (assignment_expression "puVar3[6] = param_4[5]" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_4[5]" (identifier "param_4") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "*(char *)(puVar3 + 7) = (char)param_4[7];" (assignment_expression "*(char *)(puVar3 + 7) = (char)param_4[7]" (pointer_expression "*(char *)(puVar3 + 7)" (* "*") (cast_expression "(char *)(puVar3 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 7)" (( "(") (binary_expression "puVar3 + 7" (identifier "puVar3") (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)param_4[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "param_4[7] = 0;" (assignment_expression "param_4[7] = 0" (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[8] = param_4[6];" (assignment_expression "puVar3[8] = param_4[6]" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "param_4[6]" (identifier "param_4") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar17 != 0) {\n    uVar9 = (undefined1)param_4[2];\n  }" (if "if") (parenthesized_expression "(uVar17 != 0)" (( "(") (binary_expression "uVar17 != 0" (identifier "uVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar9 = (undefined1)param_4[2];\n  }" ({ "{") (expression_statement "uVar9 = (undefined1)param_4[2];" (assignment_expression "uVar9 = (undefined1)param_4[2]" (identifier "uVar9") (= "=") (cast_expression "(undefined1)param_4[2]" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}"))) (expression_statement "dVar1 = *(double *)(param_4 + 9);" (assignment_expression "dVar1 = *(double *)(param_4 + 9)" (identifier "dVar1") (= "=") (pointer_expression "*(double *)(param_4 + 9)" (* "*") (cast_expression "(double *)(param_4 + 9)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 9)" (( "(") (binary_expression "param_4 + 9" (identifier "param_4") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar3 + 0x1d) = uVar9;" (assignment_expression "*(undefined1 *)((int)puVar3 + 0x1d) = uVar9" (pointer_expression "*(undefined1 *)((int)puVar3 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)puVar3 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar3 + 0x1d)" (( "(") (binary_expression "(int)puVar3 + 0x1d" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" (identifier "sVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)((int)puVar3 + 0x12) = 0;" (assignment_expression "*(undefined2 *)((int)puVar3 + 0x12) = 0" (pointer_expression "*(undefined2 *)((int)puVar3 + 0x12)" (* "*") (cast_expression "(undefined2 *)((int)puVar3 + 0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar3 + 0x12)" (( "(") (binary_expression "(int)puVar3 + 0x12" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x12")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (1.0 < dVar1) {\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }" (if "if") (parenthesized_expression "(1.0 < dVar1)" (( "(") (binary_expression "1.0 < dVar1" (number_literal "1.0") (< "<") (identifier "dVar1")) () ")")) (compound_statement "{\n    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }\n  }" ({ "{") (if_statement "if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }\n    else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" (if "if") (parenthesized_expression "((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1)" (( "(") (binary_expression "(double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1" (cast_expression "(double)*(float *)(&DAT_0007770b + unaff_EDI)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(&DAT_0007770b + unaff_EDI)" (* "*") (cast_expression "(float *)(&DAT_0007770b + unaff_EDI)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0007770b + unaff_EDI)" (( "(") (binary_expression "&DAT_0007770b + unaff_EDI" (pointer_expression "&DAT_0007770b" (& "&") (identifier "DAT_0007770b")) (+ "+") (identifier "unaff_EDI")) () ")"))))) (< "<") (identifier "dVar1")) () ")")) (compound_statement "{\n      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;\n    }" ({ "{") (expression_statement "sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;" (assignment_expression "sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10" (identifier "sVar10") (= "=") (binary_expression "((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10" (parenthesized_expression "((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe)" (( "(") (binary_expression "(ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe" (call_expression "(ushort)((ulonglong)dVar1 >> 0x34)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((ulonglong)dVar1 >> 0x34)" (( "(") (binary_expression "(ulonglong)dVar1 >> 0x34" (cast_expression "(ulonglong)dVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar1")) (>> ">>") (number_literal "0x34")) () ")"))) (- "-") (number_literal "0x3fe")) () ")")) (* "*") (number_literal "10"))) (; ";")) (} "}")) (else_clause "else {\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" (else "else") (compound_statement "{\n      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }\n      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);\n      uVar17 = (uint)lVar2;\n      if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }\n      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);\n    }" ({ "{") (if_statement "if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }\n      else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }" (if "if") (parenthesized_expression "((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1)" (( "(") (binary_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1" (cast_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(&DAT_000776d7 + unaff_EDI)" (* "*") (cast_expression "(float *)(&DAT_000776d7 + unaff_EDI)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000776d7 + unaff_EDI)" (( "(") (binary_expression "&DAT_000776d7 + unaff_EDI" (pointer_expression "&DAT_000776d7" (& "&") (identifier "DAT_000776d7")) (+ "+") (identifier "unaff_EDI")) () ")"))))) (<= "<=") (identifier "dVar1")) () ")")) (compound_statement "{\n        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));\n        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);\n        local_2c = (undefined4)lVar2;\n        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);\n      }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));" (assignment_expression "lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" (identifier "ROUND") (argument_list "(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI))" (( "(") (binary_expression "dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI)" (identifier "dVar1") (- "-") (cast_expression "(double)*(float *)(&DAT_000776d7 + unaff_EDI)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(float *)(&DAT_000776d7 + unaff_EDI)" (* "*") (cast_expression "(float *)(&DAT_000776d7 + unaff_EDI)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000776d7 + unaff_EDI)" (( "(") (binary_expression "&DAT_000776d7 + unaff_EDI" (pointer_expression "&DAT_000776d7" (& "&") (identifier "DAT_000776d7")) (+ "+") (identifier "unaff_EDI")) () ")")))))) () ")"))))) (; ";")) (expression_statement "iStack_28 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iStack_28 = (int)((ulonglong)lVar2 >> 0x20)" (identifier "iStack_28") (= "=") (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_2c = (undefined4)lVar2;" (assignment_expression "local_2c = (undefined4)lVar2" (identifier "local_2c") (= "=") (cast_expression "(undefined4)lVar2" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "lVar2"))) (; ";")) (expression_statement "lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);" (assignment_expression "lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c)" (identifier "lVar2") (= "=") (call_expression "CONCAT44(iStack_28 + -0x80000000,local_2c)" (identifier "CONCAT44") (argument_list "(iStack_28 + -0x80000000,local_2c)" (( "(") (binary_expression "iStack_28 + -0x80000000" (identifier "iStack_28") (+ "+") (number_literal "-0x80000000")) (, ",") (identifier "local_2c") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        lVar2 = (longlong)ROUND(dVar1);\n      }" (else "else") (compound_statement "{\n        lVar2 = (longlong)ROUND(dVar1);\n      }" ({ "{") (expression_statement "lVar2 = (longlong)ROUND(dVar1);" (assignment_expression "lVar2 = (longlong)ROUND(dVar1)" (identifier "lVar2") (= "=") (cast_expression "(longlong)ROUND(dVar1)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar1)" (identifier "ROUND") (argument_list "(dVar1)" (( "(") (identifier "dVar1") () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar19 = (uint)((ulonglong)lVar2 >> 0x20);" (assignment_expression "uVar19 = (uint)((ulonglong)lVar2 >> 0x20)" (identifier "uVar19") (= "=") (call_expression "(uint)((ulonglong)lVar2 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar17 = (uint)lVar2;" (assignment_expression "uVar17 = (uint)lVar2" (identifier "uVar17") (= "=") (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2"))) (; ";")) (if_statement "if ((uVar19 == 0) && (uVar17 < 8)) {\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }\n      else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" (if "if") (parenthesized_expression "((uVar19 == 0) && (uVar17 < 8))" (( "(") (binary_expression "(uVar19 == 0) && (uVar17 < 8)" (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar17 < 8)" (( "(") (binary_expression "uVar17 < 8" (identifier "uVar17") (< "<") (number_literal "8")) () ")"))) () ")")) (compound_statement "{\n        sVar10 = 0;\n        if (uVar17 < 2) goto LAB_0003df0c;\n        sVar8 = 0x28;\n        do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);\n        sVar10 = sVar10 + -0x14;\n      }" ({ "{") (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" (identifier "sVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar17 < 2) goto LAB_0003df0c;" (if "if") (parenthesized_expression "(uVar17 < 2)" (( "(") (binary_expression "uVar17 < 2" (identifier "uVar17") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_0003df0c;" (goto "goto") (statement_identifier "LAB_0003df0c") (; ";"))) (expression_statement "sVar8 = 0x28;" (assignment_expression "sVar8 = 0x28" (identifier "sVar8") (= "=") (number_literal "0x28")) (; ";")) (do_statement "do {\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        } while (uVar17 < 8);" (do "do") (compound_statement "{\n          sVar10 = sVar8;\n          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;\n          uVar17 = (uint)lVar2 * 2;\n          lVar2 = CONCAT44(uVar19,uVar17);\n          if (uVar19 != 0) break;\n          sVar8 = sVar10 + -10;\n        }" ({ "{") (expression_statement "sVar10 = sVar8;" (assignment_expression "sVar10 = sVar8" (identifier "sVar10") (= "=") (identifier "sVar8")) (; ";")) (expression_statement "uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;" (assignment_expression "uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f" (identifier "uVar19") (= "=") (binary_expression "(int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f" (binary_expression "(int)((ulonglong)lVar2 >> 0x20) << 1" (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")"))) (<< "<<") (number_literal "1")) (| "|") (binary_expression "(uint)lVar2 >> 0x1f" (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x1f")))) (; ";")) (expression_statement "uVar17 = (uint)lVar2 * 2;" (assignment_expression "uVar17 = (uint)lVar2 * 2" (identifier "uVar17") (= "=") (binary_expression "(uint)lVar2 * 2" (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2")) (* "*") (number_literal "2"))) (; ";")) (expression_statement "lVar2 = CONCAT44(uVar19,uVar17);" (assignment_expression "lVar2 = CONCAT44(uVar19,uVar17)" (identifier "lVar2") (= "=") (call_expression "CONCAT44(uVar19,uVar17)" (identifier "CONCAT44") (argument_list "(uVar19,uVar17)" (( "(") (identifier "uVar19") (, ",") (identifier "uVar17") () ")")))) (; ";")) (if_statement "if (uVar19 != 0) break;" (if "if") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "sVar8 = sVar10 + -10;" (assignment_expression "sVar8 = sVar10 + -10" (identifier "sVar8") (= "=") (binary_expression "sVar10 + -10" (identifier "sVar10") (+ "+") (number_literal "-10"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 < 8)" (( "(") (binary_expression "uVar17 < 8" (identifier "uVar17") (< "<") (number_literal "8")) () ")")) (; ";")) (expression_statement "sVar10 = sVar10 + -0x14;" (assignment_expression "sVar10 = sVar10 + -0x14" (identifier "sVar10") (= "=") (binary_expression "sVar10 + -0x14" (identifier "sVar10") (+ "+") (number_literal "-0x14"))) (; ";")) (} "}")) (else_clause "else {\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" (else "else") (compound_statement "{\n        if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }\n        uVar20 = 0x3c - uVar20;\n        bVar6 = (byte)uVar20 & 0x1f;\n        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;\n        if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }\n        sVar10 = (short)uVar20 * 10 + 0x1e;\n      }" ({ "{") (if_statement "if (uVar19 == 0) {\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }\n        else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar20 = 0x1f;\n          if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = (uVar20 ^ 0x1f) + 0x20;\n        }" ({ "{") (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" (identifier "uVar20") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (uVar17 != 0) {\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" (if "if") (parenthesized_expression "(uVar17 != 0)" (( "(") (binary_expression "uVar17 != 0" (identifier "uVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" ({ "{") (for_statement "for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }" (for "for") (( "(") (; ";") (binary_expression "uVar17 >> uVar20 == 0" (binary_expression "uVar17 >> uVar20" (identifier "uVar17") (>> ">>") (identifier "uVar20")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar20 = uVar20 - 1" (identifier "uVar20") (= "=") (binary_expression "uVar20 - 1" (identifier "uVar20") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n            }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar20 = (uVar20 ^ 0x1f) + 0x20;" (assignment_expression "uVar20 = (uVar20 ^ 0x1f) + 0x20" (identifier "uVar20") (= "=") (binary_expression "(uVar20 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar20 ^ 0x1f)" (( "(") (binary_expression "uVar20 ^ 0x1f" (identifier "uVar20") (^ "^") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")) (else_clause "else {\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" (else "else") (compound_statement "{\n          uVar20 = 0x1f;\n          if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }\n          uVar20 = uVar20 ^ 0x1f;\n        }" ({ "{") (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" (identifier "uVar20") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (uVar19 != 0) {\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" (if "if") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }\n          }" ({ "{") (for_statement "for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n            }" (for "for") (( "(") (; ";") (binary_expression "uVar19 >> uVar20 == 0" (binary_expression "uVar19 >> uVar20" (identifier "uVar19") (>> ">>") (identifier "uVar20")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar20 = uVar20 - 1" (identifier "uVar20") (= "=") (binary_expression "uVar20 - 1" (identifier "uVar20") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n            }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar20 = uVar20 ^ 0x1f;" (assignment_expression "uVar20 = uVar20 ^ 0x1f" (identifier "uVar20") (= "=") (binary_expression "uVar20 ^ 0x1f" (identifier "uVar20") (^ "^") (number_literal "0x1f"))) (; ";")) (} "}")))) (expression_statement "uVar20 = 0x3c - uVar20;" (assignment_expression "uVar20 = 0x3c - uVar20" (identifier "uVar20") (= "=") (binary_expression "0x3c - uVar20" (number_literal "0x3c") (- "-") (identifier "uVar20"))) (; ";")) (expression_statement "bVar6 = (byte)uVar20 & 0x1f;" (assignment_expression "bVar6 = (byte)uVar20 & 0x1f" (identifier "bVar6") (= "=") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;" (assignment_expression "uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6" (identifier "uVar17") (= "=") (binary_expression "uVar17 >> bVar6 | uVar19 << 0x20 - bVar6" (binary_expression "uVar17 >> bVar6" (identifier "uVar17") (>> ">>") (identifier "bVar6")) (| "|") (binary_expression "uVar19 << 0x20 - bVar6" (identifier "uVar19") (<< "<<") (binary_expression "0x20 - bVar6" (number_literal "0x20") (- "-") (identifier "bVar6"))))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);\n        }" ({ "{") (expression_statement "uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);" (assignment_expression "uVar17 = uVar19 >> ((byte)uVar20 & 0x1f)" (identifier "uVar17") (= "=") (binary_expression "uVar19 >> ((byte)uVar20 & 0x1f)" (identifier "uVar19") (>> ">>") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "sVar10 = (short)uVar20 * 10 + 0x1e;" (assignment_expression "sVar10 = (short)uVar20 * 10 + 0x1e" (identifier "sVar10") (= "=") (binary_expression "(short)uVar20 * 10 + 0x1e" (binary_expression "(short)uVar20 * 10" (cast_expression "(short)uVar20" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar20")) (* "*") (number_literal "10")) (+ "+") (number_literal "0x1e"))) (; ";")) (} "}")))) (expression_statement "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);" (assignment_expression "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" (identifier "sVar10") (= "=") (binary_expression "sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" (identifier "sVar10") (+ "+") (pointer_expression "*(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" (* "*") (cast_expression "(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x73693 + (uVar17 & 7) * 2)" (( "(") (binary_expression "unaff_EDI + 0x73693 + (uVar17 & 7) * 2" (binary_expression "unaff_EDI + 0x73693" (identifier "unaff_EDI") (+ "+") (number_literal "0x73693")) (+ "+") (binary_expression "(uVar17 & 7) * 2" (parenthesized_expression "(uVar17 & 7)" (( "(") (binary_expression "uVar17 & 7" (identifier "uVar17") (& "&") (number_literal "7")) () ")")) (* "*") (number_literal "2"))) () ")")))))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_0003df0c:\n  uVar17 = param_4[0xc];" (statement_identifier "LAB_0003df0c") (: ":") (expression_statement "uVar17 = param_4[0xc];" (assignment_expression "uVar17 = param_4[0xc]" (identifier "uVar17") (= "=") (subscript_expression "param_4[0xc]" (identifier "param_4") ([ "[") (number_literal "0xc") (] "]"))) (; ";"))) (expression_statement "*(short *)(puVar3 + 5) = sVar10;" (assignment_expression "*(short *)(puVar3 + 5) = sVar10" (pointer_expression "*(short *)(puVar3 + 5)" (* "*") (cast_expression "(short *)(puVar3 + 5)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 5)" (( "(") (binary_expression "puVar3 + 5" (identifier "puVar3") (+ "+") (number_literal "5")) () ")")))) (= "=") (identifier "sVar10")) (; ";")) (expression_statement "uVar19 = param_4[0xb];" (assignment_expression "uVar19 = param_4[0xb]" (identifier "uVar19") (= "=") (subscript_expression "param_4[0xb]" (identifier "param_4") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if ((uVar17 == 0) && (uVar19 < 8)) {\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }\n  else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" (if "if") (parenthesized_expression "((uVar17 == 0) && (uVar19 < 8))" (( "(") (binary_expression "(uVar17 == 0) && (uVar19 < 8)" (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar19 < 8)" (( "(") (binary_expression "uVar19 < 8" (identifier "uVar19") (< "<") (number_literal "8")) () ")"))) () ")")) (compound_statement "{\n    sVar10 = 0;\n    if (uVar19 < 2) goto LAB_0003df5f;\n    sVar8 = 0x28;\n    do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);\n    sVar10 = sVar10 + -0x14;\n  }" ({ "{") (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" (identifier "sVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar19 < 2) goto LAB_0003df5f;" (if "if") (parenthesized_expression "(uVar19 < 2)" (( "(") (binary_expression "uVar19 < 2" (identifier "uVar19") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_0003df5f;" (goto "goto") (statement_identifier "LAB_0003df5f") (; ";"))) (expression_statement "sVar8 = 0x28;" (assignment_expression "sVar8 = 0x28" (identifier "sVar8") (= "=") (number_literal "0x28")) (; ";")) (do_statement "do {\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    } while (uVar21 < 8);" (do "do") (compound_statement "{\n      sVar10 = sVar8;\n      uVar21 = uVar19 * 2;\n      if ((int)uVar19 < 0) break;\n      uVar19 = uVar21;\n      sVar8 = sVar10 + -10;\n    }" ({ "{") (expression_statement "sVar10 = sVar8;" (assignment_expression "sVar10 = sVar8" (identifier "sVar10") (= "=") (identifier "sVar8")) (; ";")) (expression_statement "uVar21 = uVar19 * 2;" (assignment_expression "uVar21 = uVar19 * 2" (identifier "uVar21") (= "=") (binary_expression "uVar19 * 2" (identifier "uVar19") (* "*") (number_literal "2"))) (; ";")) (if_statement "if ((int)uVar19 < 0) break;" (if "if") (parenthesized_expression "((int)uVar19 < 0)" (( "(") (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (< "<") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar19 = uVar21;" (assignment_expression "uVar19 = uVar21" (identifier "uVar19") (= "=") (identifier "uVar21")) (; ";")) (expression_statement "sVar8 = sVar10 + -10;" (assignment_expression "sVar8 = sVar10 + -10" (identifier "sVar8") (= "=") (binary_expression "sVar10 + -10" (identifier "sVar10") (+ "+") (number_literal "-10"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar21 < 8)" (( "(") (binary_expression "uVar21 < 8" (identifier "uVar21") (< "<") (number_literal "8")) () ")")) (; ";")) (expression_statement "sVar10 = sVar10 + -0x14;" (assignment_expression "sVar10 = sVar10 + -0x14" (identifier "sVar10") (= "=") (binary_expression "sVar10 + -0x14" (identifier "sVar10") (+ "+") (number_literal "-0x14"))) (; ";")) (} "}")) (else_clause "else {\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" (else "else") (compound_statement "{\n    if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }\n    uVar20 = 0x3c - uVar20;\n    bVar6 = (byte)uVar20 & 0x1f;\n    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;\n    if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }\n    sVar10 = (short)uVar20 * 10 + 0x1e;\n  }" ({ "{") (if_statement "if (uVar17 == 0) {\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }\n    else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar20 = 0x1f;\n      if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = (uVar20 ^ 0x1f) + 0x20;\n    }" ({ "{") (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" (identifier "uVar20") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (uVar19 != 0) {\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" (if "if") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" ({ "{") (for_statement "for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }" (for "for") (( "(") (; ";") (binary_expression "uVar19 >> uVar20 == 0" (binary_expression "uVar19 >> uVar20" (identifier "uVar19") (>> ">>") (identifier "uVar20")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar20 = uVar20 - 1" (identifier "uVar20") (= "=") (binary_expression "uVar20 - 1" (identifier "uVar20") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar20 = (uVar20 ^ 0x1f) + 0x20;" (assignment_expression "uVar20 = (uVar20 ^ 0x1f) + 0x20" (identifier "uVar20") (= "=") (binary_expression "(uVar20 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar20 ^ 0x1f)" (( "(") (binary_expression "uVar20 ^ 0x1f" (identifier "uVar20") (^ "^") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")) (else_clause "else {\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" (else "else") (compound_statement "{\n      uVar20 = 0x1f;\n      if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }\n      uVar20 = uVar20 ^ 0x1f;\n    }" ({ "{") (expression_statement "uVar20 = 0x1f;" (assignment_expression "uVar20 = 0x1f" (identifier "uVar20") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (uVar17 != 0) {\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" (if "if") (parenthesized_expression "(uVar17 != 0)" (( "(") (binary_expression "uVar17 != 0" (identifier "uVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }\n      }" ({ "{") (for_statement "for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {\n        }" (for "for") (( "(") (; ";") (binary_expression "uVar17 >> uVar20 == 0" (binary_expression "uVar17 >> uVar20" (identifier "uVar17") (>> ">>") (identifier "uVar20")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar20 = uVar20 - 1" (identifier "uVar20") (= "=") (binary_expression "uVar20 - 1" (identifier "uVar20") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar20 = uVar20 ^ 0x1f;" (assignment_expression "uVar20 = uVar20 ^ 0x1f" (identifier "uVar20") (= "=") (binary_expression "uVar20 ^ 0x1f" (identifier "uVar20") (^ "^") (number_literal "0x1f"))) (; ";")) (} "}")))) (expression_statement "uVar20 = 0x3c - uVar20;" (assignment_expression "uVar20 = 0x3c - uVar20" (identifier "uVar20") (= "=") (binary_expression "0x3c - uVar20" (number_literal "0x3c") (- "-") (identifier "uVar20"))) (; ";")) (expression_statement "bVar6 = (byte)uVar20 & 0x1f;" (assignment_expression "bVar6 = (byte)uVar20 & 0x1f" (identifier "bVar6") (= "=") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;" (assignment_expression "uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6" (identifier "uVar21") (= "=") (binary_expression "uVar19 >> bVar6 | uVar17 << 0x20 - bVar6" (binary_expression "uVar19 >> bVar6" (identifier "uVar19") (>> ">>") (identifier "bVar6")) (| "|") (binary_expression "uVar17 << 0x20 - bVar6" (identifier "uVar17") (<< "<<") (binary_expression "0x20 - bVar6" (number_literal "0x20") (- "-") (identifier "bVar6"))))) (; ";")) (if_statement "if ((uVar20 & 0x20) != 0) {\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }" (if "if") (parenthesized_expression "((uVar20 & 0x20) != 0)" (( "(") (binary_expression "(uVar20 & 0x20) != 0" (parenthesized_expression "(uVar20 & 0x20)" (( "(") (binary_expression "uVar20 & 0x20" (identifier "uVar20") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);\n    }" ({ "{") (expression_statement "uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);" (assignment_expression "uVar21 = uVar17 >> ((byte)uVar20 & 0x1f)" (identifier "uVar21") (= "=") (binary_expression "uVar17 >> ((byte)uVar20 & 0x1f)" (identifier "uVar17") (>> ">>") (parenthesized_expression "((byte)uVar20 & 0x1f)" (( "(") (binary_expression "(byte)uVar20 & 0x1f" (cast_expression "(byte)uVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar20")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "sVar10 = (short)uVar20 * 10 + 0x1e;" (assignment_expression "sVar10 = (short)uVar20 * 10 + 0x1e" (identifier "sVar10") (= "=") (binary_expression "(short)uVar20 * 10 + 0x1e" (binary_expression "(short)uVar20 * 10" (cast_expression "(short)uVar20" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar20")) (* "*") (number_literal "10")) (+ "+") (number_literal "0x1e"))) (; ";")) (} "}")))) (expression_statement "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);" (assignment_expression "sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" (identifier "sVar10") (= "=") (binary_expression "sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" (identifier "sVar10") (+ "+") (pointer_expression "*(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" (* "*") (cast_expression "(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x73693 + (uVar21 & 7) * 2)" (( "(") (binary_expression "unaff_EDI + 0x73693 + (uVar21 & 7) * 2" (binary_expression "unaff_EDI + 0x73693" (identifier "unaff_EDI") (+ "+") (number_literal "0x73693")) (+ "+") (binary_expression "(uVar21 & 7) * 2" (parenthesized_expression "(uVar21 & 7)" (( "(") (binary_expression "uVar21 & 7" (identifier "uVar21") (& "&") (number_literal "7")) () ")")) (* "*") (number_literal "2"))) () ")")))))) (; ";")) (labeled_statement "LAB_0003df5f:\n  *(short *)((int)puVar3 + 0x16) = sVar10;" (statement_identifier "LAB_0003df5f") (: ":") (expression_statement "*(short *)((int)puVar3 + 0x16) = sVar10;" (assignment_expression "*(short *)((int)puVar3 + 0x16) = sVar10" (pointer_expression "*(short *)((int)puVar3 + 0x16)" (* "*") (cast_expression "(short *)((int)puVar3 + 0x16)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar3 + 0x16)" (( "(") (binary_expression "(int)puVar3 + 0x16" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (+ "+") (number_literal "0x16")) () ")")))) (= "=") (identifier "sVar10")) (; ";"))) (expression_statement "uVar17 = puVar3[9] | 0x1000;" (assignment_expression "uVar17 = puVar3[9] | 0x1000" (identifier "uVar17") (= "=") (binary_expression "puVar3[9] | 0x1000" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (| "|") (number_literal "0x1000"))) (; ";")) (if_statement "if ((param_4[0xd] & 1) == 0) {\n    uVar17 = puVar3[9] & 0xffffefff;\n  }" (if "if") (parenthesized_expression "((param_4[0xd] & 1) == 0)" (( "(") (binary_expression "(param_4[0xd] & 1) == 0" (parenthesized_expression "(param_4[0xd] & 1)" (( "(") (binary_expression "param_4[0xd] & 1" (subscript_expression "param_4[0xd]" (identifier "param_4") ([ "[") (number_literal "0xd") (] "]")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar17 = puVar3[9] & 0xffffefff;\n  }" ({ "{") (expression_statement "uVar17 = puVar3[9] & 0xffffefff;" (assignment_expression "uVar17 = puVar3[9] & 0xffffefff" (identifier "uVar17") (= "=") (binary_expression "puVar3[9] & 0xffffefff" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (& "&") (number_literal "0xffffefff"))) (; ";")) (} "}"))) (expression_statement "puVar3[9] = uVar17;" (assignment_expression "puVar3[9] = uVar17" (subscript_expression "puVar3[9]" (identifier "puVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "iVar16 = FUN_0002fed0();" (assignment_expression "iVar16 = FUN_0002fed0()" (identifier "iVar16") (= "=") (call_expression "FUN_0002fed0()" (identifier "FUN_0002fed0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((char)puVar3[7] != '\0') {\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }" (if "if") (parenthesized_expression "((char)puVar3[7] != '\0')" (( "(") (binary_expression "(char)puVar3[7] != '\0'" (cast_expression "(char)puVar3[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    sqlite3_free(puVar3[8]);\n    *(undefined1 *)(puVar3 + 7) = 0;\n  }" ({ "{") (expression_statement "sqlite3_free(puVar3[8]);" (call_expression "sqlite3_free(puVar3[8])" (identifier "sqlite3_free") (argument_list "(puVar3[8])" (( "(") (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) () ")"))) (; ";")) (expression_statement "*(undefined1 *)(puVar3 + 7) = 0;" (assignment_expression "*(undefined1 *)(puVar3 + 7) = 0" (pointer_expression "*(undefined1 *)(puVar3 + 7)" (* "*") (cast_expression "(undefined1 *)(puVar3 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 7)" (( "(") (binary_expression "puVar3 + 7" (identifier "puVar3") (+ "+") (number_literal "7")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (return_statement "return iVar16;" (return "return") (identifier "iVar16") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */

int function_1
              (type_1 *pBuilder,type_2 mPrereq,type_2 mUsable,type_3 mExclude,
              type_4 *pIdxInfo,type_3 mNoOmit,int *pbIn)

{
  type_5 *puVar1;
  type_3 *puVar2;
  double var_19;
  type_6 lVar4;
  type_7 var_25;
  type_8 *pWVar6;
  type_9 *__s;
  type_10 *pTemplate;
  type_11 *pParse;
  type_12 *pSVar7;
  type_13 *var_9;
  type_14 uVar9;
  type_15 *pTVar10;
  type_16 *var_7;
  type_17 *psVar12;
  type_18 **var_16;
  type_19 *pcVar14;
  short sVar15;
  type_20 iVar16;
  short var_23;
  type_1 *pBuilder_00;
  int var_10;
  type_18 **var_15;
  type_18 *pWVar20;
  type_5 var_26;
  type_5 var_4;
  char *pcVar23;
  int var_17;
  type_14 extraout_ECX;
  type_21 LVar25;
  type_22 *var_3;
  type_5 var_24;
  type_5 var_2;
  int var_6;
  type_23 uVar29;
  type_24 in_stack_0000001a;
  int var_18;
  type_14 local_2c;
  int var_22;
  
  uVar29 = var_1();
  pBuilder_00 = (type_1 *)uVar29;
  pWVar6 = pBuilder_00->pWC;
  __s = ((type_4 *)mUsable)->aConstraintUsage;
  pTemplate = pBuilder_00->pNew;
  pParse = pBuilder_00->pWInfo->pParse;
  pSVar7 = pBuilder_00->pWInfo->pTabList;
  var_25 = pTemplate->iTab;
  var_4 = ((type_4 *)mUsable)->nConstraint;
  *_mExclude = 0;
  *(int *)&pTemplate->prereq = (int)((type_25)uVar29 >> 0x20);
  *(type_14 *)((int)&pTemplate->prereq + 4) = extraout_ECX;
  var_3 = ((type_4 *)mUsable)->aConstraint;
  if (0 < (int)var_4) {
    pWVar20 = pWVar6->a;
    var_2 = 0;
    do {
      while( true ) {
        var_10 = var_3->iTermOffset;
        var_3->usable = '\0';
        if (((~(type_5)mPrereq & *(type_5 *)((int)&pWVar20[var_10].prereqRight + 4)) != 0 ||
             (~(type_5)pBuilder & (type_5)pWVar20[var_10].prereqRight) != 0) ||
           ((pWVar20[var_10].eOperator & mPrereq._4_2_) != 0)) break;
        var_3->usable = '\x01';
        var_2 = var_2 + 1;
        var_3 = var_3 + 1;
        if (var_4 == var_2) goto LAB_0003dba8;
      }
      var_2 = var_2 + 1;
      var_3 = var_3 + 1;
    } while (var_4 != var_2);
  }
LAB_0003dba8:
  var_5(__s,0,var_4 << 3);
  var_19 = *(double *)(var_6 + 0x77777);
  ((type_4 *)mUsable)->idxStr = (char *)0x0;
  ((type_4 *)mUsable)->idxNum = 0;
  ((type_4 *)mUsable)->orderByConsumed = 0;
  ((type_4 *)mUsable)->estimatedCost = var_19;
  *(type_14 *)&((type_4 *)mUsable)->estimatedRows = 0x19;
  *(type_14 *)((int)&((type_4 *)mUsable)->estimatedRows + 4) = 0;
  ((type_4 *)mUsable)->idxFlags = 0;
  var_9 = pParse->db;
  uVar9 = *(type_14 *)((int)&pSVar7->a[var_25].colUsed + 4);
  pTVar10 = pSVar7->a[var_25].pTab;
  *(int *)&((type_4 *)mUsable)->colUsed = (int)pSVar7->a[var_25].colUsed;
  *(type_14 *)((int)&((type_4 *)mUsable)->colUsed + 4) = uVar9;
  var_7 = pTVar10->pVTable;
  while( true ) {
    if (var_7 == (type_16 *)0x0) {
                    /* WARNING: Does not return */
      pcVar14 = (type_19 *)var_8();
      (*pcVar14)();
    }
    if (var_9 == var_7->db) break;
    var_7 = var_7->pNext;
  }
  psVar12 = var_7->pVtab;
  var_10 = (*psVar12->pModule->xBestIndex)(psVar12,(type_4 *)mUsable);
  if ((var_10 != 0) && (var_10 != 0x13)) {
    if (var_10 == 7) {
      var_9 = pParse->db;
      var_4._0_1_ = var_9->temp_store;
      var_4._1_1_ = var_9->mallocFailed;
      var_4._2_1_ = var_9->bBenignMalloc;
      var_4._3_1_ = var_9->dfltLockMode;
      if ((var_4 & 0xffff00) == 0) {
        var_11(var_9);
      }
      var_12(psVar12->zErrMsg);
      psVar12->zErrMsg = (char *)0x0;
      return 7;
    }
    if (psVar12->zErrMsg != (char *)0x0) {
      var_13(pParse,(char *)(var_6 + 0x6c964),psVar12->zErrMsg);
      var_12(psVar12->zErrMsg);
      psVar12->zErrMsg = (char *)0x0;
      return var_10;
    }
    pcVar23 = var_14(var_10);
    var_13(pParse,(char *)(var_6 + 0x6c964),pcVar23);
    var_12(psVar12->zErrMsg);
    psVar12->zErrMsg = (char *)0x0;
LAB_0003e064:
    var_17 = 0;
    if (var_10 != 0x13) {
      var_17 = var_10;
    }
    return var_17;
  }
  var_12(psVar12->zErrMsg);
  psVar12->zErrMsg = (char *)0x0;
  if (var_10 != 0) goto LAB_0003e064;
  if ((int)var_4 < 1) {
    (pTemplate->u).btree.nDistinctCol = 0;
    pTemplate->nLTerm = 0;
  }
  else {
    var_16 = pTemplate->aLTerm;
    var_15 = var_16;
    do {
      *var_15 = (type_18 *)0x0;
      var_15 = var_15 + 1;
    } while (var_16 + var_4 != var_15);
    var_3 = ((type_4 *)mUsable)->aConstraint;
    (pTemplate->u).btree.nDistinctCol = 0;
    var_2 = 0;
    var_18 = -1;
    do {
      var_10 = __s[var_2].argvIndex + -1;
      if (-1 < var_10) {
        var_17 = var_3->iTermOffset;
        if (((((int)var_4 <= var_10) || (var_17 < 0)) || (pWVar6->nTerm <= var_17)) ||
           ((var_16[var_10] != (type_18 *)0x0 || (var_3->usable == '\0')))) goto LAB_0003dfb0;
        pWVar20 = pWVar6->a + var_17;
        *(type_5 *)&pTemplate->prereq = (type_5)pTemplate->prereq | (type_5)pWVar20->prereqRight;
        puVar1 = (type_5 *)((int)&pTemplate->prereq + 4);
        *puVar1 = *puVar1 | *(type_5 *)((int)&pWVar20->prereqRight + 4);
        var_16[var_10] = pWVar20;
        if (var_18 < var_10) {
          var_18 = var_10;
        }
        if (((__s[var_2].omit != '\0') && ((int)var_2 < 0x10)) &&
           ((mUsable._4_2_ >> (var_2 & 0x1f) & 1) == 0)) {
          puVar2 = &(pTemplate->u).btree.nDistinctCol;
          *puVar2 = *puVar2 | (ushort)(1 << ((type_7)var_10 & 0x1f));
        }
        if ((pWVar20->eOperator & 1) != 0) {
          ((type_4 *)mUsable)->orderByConsumed = 0;
          ((type_4 *)mUsable)->idxFlags =
               ((type_4 *)mUsable)->idxFlags & 0xfffffffe;
          *_mExclude = 1;
        }
      }
      var_2 = var_2 + 1;
      var_3 = var_3 + 1;
    } while (var_4 != var_2);
    pTemplate->nLTerm = (short)var_18 + 1;
    if (var_18 != -1) {
      if (*var_16 != (type_18 *)0x0) {
        var_10 = 0;
        do {
          var_10 = var_10 + 1;
          if (var_18 < var_10) goto LAB_0003de32;
        } while (var_16[var_10] != (type_18 *)0x0);
      }
LAB_0003dfb0:
      var_13(pParse,(char *)(var_6 + 0x6c937),(pSVar7->a[var_25].pTab)->zName);
      return 1;
    }
  }
LAB_0003de32:
  var_10 = ((type_4 *)mUsable)->orderByConsumed;
  (pTemplate->u).vtab.idxNum = ((type_4 *)mUsable)->idxNum;
  (pTemplate->u).vtab.needFree = (u8)((type_4 *)mUsable)->needToFreeIdxStr;
  ((type_4 *)mUsable)->needToFreeIdxStr = 0;
  (pTemplate->u).btree.pIndex = (type_26 *)((type_4 *)mUsable)->idxStr;
  iVar16 = '\0';
  if (var_10 != 0) {
    iVar16 = (type_20)((type_4 *)mUsable)->nOrderBy;
  }
  var_19 = ((type_4 *)mUsable)->estimatedCost;
  (pTemplate->u).vtab.isOrdered = iVar16;
  var_23 = 0;
  pTemplate->rSetup = 0;
  if (1.0 < var_19) {
    if ((double)*(float *)(var_6 + 0x7770b) < var_19) {
      var_23 = ((ushort)((type_25)var_19 >> 0x34) - 0x3fe) * 10;
    }
    else {
      if ((double)*(float *)(var_6 + 0x776d7) <= var_19) {
        lVar4 = (type_6)var_20(var_19 - (double)*(float *)(var_6 + 0x776d7));
        var_22 = (int)((type_25)lVar4 >> 0x20);
        local_2c = (type_14)lVar4;
        lVar4 = var_21(var_22 + -0x80000000,local_2c);
      }
      else {
        lVar4 = (type_6)var_20(var_19);
      }
      var_2 = (type_5)((type_25)lVar4 >> 0x20);
      var_4 = (type_5)lVar4;
      if ((var_2 == 0) && (var_4 < 8)) {
        var_23 = 0;
        if (var_4 < 2) goto LAB_0003df0c;
        sVar15 = 0x28;
        do {
          var_23 = sVar15;
          var_2 = (int)((type_25)lVar4 >> 0x20) << 1 | (type_5)lVar4 >> 0x1f;
          var_4 = (type_5)lVar4 * 2;
          lVar4 = var_21(var_2,var_4);
          if (var_2 != 0) break;
          sVar15 = var_23 + -10;
        } while (var_4 < 8);
        var_23 = var_23 + -0x14;
      }
      else {
        if (var_2 == 0) {
          var_24 = 0x1f;
          if (var_4 != 0) {
            for (; var_4 >> var_24 == 0; var_24 = var_24 - 1) {
            }
          }
          var_24 = (var_24 ^ 0x1f) + 0x20;
        }
        else {
          var_24 = 0x1f;
          if (var_2 != 0) {
            for (; var_2 >> var_24 == 0; var_24 = var_24 - 1) {
            }
          }
          var_24 = var_24 ^ 0x1f;
        }
        var_24 = 0x3c - var_24;
        var_25 = (type_7)var_24 & 0x1f;
        var_4 = var_4 >> var_25 | var_2 << 0x20 - var_25;
        if ((var_24 & 0x20) != 0) {
          var_4 = var_2 >> ((type_7)var_24 & 0x1f);
        }
        var_23 = (short)var_24 * 10 + 0x1e;
      }
      var_23 = var_23 + *(short *)(var_6 + 0x73693 + (var_4 & 7) * 2);
    }
  }
LAB_0003df0c:
  var_4 = *(type_5 *)((int)&((type_4 *)mUsable)->estimatedRows + 4);
  pTemplate->rRun = var_23;
  var_2 = (type_5)((type_4 *)mUsable)->estimatedRows;
  if ((var_4 == 0) && (var_2 < 8)) {
    LVar25 = 0;
    if (var_2 < 2) goto LAB_0003df5f;
    sVar15 = 0x28;
    do {
      var_23 = sVar15;
      var_26 = var_2 * 2;
      if ((int)var_2 < 0) break;
      var_2 = var_26;
      sVar15 = var_23 + -10;
    } while (var_26 < 8);
    var_23 = var_23 + -0x14;
  }
  else {
    if (var_4 == 0) {
      var_24 = 0x1f;
      if (var_2 != 0) {
        for (; var_2 >> var_24 == 0; var_24 = var_24 - 1) {
        }
      }
      var_24 = (var_24 ^ 0x1f) + 0x20;
    }
    else {
      var_24 = 0x1f;
      if (var_4 != 0) {
        for (; var_4 >> var_24 == 0; var_24 = var_24 - 1) {
        }
      }
      var_24 = var_24 ^ 0x1f;
    }
    var_24 = 0x3c - var_24;
    var_25 = (type_7)var_24 & 0x1f;
    var_26 = var_2 >> var_25 | var_4 << 0x20 - var_25;
    if ((var_24 & 0x20) != 0) {
      var_26 = var_4 >> ((type_7)var_24 & 0x1f);
    }
    var_23 = (short)var_24 * 10 + 0x1e;
  }
  LVar25 = var_23 + *(short *)(var_6 + 0x73693 + (var_26 & 7) * 2);
LAB_0003df5f:
  pTemplate->nOut = LVar25;
  var_4 = pTemplate->wsFlags | 0x1000;
  if ((((type_4 *)mUsable)->idxFlags & 1) == 0) {
    var_4 = pTemplate->wsFlags & 0xffffefff;
  }
  pTemplate->wsFlags = var_4;
  var_10 = var_27(pBuilder_00,pTemplate);
  if ((pTemplate->u).vtab.needFree != '\0') {
    var_12((pTemplate->u).btree.pIndex);
    (pTemplate->u).vtab.needFree = '\0';
  }
  return var_10;
}


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

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

{
  double dVar1;
  longlong lVar2;
  void *__s;
  uint *puVar3;
  int *piVar4;
  int iVar5;
  byte bVar6;
  code *pcVar7;
  short sVar8;
  undefined1 uVar9;
  short sVar10;
  int *piVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int *piVar15;
  int iVar16;
  uint uVar17;
  undefined4 uVar18;
  uint extraout_ECX;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  int unaff_EDI;
  undefined8 uVar22;
  int local_50;
  undefined4 local_2c;
  int iStack_28;
  
  uVar22 = FUN_000a94ff();
  piVar11 = (int *)uVar22;
  iVar16 = piVar11[1];
  __s = (void *)param_4[4];
  puVar3 = (uint *)piVar11[3];
  piVar4 = *(int **)*piVar11;
  iVar5 = ((undefined4 *)*piVar11)[1];
  uVar20 = puVar3[4];
  uVar17 = *param_4;
  *param_6 = 0;
  *puVar3 = (uint)((ulonglong)uVar22 >> 0x20);
  puVar3[1] = extraout_ECX;
  uVar19 = param_4[1];
  if (0 < (int)uVar17) {
    iVar14 = *(int *)(iVar16 + 0x14);
    uVar21 = 0;
    do {
      while( true ) {
        *(undefined1 *)(uVar19 + 5) = 0;
        iVar12 = *(int *)(uVar19 + 8) * 0x30 + iVar14;
        if (((~param_2 & *(uint *)(iVar12 + 0x24)) != 0 ||
             (~param_1 & *(uint *)(iVar12 + 0x20)) != 0) ||
           ((*(ushort *)(iVar12 + 0xc) & param_3) != 0)) break;
        *(undefined1 *)(uVar19 + 5) = 1;
        uVar21 = uVar21 + 1;
        uVar19 = uVar19 + 0xc;
        if (uVar17 == uVar21) goto LAB_0003dba8;
      }
      uVar21 = uVar21 + 1;
      uVar19 = uVar19 + 0xc;
    } while (uVar17 != uVar21);
  }
LAB_0003dba8:
  memset(__s,0,uVar17 << 3);
  uVar22 = *(undefined8 *)(unaff_EDI + 0x77777);
  param_4[6] = 0;
  param_4[5] = 0;
  iVar13 = (uint)(byte)uVar20 * 0x44 + iVar5;
  param_4[8] = 0;
  *(undefined8 *)(param_4 + 9) = uVar22;
  param_4[0xb] = 0x19;
  param_4[0xc] = 0;
  param_4[0xd] = 0;
  iVar14 = *piVar4;
  uVar19 = *(uint *)(iVar13 + 0x40);
  iVar12 = *(int *)(iVar13 + 0x18);
  param_4[0xe] = *(uint *)(iVar13 + 0x3c);
  param_4[0xf] = uVar19;
  piVar11 = *(int **)(iVar12 + 0x40);
  while( true ) {
    if (piVar11 == (int *)0x0) {
                    /* WARNING: Does not return */
      pcVar7 = (code *)invalidInstructionException();
      (*pcVar7)();
    }
    if (iVar14 == *piVar11) break;
    piVar11 = (int *)piVar11[6];
  }
  piVar11 = (int *)piVar11[2];
  iVar14 = (**(code **)(*piVar11 + 0xc))(piVar11,param_4);
  if ((iVar14 != 0) && (iVar14 != 0x13)) {
    if (iVar14 == 7) {
      if ((*(uint *)(*piVar4 + 0x4c) & 0xffff00) == 0) {
        FUN_0002e050();
      }
      sqlite3_free(piVar11[2]);
      piVar11[2] = 0;
      return 7;
    }
    if (piVar11[2] != 0) {
      FUN_0003c160(piVar4,unaff_EDI + 0x6c964,piVar11[2]);
      sqlite3_free(piVar11[2]);
      piVar11[2] = 0;
      return iVar14;
    }
    uVar18 = FUN_0002c4f0();
    FUN_0003c160(piVar4,unaff_EDI + 0x6c964,uVar18);
    sqlite3_free(piVar11[2]);
    piVar11[2] = 0;
LAB_0003e064:
    iVar16 = 0;
    if (iVar14 != 0x13) {
      iVar16 = iVar14;
    }
    return iVar16;
  }
  sqlite3_free(piVar11[2]);
  piVar11[2] = 0;
  if (iVar14 != 0) goto LAB_0003e064;
  if ((int)uVar17 < 1) {
    *(undefined2 *)((int)puVar3 + 0x1e) = 0;
    *(undefined2 *)(puVar3 + 10) = 0;
  }
  else {
    piVar11 = (int *)puVar3[0xc];
    piVar15 = piVar11;
    do {
      *piVar15 = 0;
      piVar15 = piVar15 + 1;
    } while (piVar11 + uVar17 != piVar15);
    uVar19 = param_4[1];
    *(undefined2 *)((int)puVar3 + 0x1e) = 0;
    uVar21 = 0;
    local_50 = -1;
    do {
      iVar14 = *(int *)((int)__s + uVar21 * 8) + -1;
      if (-1 < iVar14) {
        iVar12 = *(int *)(uVar19 + 8);
        if (((((int)uVar17 <= iVar14) || (iVar12 < 0)) || (*(int *)(iVar16 + 0xc) <= iVar12)) ||
           ((piVar11[iVar14] != 0 || (*(char *)(uVar19 + 5) == '\0')))) goto LAB_0003dfb0;
        iVar12 = iVar12 * 0x30 + *(int *)(iVar16 + 0x14);
        *puVar3 = *puVar3 | *(uint *)(iVar12 + 0x20);
        puVar3[1] = puVar3[1] | *(uint *)(iVar12 + 0x24);
        piVar11[iVar14] = iVar12;
        if (local_50 < iVar14) {
          local_50 = iVar14;
        }
        if (((*(char *)((int)__s + uVar21 * 8 + 4) != '\0') && ((int)uVar21 < 0x10)) &&
           ((param_5 >> (uVar21 & 0x1f) & 1) == 0)) {
          *(ushort *)((int)puVar3 + 0x1e) =
               *(ushort *)((int)puVar3 + 0x1e) | (ushort)(1 << ((byte)iVar14 & 0x1f));
        }
        if ((*(byte *)(iVar12 + 0xc) & 1) != 0) {
          param_4[8] = 0;
          param_4[0xd] = param_4[0xd] & 0xfffffffe;
          *param_6 = 1;
        }
      }
      uVar21 = uVar21 + 1;
      uVar19 = uVar19 + 0xc;
    } while (uVar17 != uVar21);
    *(short *)(puVar3 + 10) = (short)local_50 + 1;
    if (local_50 != -1) {
      if (*piVar11 != 0) {
        iVar16 = 0;
        do {
          iVar16 = iVar16 + 1;
          if (local_50 < iVar16) goto LAB_0003de32;
        } while (piVar11[iVar16] != 0);
      }
LAB_0003dfb0:
      FUN_0003c160(piVar4,unaff_EDI + 0x6c937,
                   **(undefined4 **)(iVar5 + 0x18 + (uint)(byte)uVar20 * 0x44));
      return 1;
    }
  }
LAB_0003de32:
  uVar17 = param_4[8];
  puVar3[6] = param_4[5];
  *(char *)(puVar3 + 7) = (char)param_4[7];
  param_4[7] = 0;
  puVar3[8] = param_4[6];
  uVar9 = 0;
  if (uVar17 != 0) {
    uVar9 = (undefined1)param_4[2];
  }
  dVar1 = *(double *)(param_4 + 9);
  *(undefined1 *)((int)puVar3 + 0x1d) = uVar9;
  sVar10 = 0;
  *(undefined2 *)((int)puVar3 + 0x12) = 0;
  if (1.0 < dVar1) {
    if ((double)*(float *)(&DAT_0007770b + unaff_EDI) < dVar1) {
      sVar10 = ((ushort)((ulonglong)dVar1 >> 0x34) - 0x3fe) * 10;
    }
    else {
      if ((double)*(float *)(&DAT_000776d7 + unaff_EDI) <= dVar1) {
        lVar2 = (longlong)ROUND(dVar1 - (double)*(float *)(&DAT_000776d7 + unaff_EDI));
        iStack_28 = (int)((ulonglong)lVar2 >> 0x20);
        local_2c = (undefined4)lVar2;
        lVar2 = CONCAT44(iStack_28 + -0x80000000,local_2c);
      }
      else {
        lVar2 = (longlong)ROUND(dVar1);
      }
      uVar19 = (uint)((ulonglong)lVar2 >> 0x20);
      uVar17 = (uint)lVar2;
      if ((uVar19 == 0) && (uVar17 < 8)) {
        sVar10 = 0;
        if (uVar17 < 2) goto LAB_0003df0c;
        sVar8 = 0x28;
        do {
          sVar10 = sVar8;
          uVar19 = (int)((ulonglong)lVar2 >> 0x20) << 1 | (uint)lVar2 >> 0x1f;
          uVar17 = (uint)lVar2 * 2;
          lVar2 = CONCAT44(uVar19,uVar17);
          if (uVar19 != 0) break;
          sVar8 = sVar10 + -10;
        } while (uVar17 < 8);
        sVar10 = sVar10 + -0x14;
      }
      else {
        if (uVar19 == 0) {
          uVar20 = 0x1f;
          if (uVar17 != 0) {
            for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {
            }
          }
          uVar20 = (uVar20 ^ 0x1f) + 0x20;
        }
        else {
          uVar20 = 0x1f;
          if (uVar19 != 0) {
            for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {
            }
          }
          uVar20 = uVar20 ^ 0x1f;
        }
        uVar20 = 0x3c - uVar20;
        bVar6 = (byte)uVar20 & 0x1f;
        uVar17 = uVar17 >> bVar6 | uVar19 << 0x20 - bVar6;
        if ((uVar20 & 0x20) != 0) {
          uVar17 = uVar19 >> ((byte)uVar20 & 0x1f);
        }
        sVar10 = (short)uVar20 * 10 + 0x1e;
      }
      sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar17 & 7) * 2);
    }
  }
LAB_0003df0c:
  uVar17 = param_4[0xc];
  *(short *)(puVar3 + 5) = sVar10;
  uVar19 = param_4[0xb];
  if ((uVar17 == 0) && (uVar19 < 8)) {
    sVar10 = 0;
    if (uVar19 < 2) goto LAB_0003df5f;
    sVar8 = 0x28;
    do {
      sVar10 = sVar8;
      uVar21 = uVar19 * 2;
      if ((int)uVar19 < 0) break;
      uVar19 = uVar21;
      sVar8 = sVar10 + -10;
    } while (uVar21 < 8);
    sVar10 = sVar10 + -0x14;
  }
  else {
    if (uVar17 == 0) {
      uVar20 = 0x1f;
      if (uVar19 != 0) {
        for (; uVar19 >> uVar20 == 0; uVar20 = uVar20 - 1) {
        }
      }
      uVar20 = (uVar20 ^ 0x1f) + 0x20;
    }
    else {
      uVar20 = 0x1f;
      if (uVar17 != 0) {
        for (; uVar17 >> uVar20 == 0; uVar20 = uVar20 - 1) {
        }
      }
      uVar20 = uVar20 ^ 0x1f;
    }
    uVar20 = 0x3c - uVar20;
    bVar6 = (byte)uVar20 & 0x1f;
    uVar21 = uVar19 >> bVar6 | uVar17 << 0x20 - bVar6;
    if ((uVar20 & 0x20) != 0) {
      uVar21 = uVar17 >> ((byte)uVar20 & 0x1f);
    }
    sVar10 = (short)uVar20 * 10 + 0x1e;
  }
  sVar10 = sVar10 + *(short *)(unaff_EDI + 0x73693 + (uVar21 & 7) * 2);
LAB_0003df5f:
  *(short *)((int)puVar3 + 0x16) = sVar10;
  uVar17 = puVar3[9] | 0x1000;
  if ((param_4[0xd] & 1) == 0) {
    uVar17 = puVar3[9] & 0xffffefff;
  }
  puVar3[9] = uVar17;
  iVar16 = FUN_0002fed0();
  if ((char)puVar3[7] != '\0') {
    sqlite3_free(puVar3[8]);
    *(undefined1 *)(puVar3 + 7) = 0;
  }
  return iVar16;
}

